Index: LayoutTests/pointer-lock/locked-element-removed-from-dom-prefixed.html |
diff --git a/LayoutTests/pointer-lock/locked-element-removed-from-dom-prefixed.html b/LayoutTests/pointer-lock/locked-element-removed-from-dom-prefixed.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7003db92f0d9a3e7f0a36fb821a84fe603bedaf0 |
--- /dev/null |
+++ b/LayoutTests/pointer-lock/locked-element-removed-from-dom-prefixed.html |
@@ -0,0 +1,52 @@ |
+<!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 a locked element from a document 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"); |
+ expectOnlyErrorEvent("Remove targetDiv1's parent from iframe & immediately lock target2. (main document handler)"); |
+ expectOnlyChangeEvent("Remove targetDiv1's parent from iframe & immediately lock target2. (iframe handler)", targetIframe1.contentDocument); |
+ targetDiv1.parentElement.parentElement.removeChild(targetDiv1.parentElement); |
+ targetDiv2.webkitRequestPointerLock(); |
+ shouldBe("document.webkitPointerLockElement", "null"); |
+ shouldBe("targetDiv1.parentElement.parentElement", "null"); |
+ // doNextStep called by event handler. |
+ }, |
+ function () { |
+ // Absorb an extra doNextStep() from previous event handlers. |
+ }, |
+ ]; |
+ doNextStep(); |
+</script> |
+</body> |
+</html> |