Skip to content
  • scheib@chromium.org's avatar
    Pointer Lock handles disconnected DOM elements · fd0b8a9b
    scheib@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=77029
    
    Reviewed by Adrienne Walker.
    
    Source/WebCore:
    
    Pointer Lock Controller now checks when elements or documents are
    removed, and unlocks if the target element is being removed.
    
    Tests: pointer-lock/locked-element-iframe-removed-from-dom.html
           pointer-lock/locked-element-removed-from-dom.html
    
    * dom/Document.cpp:
    (WebCore::Document::detach):
    * dom/Element.cpp:
    (WebCore::Element::removedFrom):
    (WebCore::Element::webkitRequestPointerLock):
    * page/PointerLockController.cpp:
    (WebCore::PointerLockController::requestPointerLock):
    (WebCore::PointerLockController::elementRemoved):
    (WebCore):
    (WebCore::PointerLockController::documentDetached):
    (WebCore::PointerLockController::didLosePointerLock):
    (WebCore::PointerLockController::enqueueEvent):
    * page/PointerLockController.h:
    (WebCore):
    (PointerLockController):
    
    LayoutTests:
    
    Two new tests that verify pointer lock is released when the target
    is removed from the document.
    
    * pointer-lock/locked-element-iframe-removed-from-dom-expected.txt: Added.
    * pointer-lock/locked-element-iframe-removed-from-dom.html: Added.
    * pointer-lock/locked-element-removed-from-dom-expected.txt: Added.
    * pointer-lock/locked-element-removed-from-dom.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@122626 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    fd0b8a9b