| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body id="body"> |
| |
| <div class="hidden" id="div"> |
| |
| <div> |
| <textarea placeholder="hello" id="textarea">a</textarea> |
| text |
| </div> |
| |
| <input type="text" id="textfield"> |
| |
| </div> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| description("This tests that when an element is removed from the DOM while a notification referencing it is pending, it will not crash."); |
| |
| // Triggering this is quite complicated, because the ValueChange notification needs to be the one to trigger the layoutUpdate |
| // Sending the XMLHttpRequest after a timeout and then having a handler set the display: NONE, seems to do it. |
| function processStateChange() { |
| if (req.readyState == 4) { |
| document.getElementById("textarea").value = ""; |
| document.getElementById("div").style.display = "NONE"; |
| |
| // we now have to wait for the value change to be propagated to trigger the crash. |
| setTimeout(finishJSTest, 1); |
| } |
| } |
| </script> |
| |
| <script> |
| var req = 0; |
| if (window.accessibilityController) { |
| window.jsTestIsAsync = true; |
| |
| // Access the text area so that an accessibility element is created (so that it will send out notifications). |
| accessibilityController.accessibleElementById("textarea"); |
| |
| document.getElementById("textarea").focus(); |
| |
| req = new XMLHttpRequest; |
| req.onreadystatechange = processStateChange; |
| req.open("get", "../../http/tests/xmlhttprequest/methods.cgi", true); |
| // Sending this after a timeout makes is so that the layout does not happen until the value change is sent. |
| setTimeout("req.send('')", 1); |
| } else |
| debug("window.accessibilityController is not present"); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |