-
scheib@chromium.org authored
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. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
32c154ad