summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/accessibility/crashtests/aom-in-destroyed-iframe.html
blob: c8f0aca12ebbf8719228e0d857d8e5c799e3b669 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html class="test-wait">
<body></body>
<script>

// Bypass this abandoned syntax in all but the engines that implement it.
if (typeof getComputedAccessibleNode !== 'undefined') {

  const frameElem = document.createElement('iframe');

  frameElem.srcdoc = '<html><head><title>X</title></head><body><div>-</div></body></html>';
  frameElem.onload = function() {
    const frameDoc = frameElem.contentWindow.document;

    const divElem = frameDoc.querySelector('div');

    getComputedAccessibleNode(divElem).then(function(divAccessible) {
      // Close window.
      frameElem.remove();

      requestAnimationFrame(() => {
        // Window removed, but we try to access DOM of non-existent window.
        const isChecked = divAccessible.checked;
        // Test is complete.
        document.documentElement.className = '';
      });
    });
  };
  document.body.appendChild(frameElem);

} else {
  // Pass in other engines that have not implemented the abandoned API
  document.documentElement.className = '';
}
</script>
</html>