Bug 991899 part 1 - Add unprefixed API for PointerLock. r=smaug

MozReview-Commit-ID: 3af2D9IWI1Q

--HG--
extra : source : 527777bea747fb8ab363960e41b0a1ddb26d7749
This commit is contained in:
Xidorn Quan 2016-07-28 17:15:21 +10:00
parent 97b4a5d8c7
commit b83b9e7406
10 changed files with 50 additions and 24 deletions

View File

@ -3298,7 +3298,7 @@ Element::RequestFullscreen(JSContext* aCx, JS::Handle<JS::Value> aOptions,
}
void
Element::MozRequestPointerLock()
Element::RequestPointerLock()
{
OwnerDoc()->RequestPointerLock(this);
}

View File

@ -751,7 +751,7 @@ public:
// aCx == nullptr is allowed only if aOptions.isNullOrUndefined()
void RequestFullscreen(JSContext* aCx, JS::Handle<JS::Value> aOptions,
ErrorResult& aError);
void MozRequestPointerLock();
void RequestPointerLock();
Attr* GetAttributeNode(const nsAString& aName);
already_AddRefed<Attr> SetAttributeNode(Attr& aNewAttr,
ErrorResult& aError);
@ -1848,7 +1848,7 @@ NS_IMETHOD MozRequestFullScreen(void) final override \
} \
NS_IMETHOD MozRequestPointerLock(void) final override \
{ \
Element::MozRequestPointerLock(); \
Element::RequestPointerLock(); \
return NS_OK; \
} \
using nsINode::QuerySelector; \

View File

@ -9383,7 +9383,7 @@ nsDocument::OnPageHide(bool aPersisted,
SetImagesNeedAnimating(false);
}
MozExitPointerLock();
ExitPointerLock();
// Now send out a PageHide event.
nsCOMPtr<EventTarget> target = aDispatchStartTarget;
@ -12220,7 +12220,7 @@ DispatchPointerLockChange(nsIDocument* aTarget)
RefPtr<AsyncEventDispatcher> asyncDispatcher =
new AsyncEventDispatcher(aTarget,
NS_LITERAL_STRING("mozpointerlockchange"),
NS_LITERAL_STRING("pointerlockchange"),
true,
false);
asyncDispatcher->PostDOMEvent();
@ -12235,7 +12235,7 @@ DispatchPointerLockError(nsIDocument* aTarget, const char* aMessage)
RefPtr<AsyncEventDispatcher> asyncDispatcher =
new AsyncEventDispatcher(aTarget,
NS_LITERAL_STRING("mozpointerlockerror"),
NS_LITERAL_STRING("pointerlockerror"),
true,
false);
asyncDispatcher->PostDOMEvent();
@ -12501,21 +12501,21 @@ nsIDocument::UnlockPointer(nsIDocument* aDoc)
NS_IMETHODIMP
nsDocument::MozExitPointerLock()
{
nsIDocument::MozExitPointerLock();
nsIDocument::ExitPointerLock();
return NS_OK;
}
NS_IMETHODIMP
nsDocument::GetMozPointerLockElement(nsIDOMElement** aPointerLockedElement)
{
Element* el = nsIDocument::GetMozPointerLockElement();
Element* el = nsIDocument::GetPointerLockElement();
nsCOMPtr<nsIDOMElement> retval = do_QueryInterface(el);
retval.forget(aPointerLockedElement);
return NS_OK;
}
Element*
nsIDocument::GetMozPointerLockElement()
nsIDocument::GetPointerLockElement()
{
nsCOMPtr<Element> pointerLockedElement =
do_QueryReferent(EventStateManager::sPointerLockedElement);

View File

@ -877,6 +877,8 @@ GK_ATOM(onpaste, "onpaste")
GK_ATOM(onpendingchange, "onpendingchange")
GK_ATOM(onpichange, "onpichange")
GK_ATOM(onpicture, "onpicture")
GK_ATOM(onpointerlockchange, "onpointerlockchange")
GK_ATOM(onpointerlockerror, "onpointerlockerror")
GK_ATOM(onpopuphidden, "onpopuphidden")
GK_ATOM(onpopuphiding, "onpopuphiding")
GK_ATOM(onpopupshowing, "onpopupshowing")
@ -996,6 +998,8 @@ GK_ATOM(placeholder, "placeholder")
GK_ATOM(plaintext, "plaintext")
GK_ATOM(playbackrate, "playbackrate")
GK_ATOM(pointSize, "point-size")
GK_ATOM(pointerlockchange, "pointerlockchange")
GK_ATOM(pointerlockerror, "pointerlockerror")
GK_ATOM(poly, "poly")
GK_ATOM(polygon, "polygon")
GK_ATOM(popup, "popup")

View File

@ -2604,8 +2604,8 @@ public:
return !!GetFullscreenElement();
}
void ExitFullscreen();
Element* GetMozPointerLockElement();
void MozExitPointerLock()
Element* GetPointerLockElement();
void ExitPointerLock()
{
UnlockPointer(this);
}

