haikuwebkit/LayoutTests/pointer-lock/mouse-event-delivery.html

149 lines
5.9 KiB
HTML
Raw Permalink Normal View History

Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
<!DOCTYPE HTML>
<html>
<head>
<script src="../http/tests/resources/js-test-pre.js"></script>
<script src="../http/tests/resources/pointer-lock/pointer-lock-test-harness.js"></script>
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
</head>
<body id="body">
<div>
<div id="target1"></div>
<div id="target2"></div>
</div>
<script>
description("Test mouse events are routed to lock target.")
window.jsTestIsAsync = true;
targetdiv1 = document.getElementById("target1");
targetdiv2 = document.getElementById("target2");
// Expect change event only for all transitions below.
expectedTargetToBeLockedString = "";
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
document.onpointerlockchange = function ()
{
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
testPassed("document.onpointerlockchange event received.");
shouldBe("document.pointerLockElement", expectedTargetToBeLockedString);
doNextStep();
};
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
document.onpointerlockerror =
function () { testFailed("document.onpointerlockerror event received."); finishJSTest(); };
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
function eventNotExpected(e) {
testFailed("Unexpected event " + e.type + " on " + e.currentTarget.id);
finishJSTest();
}
function eventExpected(e) {
testPassed("event type: " + e.type + ", target: " + e.target.id + ", received on: " + e.currentTarget.id);
}
Pointer lock events should be delivered directly to the target element https://bugs.webkit.org/show_bug.cgi?id=167134 rdar://problem/30268004 Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03 Reviewed by Dean Jackson. Source/WebCore: pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests. When pointer is locked on an element, route mouse events directly to the target element, instead of doing the normal event disptach. * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::handleMouseForceEvent): (WebCore::EventHandler::handleWheelEvent): * page/PointerLockController.cpp: (WebCore::PointerLockController::isLocked): Added. (WebCore::PointerLockController::dispatchLockedWheelEvent): Added. * page/PointerLockController.h: LayoutTests: The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer is over the web view and doesn't deliver events. The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the wheel event before continuing with the test. This prevents flakeyness with the order the events are received. Added code to test for wheel events. * platform/mac/TestExpectations: enabled test. * pointer-lock/mouse-event-delivery.html: * pointer-lock/mouse-event-delivery-expected.txt: Canonical link: https://commits.webkit.org/184853@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211650 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-02-03 21:56:43 +00:00
function eventExpectedThenNextStep(e) {
testPassed("event type: " + e.type + ", target: " + e.target.id + ", received on: " + e.currentTarget.id);
doNextStep();
}
function eventDeltaExpected(e) {
testPassed("event type: " + e.type + ", movementX: " + e.movementX + ", movementY: " + e.movementY + ", target: " + e.target.id + ", received on: " + e.currentTarget.id);
}
function eventDeltaExpectedThenNextStep(e) {
testPassed("event type: " + e.type + ", movementX: " + e.movementX + ", movementY: " + e.movementY + ", target: " + e.target.id + ", received on: " + e.currentTarget.id);
doNextStep();
}
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
todo = [
function () {
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
targetdiv1.requestPointerLock();
expectedTargetToBeLockedString = "targetdiv1";
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
// doNextStep() called by onpointerlockchange handler.
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
},
Pointer lock events should be delivered directly to the target element https://bugs.webkit.org/show_bug.cgi?id=167134 rdar://problem/30268004 Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03 Reviewed by Dean Jackson. Source/WebCore: pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests. When pointer is locked on an element, route mouse events directly to the target element, instead of doing the normal event disptach. * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::handleMouseForceEvent): (WebCore::EventHandler::handleWheelEvent): * page/PointerLockController.cpp: (WebCore::PointerLockController::isLocked): Added. (WebCore::PointerLockController::dispatchLockedWheelEvent): Added. * page/PointerLockController.h: LayoutTests: The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer is over the web view and doesn't deliver events. The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the wheel event before continuing with the test. This prevents flakeyness with the order the events are received. Added code to test for wheel events. * platform/mac/TestExpectations: enabled test. * pointer-lock/mouse-event-delivery.html: * pointer-lock/mouse-event-delivery-expected.txt: Canonical link: https://commits.webkit.org/184853@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211650 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-02-03 21:56:43 +00:00
function () {
debug(" With a lock in place send a wheel event.")
targetdiv1.onwheel = eventExpectedThenNextStep;
targetdiv2.onwheel = eventNotExpected;
document.body.onwheel = eventExpected;
if (window.eventSender) {
window.eventSender.mouseMoveTo(20,20);
window.eventSender.leapForward(1000);
window.eventSender.mouseScrollBy(0,10);
}
},
function () {
debug(" With a lock in place move the mouse.")
targetdiv1.onmousemove = eventDeltaExpectedThenNextStep;
targetdiv2.onmousemove = eventNotExpected;
document.body.onmousemove = eventDeltaExpected;
if (window.eventSender) {
window.eventSender.mouseMoveTo(45,50);
}
},
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
function () {
debug(" With a lock in place send a click.")
targetdiv1.onmousemove = null;
targetdiv2.onmousemove = null;
document.body.onmousemove = null;
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
targetdiv1.onmousedown = eventExpected;
targetdiv2.onmousedown = eventNotExpected;
document.body.onmousedown = eventExpected;
if (window.eventSender) {
window.eventSender.leapForward(1000);
window.eventSender.mouseDown();
window.eventSender.mouseUp();
}
doNextStepWithUserGesture();
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
},
function () {
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
targetdiv2.requestPointerLock();
expectedTargetToBeLockedString = "targetdiv2";
Remove webkit prefix from pointer lock tests. https://bugs.webkit.org/show_bug.cgi?id=134744 Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-08 Reviewed by Brady Eidson. * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: * http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html: * http/tests/pointer-lock/iframe-sandboxed.html: * http/tests/pointer-lock/pointerlockelement-different-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-different-origin.html: * http/tests/pointer-lock/pointerlockelement-same-origin-expected.txt: * http/tests/pointer-lock/pointerlockelement-same-origin.html: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents-expected.txt: * http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html: * http/tests/resources/pointer-lock/iframe-common.js: (document.onpointerlockchange): (document.onpointerlockerror): (document.onwebkitpointerlockchange): Deleted. (document.onwebkitpointerlockerror): Deleted. * http/tests/resources/pointer-lock/pointer-lock-test-harness.js: (expectOnlyChangeEvent): (expectOnlyErrorEvent): (expectNoEvents): * pointer-lock/bug90391-move-then-window-open-crash-expected.txt: * pointer-lock/bug90391-move-then-window-open-crash.html: * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/lock-element-not-in-dom-expected.txt: * pointer-lock/lock-element-not-in-dom.html: * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: * pointer-lock/locked-element-iframe-removed-from-dom.html: * pointer-lock/locked-element-removed-from-dom-expected.txt: * pointer-lock/locked-element-removed-from-dom.html: * pointer-lock/mouse-event-api-expected.txt: * pointer-lock/mouse-event-api.html: * pointer-lock/mouse-event-delivery-expected.txt: * pointer-lock/mouse-event-delivery.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-event-on-lock-lost-expected.txt: * pointer-lock/pointerlockchange-event-on-lock-lost.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlockelement-null-when-pending-expected.txt: * pointer-lock/pointerlockelement-null-when-pending.html: Remove webkit prefix on pointer lock functions and events. This should have been done in r170585. Canonical link: https://commits.webkit.org/152687@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170897 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-08 22:36:24 +00:00
// doNextStep() called by onpointerlockchange handler.
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
},
Pointer lock events should be delivered directly to the target element https://bugs.webkit.org/show_bug.cgi?id=167134 rdar://problem/30268004 Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03 Reviewed by Dean Jackson. Source/WebCore: pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests. When pointer is locked on an element, route mouse events directly to the target element, instead of doing the normal event disptach. * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::handleMouseForceEvent): (WebCore::EventHandler::handleWheelEvent): * page/PointerLockController.cpp: (WebCore::PointerLockController::isLocked): Added. (WebCore::PointerLockController::dispatchLockedWheelEvent): Added. * page/PointerLockController.h: LayoutTests: The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer is over the web view and doesn't deliver events. The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the wheel event before continuing with the test. This prevents flakeyness with the order the events are received. Added code to test for wheel events. * platform/mac/TestExpectations: enabled test. * pointer-lock/mouse-event-delivery.html: * pointer-lock/mouse-event-delivery-expected.txt: Canonical link: https://commits.webkit.org/184853@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211650 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-02-03 21:56:43 +00:00
function () {
debug(" With a lock in place send a wheel event.")
targetdiv1.onwheel = eventNotExpected;
targetdiv2.onwheel = eventExpectedThenNextStep;
Pointer lock events should be delivered directly to the target element https://bugs.webkit.org/show_bug.cgi?id=167134 rdar://problem/30268004 Patch by Jeremy Jones <jeremyj@apple.com> on 2017-02-03 Reviewed by Dean Jackson. Source/WebCore: pointer-lock/mouse-event-delivery.html: Enabled for mac, added wheel event tests. When pointer is locked on an element, route mouse events directly to the target element, instead of doing the normal event disptach. * page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::handleMouseForceEvent): (WebCore::EventHandler::handleWheelEvent): * page/PointerLockController.cpp: (WebCore::PointerLockController::isLocked): Added. (WebCore::PointerLockController::dispatchLockedWheelEvent): Added. * page/PointerLockController.h: LayoutTests: The pointer-lock/mouse-event-delivery.html test is modified to explicitly move the mouse pointer to a valid location before sending mouse actions. Without this, the test infrastructure doesn't know that the pointer is over the web view and doesn't deliver events. The pointer-lock/mouse-event-delivery.html is also modified to explicitly wait for the delivery of the wheel event before continuing with the test. This prevents flakeyness with the order the events are received. Added code to test for wheel events. * platform/mac/TestExpectations: enabled test. * pointer-lock/mouse-event-delivery.html: * pointer-lock/mouse-event-delivery-expected.txt: Canonical link: https://commits.webkit.org/184853@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211650 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-02-03 21:56:43 +00:00
document.body.onwheel = eventExpected;
if (window.eventSender) {
window.eventSender.leapForward(1000);
window.eventSender.mouseScrollBy(0,10);
}
},
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
function () {
debug(" With a lock in place send a click.")
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
targetdiv1.onmousedown = eventNotExpected;
targetdiv2.onmousedown = eventExpected;
document.body.onmousedown = eventExpected;
if (window.eventSender) {
window.eventSender.leapForward(1000);
window.eventSender.mouseDown();
window.eventSender.mouseUp();
}
doNextStepWithUserGesture();
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
},
function () {
debug(" Ensure double clicks work as expected, sending 4 clicks.")
targetdiv1.onmousedown = undefined;
document.body.onmousedown = undefined;
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
targetdiv2.onmousedown = eventExpected;
targetdiv2.onmouseup = eventExpected;
targetdiv2.onclick = eventExpected;
targetdiv2.ondblclick = eventExpected;
debug(" Creating a click and dblclick.");
if (window.eventSender) {
window.eventSender.leapForward(1000);
window.eventSender.mouseDown();
window.eventSender.mouseUp();
window.eventSender.mouseDown();
window.eventSender.mouseUp();
}
debug(" Ensuring no false dblclicks if we continue.");
if (window.eventSender) {
window.eventSender.mouseDown();
window.eventSender.mouseUp();
window.eventSender.mouseDown();
window.eventSender.mouseUp();
}
doNextStepWithUserGesture();
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
},
];
doNextStepWithUserGesture();
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
</script>
<script src="../http/tests/resources/js-test-post.js"></script>
Pointer Lock: Implement pointer interface https://bugs.webkit.org/show_bug.cgi?id=75762 Source/WebCore: Reviewed by Julien Chaffraix. Implement the navigator.pointer interface via a new PointerLockController class, as per http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html. The implementation is being made in steps, the feature is still behind compile-time and run-time flags, 'webkit' prefixed, and not yet enabled in any browser. (Chromium has a developer flag required.) Follow-up work will include handling DOM elements being removed, making all callbacks asynchronous, iframe permissions (similar to Full Screen), etc. PointerLockController maintains state of which Element is the current lock target and the success and failure callbacks. ChromeClient has methods added to expose the required state change requests. Tests: pointer-lock/lock-already-locked.html pointer-lock/lock-fail-responses.html pointer-lock/mouse-event-delivery.html pointer-lock/pointerlocklost-event.html * WebCore.gypi: * dom/EventNames.h: * page/ChromeClient.h: (WebCore::ChromeClient::requestPointerLock): (WebCore::ChromeClient::requestPointerUnlock): (WebCore::ChromeClient::isPointerLocked): * page/Navigator.cpp: (WebCore::Navigator::webkitPointer): * page/Page.cpp: (WebCore::Page::Page): * page/Page.h: (WebCore::Page::pointerLockController): * page/PointerLock.cpp: (WebCore::PointerLock::PointerLock): (WebCore::PointerLock::create): (WebCore::PointerLock::lock): (WebCore::PointerLock::unlock): (WebCore::PointerLock::isLocked): * page/PointerLock.h: (WebCore::PointerLock::create): * page/PointerLockController.cpp: Added. (WebCore::PointerLockController::PointerLockController): (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::isLocked): (WebCore::PointerLockController::didAcquirePointerLock): (WebCore::PointerLockController::didNotAcquirePointerLock): (WebCore::PointerLockController::didLosePointerLock): (WebCore::PointerLockController::dispatchLockedMouseEvent): * page/PointerLockController.h: Copied from Source/WebCore/page/PointerLock.h. Source/WebKit/chromium: Add calls to the PointerLockController added in this patch to WebCore. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::close): (WebKit::WebViewImpl::didAcquirePointerLock): (WebKit::WebViewImpl::didNotAcquirePointerLock): (WebKit::WebViewImpl::didLosePointerLock): (WebKit::WebViewImpl::pointerLockMouseEvent): LayoutTests: Reviewed by Julien Chaffraix. * pointer-lock/lock-already-locked-expected.txt: Added. * pointer-lock/lock-already-locked.html: Added. * pointer-lock/lock-fail-responses-expected.txt: Added. * pointer-lock/lock-fail-responses.html: Added. * pointer-lock/mouse-event-delivery-expected.txt: Added. * pointer-lock/mouse-event-delivery.html: Added. * pointer-lock/pointerlocklost-event-expected.txt: Added. * pointer-lock/pointerlocklost-event.html: Added. Canonical link: https://commits.webkit.org/94110@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-27 19:06:41 +00:00
</body>
</html>