Index: third_party/WebKit/Source/core/page/PointerLockController.cpp |
diff --git a/third_party/WebKit/Source/core/page/PointerLockController.cpp b/third_party/WebKit/Source/core/page/PointerLockController.cpp |
index c5b6dbc000daa59ffe0b585c38c5c97a1250881b..72ee211b26cb4822e86bb9dcc944cb7bd0592bc0 100644 |
--- a/third_party/WebKit/Source/core/page/PointerLockController.cpp |
+++ b/third_party/WebKit/Source/core/page/PointerLockController.cpp |
@@ -68,7 +68,7 @@ void PointerLockController::requestPointerLock(Element* target) |
} |
enqueueEvent(EventTypeNames::pointerlockchange, target); |
m_element = target; |
- } else if (m_page->chromeClient().requestPointerLock()) { |
+ } else if (m_page->chromeClient().requestPointerLock(target->document().frame())) { |
m_lockPending = true; |
m_element = target; |
} else { |
@@ -78,25 +78,25 @@ void PointerLockController::requestPointerLock(Element* target) |
void PointerLockController::requestPointerUnlock() |
{ |
- return m_page->chromeClient().requestPointerUnlock(); |
+ return m_page->chromeClient().requestPointerUnlock(m_element->document().frame()); |
} |
void PointerLockController::elementRemoved(Element* element) |
{ |
if (m_element == element) { |
m_documentOfRemovedElementWhileWaitingForUnlock = &m_element->document(); |
+ requestPointerUnlock(); |
// Set element null immediately to block any future interaction with it |
// including mouse events received before the unlock completes. |
clearElement(); |
- requestPointerUnlock(); |
} |
} |
void PointerLockController::documentDetached(Document* document) |
{ |
if (m_element && m_element->document() == document) { |
- clearElement(); |
requestPointerUnlock(); |
+ clearElement(); |
} |
} |