W3C home > Mailing lists > Public > public-webapps@w3.org > October to December 2011

Re: [Pointer Lock] Few comments

From: Olli Pettay <Olli.Pettay@helsinki.fi>
Date: Fri, 16 Dec 2011 01:49:19 +0200
Message-ID: <4EEA877F.6040302@helsinki.fi>
To: Darin Fisher <darin@chromium.org>
CC: Vincent Scheib <scheib@google.com>, Webapps WG <public-webapps@w3.org>
On 12/16/2011 01:04 AM, Darin Fisher wrote:
>
>
> On Thu, Dec 15, 2011 at 1:39 PM, Olli Pettay <Olli.Pettay@helsinki.fi
> <mailto:Olli.Pettay@helsinki.fi>> wrote:
>
>     On 12/15/2011 11:27 PM, Vincent Scheib wrote:
>
>
>
>         On Thu, Dec 15, 2011 at 6:16 AM, Olli Pettay
>         <Olli.Pettay@helsinki.fi <mailto:Olli.Pettay@helsinki.fi>
>         <mailto:Olli.Pettay@helsinki.__fi
>         <mailto:Olli.Pettay@helsinki.fi>>> wrote:
>
>             Hi all,
>
>             few comments about the API
>
>             (1)
>             currently
>         http://dvcs.w3.org/hg/____webevents/raw-file/default/____mouse-lock.html
>         <http://dvcs.w3.org/hg/__webevents/raw-file/default/__mouse-lock.html>
>
>         <http://dvcs.w3.org/hg/__webevents/raw-file/default/__mouse-lock.html
>         <http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html>>
>             uses VoidCallback which isn't defined anywhere.
>
>             I guess there should be something like
>
>             void lock (in Element target,
>                        optional in LockSuccessCallback successCallback,
>                        optional in LockErrorCallback failureCallback);
>
>
>             [Callback,NoInterfaceObject]
>             interface LockSuccessCallback {
>               void pointerLockSuccess();
>             };
>
>             [Callback,NoInterfaceObject]
>             interface LockErrorCallback {
>               void pointerLockFailure();
>             };
>
>             Or if the new proposed callback syntax is used:
>             callback LockSuccessCallback = void pointerLockSuccess();
>             callback LockErrorCallback = void pointerLockFailure();
>
>
>         I used the concept of VoidCallback from other implemented specs. Are
>         there any issues with it other than that the spec should define
>         VoidCallback? e.g.
>         http://www.w3.org/TR/file-__system-api/#the-voidcallback-__interface
>         <http://www.w3.org/TR/file-system-api/#the-voidcallback-interface>
>         http://www.w3.org/TR/2009/WD-__DataCache-20091029/#__VoidCallback <http://www.w3.org/TR/2009/WD-DataCache-20091029/#VoidCallback>
>
>
>     well, in those specs VoidCallback is FunctionOnly= which it probably
>     shouldn't be.
>     But there is ongoing discussion about removing FunctionOnly= from
>     WebIDL
>
>
>
>
>
>             (2)
>         "If another element is locked a user agent must transfer the mouse
>             lock to the new target and call the pointerlocklost callback
>         for the
>             previous target."
>             There is no such thing as 'pointerlocklost callback'
>
>
>         Spec typo, it should read "pointerlocklost event".
>
>
>     dispatch pointerlocklost event...
>
>
>
>
>
>             (3)
>         "Mouse lock must succeed only if the window is in focus and the
>             user-agent is the active application of the operating system"
>             What window? window object as in web page? Or OS level window?
>             What if lock is called in some iframe?
>
>
>         The intent is the user-agent window and tab (if tabbed UA).
>         Other than
>         UA security considerations, I propose there be no difference between
>         lock calls from a top level document or an iframe. Suggestions
>         welcome
>         for a way to make this more clear than rewriting to be, "... succeed
>         only if the user-agent window (and tab, if a tabbed browser) is
>         in focus
>         ..."
>
>
>     I'm just worried about iframes being able to lock mouse.
>     But perhaps that should be allowed only if the iframe is in
>     the same domain as the top level document.
>
>
> The fullscreen API requires that the IFRAME tag have an
> "allowfullscreen" attribute:
> http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#security-and-privacy-considerations

The spec is quite vague, but yes, something similar could work.

I wonder if we're going to have more this kinds of features. If so, 
perhaps the attribute should be changed.
Something like
allow="fullscreen pointerlock"



>
> Perhaps a similar approach would work for pointer lock?
>
> -Darin
>
>
>
>
>
>             (4)
>         "If the target is removed from the DOM tree after mouse lock is
>             entered then mouse lock will be lost."
>             Should 'pointerlocklost' event be dispatched?
>
>
>         I'm not yet certain about the implementation practicalities, and
>         need to
>         research more, but is seems we have these options:
>         a- don't send the event
>
>     A bit strange
>
>
>
>         b- send to the element after it has been detached
>
>     I would assume this. At least it would be consistent.
>
>
>
>         c- send to the nearest ancestor of the element that remains in
>         the tree
>
>     Or perhaps send to the document. Should pointerlocklost always be
>     dispatched to the document? If really needed, the event could have
>     property .unlockedElement or some such.
>
>
>
>         d- send to the element before it is detached
>
>     this is not possible. Well, possible, but would bring in all the
>     problems there are with mutation events
>
>
>     -Olli
>
>
>
Received on Thursday, 15 December 2011 23:49:54 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:49 GMT