4 <script src="../resources/js-test.js"></script>
5 <script src="../http/tests/resources/pointer-lock/pointer-lock-test-harness-prefixed.js"></script>
9 <iframe id="iframe1"></iframe>
10 <div id="target2"></div>
13 description("Test removing an iframe containing a locked element causes lock to be released.")
14 window.jsTestIsAsync = true;
16 targetIframe1 = document.getElementById("iframe1");
17 targetDiv2 = document.getElementById("target2");
21 // Load a blank iframe.
22 targetIframe1.src = "about:blank";
23 targetIframe1.onload = function () { doNextStepWithUserGesture(); }
26 // Nest target element into iframe document.
27 targetIframe1.contentDocument.body.innerHTML ="<div><div></div></div>";
28 targetDiv1 = targetIframe1.contentDocument.body.firstChild.firstChild
29 expectNoEvents("Lock target in iframe. (main document handler)");
30 expectOnlyChangeEvent("Lock target in iframe. (iframe handler)", targetIframe1.contentDocument);
31 targetDiv1.webkitRequestPointerLock();
32 // doNextStep called by event handler.
35 shouldBe("targetIframe1.contentDocument.webkitPointerLockElement", "targetDiv1");
36 shouldBe("targetDiv1.parentElement.parentElement", "targetIframe1.contentDocument.body");
37 expectOnlyChangeEvent("Remove iframe & immediately lock target2. (main document handler)");
38 expectNoEvents("Remove iframe & immediately lock target2. (iframe handler)", targetIframe1.contentDocument);
39 targetIframe1.parentElement.removeChild(targetIframe1);
40 targetDiv2.webkitRequestPointerLock();
41 shouldBe("document.webkitPointerLockElement", "null");
42 // doNextStep called by event handler.