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:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@120031 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/page/PointerLockController.cpp b/Source/WebCore/page/PointerLockController.cpp
index 0bce134..55e46d4 100644
--- a/Source/WebCore/page/PointerLockController.cpp
+++ b/Source/WebCore/page/PointerLockController.cpp
@@ -91,6 +91,11 @@
     return m_page->chrome()->client()->isPointerLocked();
 }
 
+Element* PointerLockController::element() const
+{
+    return m_element.get();
+}
+
 void PointerLockController::didAcquirePointerLock()
 {
     // FIXME: Keep enqueueEvent usage. (https://bugs.webkit.org/show_bug.cgi?id=84402)