[Bug 16176] [Shadow]: What should we do if an event happens on light child which is distributed to a insertion point.

https://www.w3.org/Bugs/Public/show_bug.cgi?id=16176

Hayato Ito <hayato@chromium.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |

--- Comment #6 from Hayato Ito <hayato@chromium.org> 2012-04-06 05:02:36 UTC ---
Let me reopen the bug.

Suppose the following DOM tree.

<div id='top'>
  <div id='shadow-host'>
      -- <shadow-root> --
               <content />
     <div id='distributed-light-child' />
  </div>
</div>

And move mouse from '#shadow-host' to '#distributed-light-child' and think the
'mouseover' event on #distributed-light-child.

In this case:
  TARGET: #distributed-light-child
  ancestors of TARGET - [#distributed-light-child, <content>, <shadow-root>,
#shadow-host, #top]

  RELATED: #shadow-host
  ancestors of RELATED - [#shadow-host, #top]

The re-targeting algorithm will go as follows:

1. Let COMMON be undefined
2. Let ANCESTOR be the lowest common ancestor:
  (ANCESTOR <- #shadow-host (lowest common ancestor.))
3. If ANCESTOR exists:
  If ANCESTOR is RELATED and is a shadow host:
   Set LIMIT to ANCESTOR     (LIMIT <- #shadow-host)
   Set ADJUSTED to RELATED   (ADJUSTED <- #shadow-host)
   Stop.3. 

So the output of retargeting algorithm would be (LIMIT=#shadow-host,
ADJUSTED=#shadow-host).
That means #top does not receive 'mouseover' event, which is different from the
result of the following case where a #shadow-host does does not contain a
shadowRoot, so it is not 'ShadowHost' actually:

<div id='top'>
   <div id='shadow-host'>
      <div id='distributed-light-child' />
   </div>
</div>


Is this an intentional behavior?
I think that one of our goals is that we won't behavior where an events happens
on light child and shadow-host from the outside of shadow host, right?


(In reply to comment #5)
> Oh. How clever is that you modified only calculation of ancestors for
> relatedTarget!
> That sounds a nice idea for me. Let me think further and modify the current
> EventDispatching algorithm.
> If I find a issue, let me reopen this.
> 
> 
> (In reply to comment #3)
> > Here's what I've come up with:
> > http://dvcs.w3.org/hg/webcomponents/rev/378dd45d7b80
> > 
> > Basically, whenever calculating ancestors for relatedTarget, we must ignore the
> > upper boundary. This way, the node will just appear as a child of a shadow
> > host, not as a something that's distributed into an insertion point.
> > 
> > WDYT?

-- 
Configure bugmail: https://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Friday, 6 April 2012 05:02:41 UTC