<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Live Region Event Test Case: Change text content</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: 10em;
      } 
    </style>  
  </head>
  <body>
    <h1>ARIA 1.0 Live Region Event Test Case: Change text content</h1>
    
    <div id="TEST_ID" aria-live="assertive">
      TEST TEXT 1
    </div>
    
    <button onclick="tryAgain()">Try Again</button>
    
    <h2>Description</h2>
    <p>An element with an aria-live attribute with the value "assertive" has a text content changed
    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::delete event followed by text_changed::insert event</dd>
      
      <dt>AXAPI</dt>
      <dd></dd>
      <dd>AXLiveRegionChanged notification</dd>
      
      <dt>MSAA + IAccessible2</dt>
      <dd>IAccessible2: IA2_EVENT_TEXT_REMOVED event followed by IA2_EVENT_TEXT_INSERTED event</dd>
      
      <dt>MSAA + UIA Express</dt>
      <dd>TextPattern..::.TextChangedEvent event followed by another TextPattern..::.TextChangedEvent event</dd>
      
    </dl>
    
    
    <script type="text/javascript">  

      function tryAgain() {
        changeText('TEST TEXT 1')
        onLoad();        
      }  

      function changeText(str) {
        var node = document.getElementById('TEST_ID');  
        while (node.firstChild) node.removeChild(node.firstChild);

        if (typeof str !== 'string') str = 'changed test text 2';
        addText(str)
      }  

      function addText (str) {
        var node = document.getElementById('TEST_ID');          
        var text_node = document.createTextNode(str);        
        node.appendChild(text_node);
      }  

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

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