Index: LayoutTests/pointer-lock/locked-element-iframe-removed-from-dom-prefixed.html |
diff --git a/LayoutTests/pointer-lock/locked-element-iframe-removed-from-dom-prefixed.html b/LayoutTests/pointer-lock/locked-element-iframe-removed-from-dom-prefixed.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0ede42e1977adc36030e0f52566b94838b2c598c |
--- /dev/null |
+++ b/LayoutTests/pointer-lock/locked-element-iframe-removed-from-dom-prefixed.html |
@@ -0,0 +1,48 @@ |
+<!DOCTYPE HTML> |
+<html> |
+<head> |
+<script src="../resources/js-test.js"></script> |
+<script src="../http/tests/resources/pointer-lock/pointer-lock-test-harness-prefixed.js"></script> |
+</head> |
+<body> |
+<div> |
+ <iframe id="iframe1"></iframe> |
+ <div id="target2"></div> |
+</div> |
+<script> |
+ description("Test removing an iframe containing a locked element causes lock to be released.") |
+ window.jsTestIsAsync = true; |
+ |
+ targetIframe1 = document.getElementById("iframe1"); |
+ targetDiv2 = document.getElementById("target2"); |
+ |
+ todo = [ |
+ function () { |
+ // Load a blank iframe. |
+ targetIframe1.src = "about:blank"; |
+ targetIframe1.onload = function () { doNextStepWithUserGesture(); } |
+ }, |
+ function () { |
+ // Nest target element into iframe document. |
+ targetIframe1.contentDocument.body.innerHTML ="<div><div></div></div>"; |
+ targetDiv1 = targetIframe1.contentDocument.body.firstChild.firstChild |
+ expectNoEvents("Lock target in iframe. (main document handler)"); |
+ expectOnlyChangeEvent("Lock target in iframe. (iframe handler)", targetIframe1.contentDocument); |
+ targetDiv1.webkitRequestPointerLock(); |
+ // doNextStep called by event handler. |
+ }, |
+ function () { |
+ shouldBe("targetIframe1.contentDocument.webkitPointerLockElement", "targetDiv1"); |
+ shouldBe("targetDiv1.parentElement.parentElement", "targetIframe1.contentDocument.body"); |
+ expectOnlyChangeEvent("Remove iframe & immediately lock target2. (main document handler)"); |
+ expectNoEvents("Remove iframe & immediately lock target2. (iframe handler)", targetIframe1.contentDocument); |
+ targetIframe1.parentElement.removeChild(targetIframe1); |
+ targetDiv2.webkitRequestPointerLock(); |
+ shouldBe("document.webkitPointerLockElement", "null"); |
+ // doNextStep called by event handler. |
+ }, |
+ ]; |
+ doNextStep(); |
+</script> |
+</body> |
+</html> |