Changeset 124301 in webkit
- Timestamp:
- Jul 31, 2012, 10:10:30 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 7 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt (added)
-
LayoutTests/http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html (added)
-
LayoutTests/http/tests/resources/pointer-lock/iframe-common.js (modified) (1 diff)
-
LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt (modified) (1 diff)
-
LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events.html (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/dom/Document.cpp (modified) (1 diff)
-
Source/WebCore/page/PointerLockController.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r124300 r124301 1 2012-07-31 Vincent Scheib <scheib@chromium.org> 2 3 webkitRequestPointerLock and webkitExitPointerLock limited to the same document of an active Pointer lock. 4 https://bugs.webkit.org/show_bug.cgi?id=91284 5 6 Reviewed by Adrienne Walker. 7 8 Previously, cross-talk between documents was possible, e.g. allowing one 9 document.webkitExitPointerLock to exit the lock from another document. 10 This change brings Pointer Lock closer to the Fullscreen API behavior, 11 and stops the pointer lock target from being transferable between 12 documents. 13 14 * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: Added. 15 * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: Added. 16 * http/tests/resources/pointer-lock/iframe-common.js: 17 (document.onwebkitpointerlockchange): 18 (document.onwebkitpointerlockerror): 19 * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: 20 * pointer-lock/pointerlockchange-pointerlockerror-events.html: 21 1 22 2012-07-31 Ami Fischman <fischman@chromium.org> 2 23 -
trunk/LayoutTests/http/tests/resources/pointer-lock/iframe-common.js
r123343 r124301 12 12 } 13 13 14 document.onwebkitpointerlockchange = function () { 15 parent.postMessage(thisFileName() + " onwebkitpointerlockchange, document.webkitPointerLockElement = " + document.webkitPointerLockElement, "*"); 16 } 17 18 document.onwebkitpointerlockerror = function () { 19 parent.postMessage(thisFileName() + " onwebkitpointerlockerror", "*"); 20 } -
trunk/LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt
r122158 r124301 15 15 Lock targetDiv2 again. 16 16 PASS onwebkitpointerlockchange received after: Lock targetDiv2 again. 17 Unlock targetDiv2. 18 PASS onwebkitpointerlockchange received after: Unlock targetDiv2. 17 19 Lock targetIframe1. 18 20 Lock targetIframe1 (handler for iframe1). 19 21 PASS onwebkitpointerlockchange received after: Lock targetIframe1 (handler for iframe1). 20 PASS onwebkitpointerlockchange received after: Lock targetIframe1.21 22 Lock targetIframe2. 22 23 Lock targetIframe2 (handler for iframe1). 23 24 Lock targetIframe2 (handler for iframe2). 24 PASS onwebkitpointerlockchange received after: Lock targetIframe2 (handler for iframe2). 25 PASS onwebkitpointerlockchange received after: Lock targetIframe2 (handler for iframe1). 25 PASS onwebkitpointerlockerror received after: Lock targetIframe2 (handler for iframe2). 26 26 Unlock targetIframe2. 27 27 Unlock targetIframe2 (handler for iframe1). 28 28 Unlock targetIframe2 (handler for iframe2). 29 PASS onwebkitpointerlockchange received after: Unlock targetIframe2 (handler for iframe 2).29 PASS onwebkitpointerlockchange received after: Unlock targetIframe2 (handler for iframe1). 30 30 PASS testRunner.setPointerLockWillFailSynchronously is defined. 31 31 Lock with synchronous failure. -
trunk/LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events.html
r123247 r124301 48 48 }, 49 49 function () { 50 expectOnlyChangeEvent("Unlock targetDiv2."); 51 document.webkitExitPointerLock(); 52 }, 53 function () { 50 54 targetIframe1.src = "about:blank"; 51 55 targetIframe1.onload = function () { doNextStep(); } … … 56 60 }, 57 61 function () { 58 expect OnlyChangeEvent("Lock targetIframe1.");62 expectNoEvents("Lock targetIframe1."); 59 63 expectOnlyChangeEvent("Lock targetIframe1 (handler for iframe1).", targetIframe1.contentDocument); 60 64 targetIframe1.contentDocument.body.webkitRequestPointerLock(); 61 65 }, 62 66 function () { 63 // Absorb an extra doNextStep() from previous event handlers.64 },65 function () {66 67 expectNoEvents("Lock targetIframe2."); 67 expect OnlyChangeEvent("Lock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument);68 expectOnly ChangeEvent("Lock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument);68 expectNoEvents("Lock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument); 69 expectOnlyErrorEvent("Lock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument); 69 70 targetIframe2.contentDocument.body.webkitRequestPointerLock(); 70 71 }, 71 72 function () { 72 // Absorb an extra doNextStep() from previous event handlers.73 },74 function () {75 73 expectNoEvents("Unlock targetIframe2."); 76 expect NoEvents("Unlock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument);77 expect OnlyChangeEvent("Unlock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument);78 document.webkitExitPointerLock();74 expectOnlyChangeEvent("Unlock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument); 75 expectNoEvents("Unlock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument); 76 targetIframe1.contentDocument.webkitExitPointerLock(); 79 77 }, 80 78 function () { -
trunk/Source/WebCore/ChangeLog
r124299 r124301 1 2012-07-31 Vincent Scheib <scheib@chromium.org> 2 3 webkitRequestPointerLock and webkitExitPointerLock limited to the same document of an active Pointer lock. 4 https://bugs.webkit.org/show_bug.cgi?id=91284 5 6 Reviewed by Adrienne Walker. 7 8 Previously, cross-talk between documents was possible, e.g. allowing one 9 document.webkitExitPointerLock to exit the lock from another document. 10 This change brings Pointer Lock closer to the Fullscreen API behavior, 11 and stops the pointer lock target from being transferable between 12 documents. 13 14 Test: http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html 15 16 * dom/Document.cpp: 17 (WebCore::Document::webkitExitPointerLock): 18 * page/PointerLockController.cpp: 19 (WebCore::PointerLockController::requestPointerLock): 20 1 21 2012-07-31 Keishi Hattori <keishi@webkit.org> 2 22 -
trunk/Source/WebCore/dom/Document.cpp
r123827 r124301 5830 5830 void Document::webkitExitPointerLock() 5831 5831 { 5832 if (page()) 5833 page()->pointerLockController()->requestPointerUnlock(); 5832 if (!page()) 5833 return; 5834 if (Element* target = page()->pointerLockController()->element()) { 5835 if (target->document() != this) 5836 return; 5837 } 5838 page()->pointerLockController()->requestPointerUnlock(); 5834 5839 } 5835 5840 -
trunk/Source/WebCore/page/PointerLockController.cpp
r122626 r124301 55 55 56 56 if (m_element) { 57 if (m_element->document() != target->document()) { 58 enqueueEvent(eventNames().webkitpointerlockerrorEvent, target); 59 return; 60 } 61 57 62 // FIXME: Keep enqueueEvent usage. (https://bugs.webkit.org/show_bug.cgi?id=84402) 58 63 enqueueEvent(eventNames().webkitpointerlockchangeEvent, target);
Note:
See TracChangeset
for help on using the changeset viewer.