| Index: Source/core/page/PointerLockController.cpp
|
| diff --git a/Source/core/page/PointerLockController.cpp b/Source/core/page/PointerLockController.cpp
|
| index ab377a3fa5e96367817a9c903a82dc660922ea24..257cfa9bfa718251494689f384a6688e0757af67 100644
|
| --- a/Source/core/page/PointerLockController.cpp
|
| +++ b/Source/core/page/PointerLockController.cpp
|
| @@ -49,6 +49,7 @@ PassOwnPtr<PointerLockController> PointerLockController::create(Page* page)
|
| void PointerLockController::requestPointerLock(Element* target)
|
| {
|
| if (!target || !target->inDocument() || m_documentOfRemovedElementWhileWaitingForUnlock) {
|
| + enqueueEvent(EventTypeNames::pointerlockerror, target);
|
| enqueueEvent(EventTypeNames::webkitpointerlockerror, target);
|
| return;
|
| }
|
| @@ -56,21 +57,25 @@ void PointerLockController::requestPointerLock(Element* target)
|
| if (target->document().isSandboxed(SandboxPointerLock)) {
|
| // FIXME: This message should be moved off the console once a solution to https://bugs.webkit.org/show_bug.cgi?id=103274 exists.
|
| target->document().addConsoleMessage(SecurityMessageSource, ErrorMessageLevel, "Blocked pointer lock on an element because the element's frame is sandboxed and the 'allow-pointer-lock' permission is not set.");
|
| + enqueueEvent(EventTypeNames::pointerlockerror, target);
|
| enqueueEvent(EventTypeNames::webkitpointerlockerror, target);
|
| return;
|
| }
|
|
|
| if (m_element) {
|
| if (m_element->document() != target->document()) {
|
| + enqueueEvent(EventTypeNames::pointerlockerror, target);
|
| enqueueEvent(EventTypeNames::webkitpointerlockerror, target);
|
| return;
|
| }
|
| + enqueueEvent(EventTypeNames::pointerlockchange, target);
|
| enqueueEvent(EventTypeNames::webkitpointerlockchange, target);
|
| m_element = target;
|
| } else if (m_page->chrome().client().requestPointerLock()) {
|
| m_lockPending = true;
|
| m_element = target;
|
| } else {
|
| + enqueueEvent(EventTypeNames::pointerlockerror, target);
|
| enqueueEvent(EventTypeNames::webkitpointerlockerror, target);
|
| }
|
| }
|
| @@ -111,18 +116,21 @@ Element* PointerLockController::element() const
|
|
|
| void PointerLockController::didAcquirePointerLock()
|
| {
|
| + enqueueEvent(EventTypeNames::pointerlockchange, m_element.get());
|
| enqueueEvent(EventTypeNames::webkitpointerlockchange, m_element.get());
|
| m_lockPending = false;
|
| }
|
|
|
| void PointerLockController::didNotAcquirePointerLock()
|
| {
|
| + enqueueEvent(EventTypeNames::pointerlockerror, m_element.get());
|
| enqueueEvent(EventTypeNames::webkitpointerlockerror, m_element.get());
|
| clearElement();
|
| }
|
|
|
| void PointerLockController::didLosePointerLock()
|
| {
|
| + enqueueEvent(EventTypeNames::pointerlockchange, m_element ? &m_element->document() : m_documentOfRemovedElementWhileWaitingForUnlock.get());
|
| enqueueEvent(EventTypeNames::webkitpointerlockchange, m_element ? &m_element->document() : m_documentOfRemovedElementWhileWaitingForUnlock.get());
|
| clearElement();
|
| m_documentOfRemovedElementWhileWaitingForUnlock = nullptr;
|
|
|