<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Live Region Event Test Case: Add text content (ALERT role)</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css">
      div#TEST_ID {
        margin: 0.5em; 
        padding: 0.25em; 
        border: medium gray solid; 
        width: 20em;
      } 
    </style>  
  </head>
  <body>
    <h1>ARIA 1.0 Live Region Event Test Case: Add text content  (ALERT role)</h1>
    
    <div id="TEST_ID" role="alert" >
    </div>
    
    <button onclick="tryAgain()">Try Again</button>
    
    <h2>Description</h2>
    <p>An element with an role attribute with the value "alert" has a text content added
    1.5 seconds after the document is loaded.</p>
    
    <h2>Expected Results</h2>
    
    <dl>
      <dt>ATK/AT-SPI</dt>
      <dd>ATK/AT-SPIevent: text_changed::insert event</dd>
      
      <dt>AXAPI</dt>
      <dd>AXLiveRegionChanged notification</dd>
      
      <dt>MSAA + IAccessible2</dt>
      <dd>IAccessible2: IA2_EVENT_TEXT_INSERTED event</dd>
      
      <dt>MSAA + UIA Express</dt>
      <dd>TextPattern..::.TextChangedEvent event</dd>
      
    </dl>
    
    
    <script type="text/javascript">  

      function tryAgain() {
        var node = document.getElementById('TEST_ID');  
        
        while (node.firstChild) node.removeChild(node.firstChild);
        
        onLoad();
        
      }  

      function addText () {
        var node = document.getElementById('TEST_ID');  
        
        var text_node = document.createTextNode('ALERT ROLE TEST TEXT ADDED');
        
        node.appendChild(text_node);
      }  

      function onLoad() {
      
        setTimeout(addText,1500);
       
      }

      window.addEventListener('load', onLoad);
    </script>
  </body>
  
</html>
