Re: Capture semantics for a node that moves between documents

Ahh, I missed that - thanks.  So I suppose an app could address the use
case here by listening for lostpointercapture, detecting that the node is
now in a new document, and as a result re-requesting capture.  I worry a
little about accidental endless capture flip-flopping due to multiple
components fighting over attempting to regain capture.  But I agree the
spec covers this, we can table this unless specific usage issues come up in
practice.

Thanks!

Rick

On Tue, May 5, 2015 at 10:20 AM, Scott González <scott.gonzalez@gmail.com>
wrote:

> For capture specifically, I think the spec is already clear. Moving an
> element between documents requires two steps: 1) removing the element from
> one document; 2) adding the element to another document. Section 10.3.1
> Implicit Release of Pointer Capture says that the element loses capture as
> soon as it's removed from its owner document.
>
> On Thu, Apr 30, 2015 at 3:43 PM, Rick Byers <rbyers@chromium.org> wrote:
>
>> Should the spec say something about how capture behaves on a node that
>> moves between document?
>>
>> I came across a bug I filed for a real-world issue I saw here with touch
>> events (details below), and it's not clear to me if pointer events and the
>> explicit capture API make this any better.
>>
>> Rick
>>
>> ---------- Forwarded message ----------
>> From: Rick Byers <rbyers@chromium.org>
>> Date: Wed, Jul 16, 2014 at 10:55 AM
>> Subject: Touch semantics when touched node changes documents (eg. polymer
>> templates)
>> To: "public-touchevents@w3.org" <public-touchevents@w3.org>
>> Cc: polymer-dev <polymer-dev@googlegroups.com>, input-dev <
>> input-dev@chromium.org>
>>
>>
>> Hi,
>> We've talked before about some of the implications of the implicit
>> capture targeting model used by touch events.  Eg. that removing a node
>> while touching it has surprising (but workable) behavior
>> <https://plus.sandbox.google.com/+RickByers/posts/GHwpqnAFATf> [1].  And
>> we've also talked about how multiple active touches in separate documents
>> <http://www.w3.org/TR/touch-events/#touchevent-implementer-s-note> [2]
>> should behave.
>>
>> But I've never heard any discussion about what browsers should do if a
>> node moves documents while the target of a touch.  Here's a test page
>> <http://jsbin.com/hupuci/1/edit> [3] that shows Safari and (prior to a
>> crash I accidentally introduced <http://crbug.com/393822> [4]) Chrome
>> appears to just stop sending any events in such a situation (not visible to
>> the target node, original document, or new document).
>>
>> This seems problematic since the code handling the touch events may be
>> logically separate (in another component, even owned by a different
>> organization) than one that may be manipulating the DOM.  For example,
>> imagine some infinite news feed (facebook etc.) with JavaScript-driven
>> touch scrolling.  DOM elements may come and go (possibly to/from transient
>> documents for staging purposes or nested iframes for isolation reasons)
>> based on network activity disconnected from scrolling.  It shouldn't be
>> necessary (even if it's desirable for performance reasons) to
>> co-ordinate/suppress the DOM manipulation code with the touch handling code.
>>
>> I'm surprised I've never heard anyone complain about this before.
>> Presumably it's one of those rare "touch doesn't work right but I don't
>> understand why" cases.  Polymer's implementation of <template> elements
>> <https://github.com/Polymer/TemplateBinding/blob/3168309eb131921f08e3a74e9d7197c903762bda/src/TemplateBinding.js#L1085>
>> (the scenario I saw this hit in) could make this more common.  I've filed a
>> bug <http://crbug.com/394339> to track addressing this in blink somehow.
>>
>> What do you think.  Do you agree this is something that should be
>> addressed to improve rationality?  I've got a couple possible ideas, but
>> I'd like to here from others.
>>
>> Thanks,
>>    Rick
>>
>> [1] https://plus.sandbox.google.com/+RickByers/posts/GHwpqnAFATf
>> [2] http://www.w3.org/TR/touch-events/#touchevent-implementer-s-note
>> [3] http://jsbin.com/hupuci/1/edit
>> [4] http://crbug.com/393822
>> [5]
>> https://github.com/Polymer/TemplateBinding/blob/3168309eb131921f08e3a74e9d7197c903762bda/src/TemplateBinding.js#L1085
>> [6] http://crbug.com/394339
>>
>>
>

Received on Thursday, 7 May 2015 00:41:55 UTC