View File

@ -1153,6 +1153,10 @@ EventListenerManager::GetLegacyEventMessage(EventMessage aEventMessage) const
return eMozFullscreenChange;
case eFullscreenError:
return eMozFullscreenError;
case ePointerLockChange:
return eMozPointerLockChange;
case ePointerLockError:
return eMozPointerLockError;
default:
return aEventMessage;
}

View File

@ -323,10 +323,18 @@ EVENT(mozfullscreenerror,
EventNameType_HTML,
eBasicEventClass)
EVENT(mozpointerlockchange,
ePointerLockChange,
eMozPointerLockChange,
EventNameType_HTML,
eBasicEventClass)
EVENT(mozpointerlockerror,
eMozPointerLockError,
EventNameType_HTML,
eBasicEventClass)
EVENT(pointerlockchange,
ePointerLockChange,
EventNameType_HTML,
eBasicEventClass)
EVENT(pointerlockerror,
ePointerLockError,
EventNameType_HTML,
eBasicEventClass)

View File

@ -253,10 +253,19 @@ partial interface Document {
attribute EventHandler onfullscreenerror;
};
// http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html#extensions-to-the-document-interface
// https://w3c.github.io/pointerlock/#extensions-to-the-document-interface
// https://w3c.github.io/pointerlock/#extensions-to-the-documentorshadowroot-mixin
partial interface Document {
readonly attribute Element? mozPointerLockElement;
void mozExitPointerLock ();
readonly attribute Element? pointerLockElement;
[BinaryName="pointerLockElement"]
readonly attribute Element? mozPointerLockElement;
void exitPointerLock();
[BinaryName="exitPointerLock"]
void mozExitPointerLock();
// Event handlers
attribute EventHandler onpointerlockchange;
attribute EventHandler onpointerlockerror;
};
//http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-document-register

View File

@ -130,15 +130,6 @@ interface Element : Node {
// Mozilla extensions
/**
* Requests that this element be made the pointer-locked element, as per the DOM
* pointer lock api.
*
* @see <http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html>
*/
[UnsafeInPrerendering]
void mozRequestPointerLock();
// Obsolete methods.
Attr? getAttributeNode(DOMString name);
[Throws]
@ -274,3 +265,11 @@ partial interface Element {
[Throws, UnsafeInPrerendering, BinaryName="requestFullscreen"]
void mozRequestFullScreen(optional any options);
};
// https://w3c.github.io/pointerlock/#extensions-to-the-element-interface
partial interface Element {
[UnsafeInPrerendering]
void requestPointerLock();
[UnsafeInPrerendering, BinaryName="requestPointerLock"]
void mozRequestPointerLock();
};

View File

@ -388,6 +388,8 @@ NS_EVENT_MESSAGE(eTouchCancel)
// Pointerlock DOM API
NS_EVENT_MESSAGE(ePointerLockChange)
NS_EVENT_MESSAGE(ePointerLockError)
NS_EVENT_MESSAGE(eMozPointerLockChange)
NS_EVENT_MESSAGE(eMozPointerLockError)
// eWheel is the event message of DOM wheel event.
NS_EVENT_MESSAGE(eWheel)