<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>122500</bug_id>
          
          <creation_ts>2013-10-08 02:00:59 -0700</creation_ts>
          <short_desc>Simplify the loop in EventRetargeter::calculateEventPath</short_desc>
          <delta_ts>2013-10-08 12:43:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122494</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937469</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 02:00:59 -0700</bug_when>
    <thetext>The loop in EventRetargeter::calculateEventPath is better expressed as two nested loops along the line of:

for (Node* node = nodeOrHostIfPseudoElement(targetNode); node; node = toShadowRoot(node)-&gt;hostElement()) {
    if (!target || !isSVGElement)
        target = &amp;eventTargetRespectingTargetRules(*node);
    for (; node; node = node-&gt;parentNode()) {
        ...
        if (!inDocument)
            return;
        if (node-&gt;isShadowRoot())
            break;
    }
    if (!shouldEventCrossShadowBoundary(event, toShadowRoot(node), targetStack.last()))
        return;
}

This codifies the semantics much more clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937620</commentid>
    <comment_count>1</comment_count>
      <attachid>213706</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 12:39:09 -0700</bug_when>
    <thetext>Created attachment 213706
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937623</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-08 12:43:05 -0700</bug_when>
    <thetext>Committed r157127: &lt;http://trac.webkit.org/changeset/157127&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213706</attachid>
            <date>2013-10-08 12:39:09 -0700</date>
            <delta_ts>2013-10-08 12:42:14 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-122500-20131008123908.patch</filename>
            <type>text/plain</type>
            <size>3030</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzEyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEwLTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IHRoZSBsb29wIGlu
IEV2ZW50UmV0YXJnZXRlcjo6Y2FsY3VsYXRlRXZlbnRQYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI1MDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB0aGUgY29udm9sdXRlZCBsb29w
IGJ5IHR3byBuZXN0ZWQgbG9vcHMgdG8gbWFrZSBzZW1hbnRpY3MgY2xlYXIuCisKKyAgICAgICAg
KiBkb20vRXZlbnRSZXRhcmdldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmV0YXJn
ZXRlcjo6Y2FsY3VsYXRlRXZlbnRQYXRoKToKKwogMjAxMy0xMC0wOCAgQ2hhbmdTZW9rIE9oICA8
Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgW0dUS10gTGVhazogR2RrRXZl
bnQgcmV0dXJlZCBieSBndGtfZ2V0X2N1cnJlbnRfZXZlbnQgaXMgbm90IGZyZWVkLgpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAJKHJldmlzaW9uIDE1NzEyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFJldGFyZ2V0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MywyNyArODMsMjggQEAgdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmNhbGN1bGF0ZUV2ZW50UGF0
aAogI2VuZGlmCiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IDA7CiAKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSBub2RlT3JIb3N0SWZQc2V1ZG9FbGVtZW50KCZ0YXJnZXROb2RlKTsgbm9kZTsgbm9k
ZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewotICAgICAgICBpZiAoIXRhcmdl
dCkKKyAgICBOb2RlKiBub2RlID0gbm9kZU9ySG9zdElmUHNldWRvRWxlbWVudCgmdGFyZ2V0Tm9k
ZSk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKCF0YXJnZXQgfHwgIWlzU1ZHRWxl
bWVudCkgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugb25jZSB3ZSd2ZSBj
bGltYmVkIG91dCBvZiB0aGUgU1ZHIHN1YnRyZWUgaW4gYSBIVE1MIGRvY3VtZW50LgogICAgICAg
ICAgICAgdGFyZ2V0ID0gJmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKTsK
LQotICAgICAgICBFdmVudFRhcmdldCYgY3VycmVudFRhcmdldCA9IGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1RhcmdldFJ1bGVzKCpub2RlKTsKLSAgICAgICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQp
Ci0gICAgICAgICAgICBldmVudFBhdGguYXBwZW5kKGFkb3B0UHRyKG5ldyBNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQobm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkpKTsKKyAgICAgICAgZm9y
ICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIEV2ZW50
VGFyZ2V0JiBjdXJyZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMo
Km5vZGUpOworICAgICAgICAgICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCisgICAgICAgICAg
ICAgICAgZXZlbnRQYXRoLmFwcGVuZChhZG9wdFB0cihuZXcgTW91c2VPckZvY3VzRXZlbnRDb250
ZXh0KG5vZGUsICZjdXJyZW50VGFyZ2V0LCB0YXJnZXQpKSk7CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICAgICAgZWxzZSBpZiAoaXNUb3VjaEV2ZW50KQotICAgICAgICAgICAgZXZlbnRQ
YXRoLmFwcGVuZChhZG9wdFB0cihuZXcgVG91Y2hFdmVudENvbnRleHQobm9kZSwgJmN1cnJlbnRU
YXJnZXQsIHRhcmdldCkpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hFdmVudCkKKyAg
ICAgICAgICAgICAgICBldmVudFBhdGguYXBwZW5kKGFkb3B0UHRyKG5ldyBUb3VjaEV2ZW50Q29u
dGV4dChub2RlLCAmY3VycmVudFRhcmdldCwgdGFyZ2V0KSkpOwogI2VuZGlmCi0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGV2ZW50UGF0aC5hcHBlbmQoYWRvcHRQdHIobmV3IEV2ZW50Q29udGV4
dChub2RlLCAmY3VycmVudFRhcmdldCwgdGFyZ2V0KSkpOwotICAgICAgICBpZiAoIWluRG9jdW1l
bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghbm9kZS0+aXNTaGFkb3dSb290
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFzaG91bGRFdmVudENyb3Nz
U2hhZG93Qm91bmRhcnkoZXZlbnQsICp0b1NoYWRvd1Jvb3Qobm9kZSksICp0YXJnZXQpKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5hcHBlbmQoYWRvcHRQdHIo
bmV3IEV2ZW50Q29udGV4dChub2RlLCAmY3VycmVudFRhcmdldCwgdGFyZ2V0KSkpOworICAgICAg
ICAgICAgaWYgKCFpbkRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIW5vZGUgfHwgIXNob3VsZEV2ZW50Q3Jvc3NTaGFkb3dCb3Vu
ZGFyeShldmVudCwgKnRvU2hhZG93Um9vdChub2RlKSwgKnRhcmdldCkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICghaXNTVkdFbGVtZW50KQotICAgICAgICAgICAgdGFyZ2V0ID0g
MDsKKyAgICAgICAgbm9kZSA9IHRvU2hhZG93Um9vdChub2RlKS0+aG9zdEVsZW1lbnQoKTsKICAg
ICB9CiB9CiAK
</data>
<flag name="review"
          id="236104"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>