haikuwebkit/LayoutTests/pointer-lock/pointer-lock-api.html

20 lines
579 B
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>
</head>
<body>
<script>
Add new Pointer Lock spec attribute webkitPointerLockElement. https://bugs.webkit.org/show_bug.cgi?id=88799 Source/WebCore: Reviewed by Dimitri Glazkov. Part of a series of refactoring changes to update pointer lock API to the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402 New attribute webkitPointerLockElement added. Follow up patches will remove the previous isLocked attribute. Tests updated to use the new attribute. * bindings/generic/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::webkitPointerLockElementEnabled): * dom/Document.cpp: (WebCore): (WebCore::Document::webkitPointerLockElement): * dom/Document.h: (Document): * dom/Document.idl: * page/PointerLockController.h: (WebCore::PointerLockController::element): Tools: Reviewed by Dimitri Glazkov. Part of a series of refactoring changes to update pointer lock API to the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402 New attribute webkitPointerLockElement added. Follow up patches will remove the previous isLocked attribute. Tests updated to use the new attribute. WebViewHost logic required modification to correctly repond to a lock, unlock, pointerLockElement call series. Specifically, unlocking must be queued after a lock command is issued always as the lock state may not be set yet with a lock request in flight. * DumpRenderTree/chromium/WebViewHost.cpp: (WebViewHost::requestPointerUnlock): Always post didLosePointerLock task. (WebViewHost::didLosePointerLock): Signal didLosePointerLock only if pointer was locked. LayoutTests: Part of a series of refactoring changes to update pointer lock API to the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402 New attribute webkitPointerLockElement added. Follow up patches will remove the previous isLocked attribute. Tests updated to use the new attribute. Reviewed by Dimitri Glazkov. * pointer-lock/lock-already-locked-expected.txt: * pointer-lock/lock-already-locked.html: * pointer-lock/pointer-lock-api-expected.txt: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlocklost-event-expected.txt: * pointer-lock/pointerlocklost-event.html: Canonical link: https://commits.webkit.org/106664@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@120031 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-06-12 03:02:16 +00:00
description("Basic API existence test for Pointer Lock.")
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
shouldBeDefined("document.onpointerlockchange");
shouldBeDefined("document.onpointerlockerror");
shouldBeDefined("document.exitPointerLock");
shouldEvaluateTo("document.pointerLockElement", null);
Remove runtime toggle for pointer-lock https://bugs.webkit.org/show_bug.cgi?id=165577 <rdar://problems/29566996> Reviewed by Jon Lee. Source/WebCore: Remove any runtime calls to check if pointer-lock is enabled. It's either compiled in or out. Covered by existing tests. * bindings/generic/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::setPointerLockEnabled): Deleted. (WebCore::RuntimeEnabledFeatures::pointerLockEnabled): Deleted. * dom/Document.idl: * dom/Element.idl: * page/Page.h: * page/PointerLockController.cpp: (WebCore::PointerLockController::requestPointerLock): (WebCore::PointerLockController::requestPointerUnlock): (WebCore::PointerLockController::requestPointerUnlockAndForceCursorVisible): Source/WebKit/mac: Remove any runtime calls to check if pointer-lock is enabled. It's either compiled in or out. * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (-[WebPreferences pointerLockEnabled]): Deleted. (-[WebPreferences setPointerLockEnabled:]): Deleted. * WebView/WebPreferencesPrivate.h: * WebView/WebView.mm: (-[WebView _preferencesChanged:]): Source/WebKit2: Remove any runtime calls to check if pointer-lock is enabled. It's either compiled in or out. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetPointerLockEnabled): Deleted. (WKPreferencesGetPointerLockEnabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Tools: Remove any runtime calls to check if pointer-lock is enabled. It's either compiled in or out. * DumpRenderTree/mac/DumpRenderTree.mm: (resetWebPreferencesToConsistentValues): * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetPreferencesToConsistentValues): Websites/webkit.org: No need to have pointer-lock tested. * experimental-features.html: Also sort the list alphabetically. LayoutTests: Remove any runtime calls to check if pointer-lock is enabled. It's either compiled in or out. * platform/mac/TestExpectations: Enable the pointer-lock tests that should work. * pointer-lock/pointer-lock-api.html: Fix a bad DOM call. * pointer-lock/pointerlock-interface-disabled-expected.txt: Removed. * pointer-lock/pointerlock-interface-disabled.html: Removed. Canonical link: https://commits.webkit.org/183176@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209514 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-12-08 02:53:41 +00:00
element = document.createElement("div");
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
shouldBeDefined("element.requestPointerLock");
</script>
<script src="../http/tests/resources/js-test-post.js"></script>
</body>
</html>