<?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>35431</bug_id>
          
          <creation_ts>2010-02-26 07:40:23 -0800</creation_ts>
          <short_desc>The element that a touchevent is dispatched to and the targetTouches list aren&apos;t always right</short_desc>
          <delta_ts>2010-02-26 08:52:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>32485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Murdoch">benm</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194091</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-26 07:40:23 -0800</bug_when>
    <thetext>Currently, we cache the target element that touch events are dispatched to in EventhHandler::handleTouchEvent() in the m_touchEventTarget member. This cached target is only updated to a new element when the first element in the PlatformTouchEvent&apos;s list of points is a TouchPressed event. This does not match observed behavior on iPhone and Android.

To better match the iPhone and Android behavior, I propose that we dispatch the event to the target element of the touch that caused the event to be fired in the first place, i.e. the target of the touch in the changedTouches list. Also, this element should be the &apos;target&apos; that the &apos;touches&apos; list is filtered over to create the targetTouches list.

I have a patch and layout test update to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194097</commentid>
    <comment_count>1</comment_count>
      <attachid>49584</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-26 07:58:57 -0800</bug_when>
    <thetext>Created attachment 49584
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194101</commentid>
    <comment_count>2</comment_count>
      <attachid>49584</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-26 08:15:38 -0800</bug_when>
    <thetext>Comment on attachment 49584
Proposed patch


&gt; +        The element that a touchevent is dispatched to isn&apos;t always right
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35431
&gt; +
&gt; +        The element that touch events are dispatched on is not always the
&gt; +        correct one, as the cached m_touchEventTarget member is only updated
&gt; +        when the first element of the PlatformTouchEvent touch list is in the
&gt; +        TouchPressed state.
&gt; +
&gt; +        This patch changes this behavior to dispatch the event to the target
&gt; +        of the touch that caused the event to be generated and eliminates the
&gt; +        m_touchEventTarget in favour of using the touch target hashmap. It also

Thus no more caching, right?


&gt;  
&gt; +    if (cancelTouches-&gt;length() &gt; 0) {
&gt; +        // We dispatch the event to the target of the touch that caused this touch event to be generated, i.e.
&gt; +        // we take it from the list that will be used as the changedTouches property of the event.
&gt; +        // The choice to use the touch at index 0 guaratees that there is a target (as we checked the length

guarantees, spelling error.

&gt; +        // above). In the case that there are multiple touches in what becomes the changedTouches list, it is
&gt; +        // difficult to say how we should prioritise touches and as such, item 0 is an arbitrary choice.

This is the same behaviour you noticed on iphone/android?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194115</commentid>
    <comment_count>3</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-26 08:32:46 -0800</bug_when>
    <thetext>(In reply to comment #2)

Hey Kenneth, thanks for taking a look at the patch!

&gt; (From update of attachment 49584 [details])
&gt; 
&gt; &gt; +        The element that a touchevent is dispatched to isn&apos;t always right
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=35431
&gt; &gt; +
&gt; &gt; +        The element that touch events are dispatched on is not always the
&gt; &gt; +        correct one, as the cached m_touchEventTarget member is only updated
&gt; &gt; +        when the first element of the PlatformTouchEvent touch list is in the
&gt; &gt; +        TouchPressed state.
&gt; &gt; +
&gt; &gt; +        This patch changes this behavior to dispatch the event to the target
&gt; &gt; +        of the touch that caused the event to be generated and eliminates the
&gt; &gt; +        m_touchEventTarget in favour of using the touch target hashmap. It also
&gt; 
&gt; Thus no more caching, right?

Well, the appropriate target is cached inside the hashmap, so we no longer have a need for this extra m_touchEventTarget cached value.

&gt; 
&gt; 
&gt; &gt;  
&gt; &gt; +    if (cancelTouches-&gt;length() &gt; 0) {
&gt; &gt; +        // We dispatch the event to the target of the touch that caused this touch event to be generated, i.e.
&gt; &gt; +        // we take it from the list that will be used as the changedTouches property of the event.
&gt; &gt; +        // The choice to use the touch at index 0 guaratees that there is a target (as we checked the length
&gt; 
&gt; guarantees, spelling error.

Thanks, well spotted. Will fix.

&gt; 
&gt; &gt; +        // above). In the case that there are multiple touches in what becomes the changedTouches list, it is
&gt; &gt; +        // difficult to say how we should prioritise touches and as such, item 0 is an arbitrary choice.
&gt; 
&gt; This is the same behaviour you noticed on iphone/android?

Not exactly. It&apos;s particularly difficult to get into the state where you have two elements in the changedTouches list, as you must press two fingers down at *precisely* the same time. I think it&apos;s a pretty far out edge case and in that scenario acceptable to just take the first element in the list (which we know exists because we&apos;re only in this block if the length() is &gt; 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194117</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-26 08:35:36 -0800</bug_when>
    <thetext>&gt; Not exactly. It&apos;s particularly difficult to get into the state where you have
&gt; two elements in the changedTouches list, as you must press two fingers down at
&gt; *precisely* the same time. I think it&apos;s a pretty far out edge case and in that
&gt; scenario acceptable to just take the first element in the list (which we know
&gt; exists because we&apos;re only in this block if the length() is &gt; 0.

Sounds good to me! Please fix that spelling issue before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194124</commentid>
    <comment_count>5</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-26 08:52:43 -0800</bug_when>
    <thetext>Thanks for the review!

Fixed typo and committed revision 55287.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49584</attachid>
            <date>2010-02-26 07:58:57 -0800</date>
            <delta_ts>2010-02-26 08:35:50 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>35431.txt</filename>
            <type>text/plain</type>
            <size>12797</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDItMjYgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBl
bGVtZW50IHRoYXQgYSB0b3VjaGV2ZW50IGlzIGRpc3BhdGNoZWQgdG8gaXNuJ3QgYWx3YXlzIHJp
Z2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTQz
MQorCisgICAgICAgIFRoZSBlbGVtZW50IHRoYXQgdG91Y2ggZXZlbnRzIGFyZSBkaXNwYXRjaGVk
IG9uIGlzIG5vdCBhbHdheXMgdGhlCisgICAgICAgIGNvcnJlY3Qgb25lLCBhcyB0aGUgY2FjaGVk
IG1fdG91Y2hFdmVudFRhcmdldCBtZW1iZXIgaXMgb25seSB1cGRhdGVkCisgICAgICAgIHdoZW4g
dGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFBsYXRmb3JtVG91Y2hFdmVudCB0b3VjaCBsaXN0IGlz
IGluIHRoZQorICAgICAgICBUb3VjaFByZXNzZWQgc3RhdGUuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBjaGFuZ2VzIHRoaXMgYmVoYXZpb3IgdG8gZGlzcGF0Y2ggdGhlIGV2ZW50IHRvIHRoZSB0YXJn
ZXQKKyAgICAgICAgb2YgdGhlIHRvdWNoIHRoYXQgY2F1c2VkIHRoZSBldmVudCB0byBiZSBnZW5l
cmF0ZWQgYW5kIGVsaW1pbmF0ZXMgdGhlCisgICAgICAgIG1fdG91Y2hFdmVudFRhcmdldCBpbiBm
YXZvdXIgb2YgdXNpbmcgdGhlIHRvdWNoIHRhcmdldCBoYXNobWFwLiBJdCBhbHNvCisgICAgICAg
IHNpbXBsaWZpZXMgdGhlIHdheSBpbiB3aGljaCB0aGUgdG91Y2hUYXJnZXRzIGxpc3QgaXMgZ2Vu
ZXJhdGVkIGFzIHdlCisgICAgICAgIG5vIGxvbmdlciBoYXZlIG1fdG91Y2hFdmVudFRhcmdldCAo
d2hpY2ggd2FzIHVzZWQgcHJldmlvdXNseSB0byBidWlsZAorICAgICAgICB0aGUgbGlzdCkuIFRo
ZSBuZXcgYmVoYXZpb3IgbWF0Y2hlcyB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3Igb2YgdGhlCisgICAg
ICAgIGlQaG9uZSBhbmQgQW5kcm9pZC4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFzc2VtYmxlVGFyZ2V0VG91Y2hlcyk6IEFkZGVkLiBuZXcg
ZnVuY3Rpb24gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICB0YXJnZXRUb3VjaGVzIGxpc3QuIEZp
bHRlcnMgYSBsaXN0IG9mIHRvdWNoZXMgKHBhc3NlZCkgYWJvdXQKKyAgICAgICAgICAgIGFub3Ro
ZXIgZ2l2ZW4gdG91Y2guCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRv
dWNoRXZlbnQpOiBSZW1vdmUgdGhlCisgICAgICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXQgbWVt
YmVyLCBhbmQgc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YgdGhlCisgICAgICAgICAgICBUb3Vj
aExpc3RzIHRoYXQgYXJlIGJ1bmRsZWQgd2l0aCB0aGUgVG91Y2hFVmVudCBvYmplY3QuIERpc3Bh
dGNoCisgICAgICAgICAgICB0aGUgZXZlbnQgdG8gdGhlIHRhcmdldCBvZiB0aGUgdG91Y2ggdGhh
dCBjYXVzZWQgdGhlIGV2ZW50IHRvIGJlCisgICAgICAgICAgICBmaXJlZC4KKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOiBSZW1vdmUgbV90b3VjaEV2ZW50VGFyZ2V0LgorCiAyMDEwLTAy
LTI2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgTGV2aW4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gNTUyNzQpCisr
KyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0Nywx
MyArMjU0NywyNSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTGFzdFNjcm9sbGJhclVuCiB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCitzdGF0aWMgUGFzc1JlZlB0cjxUb3VjaExp
c3Q+IGFzc2VtYmxlVGFyZ2V0VG91Y2hlcyhUb3VjaCogdG91Y2hUYXJnZXQsIFRvdWNoTGlzdCog
dG91Y2hlcykKK3sKKyAgICBSZWZQdHI8VG91Y2hMaXN0PiB0YXJnZXRUb3VjaGVzID0gVG91Y2hM
aXN0OjpjcmVhdGUoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG91Y2hlcy0+bGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICBpZiAodG91Y2hlcy0+aXRlbShpKS0+dGFyZ2V0KCktPnRvTm9k
ZSgpLT5pc1NhbWVOb2RlKHRvdWNoVGFyZ2V0LT50YXJnZXQoKS0+dG9Ob2RlKCkpKQorICAgICAg
ICAgICAgdGFyZ2V0VG91Y2hlcy0+YXBwZW5kKHRvdWNoZXMtPml0ZW0oaSkpOworICAgIH0KKwor
ICAgIHJldHVybiB0YXJnZXRUb3VjaGVzLnJlbGVhc2UoKTsKK30KKwogYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKIHsK
ICAgICBSZWZQdHI8VG91Y2hMaXN0PiB0b3VjaGVzID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKICAg
ICBSZWZQdHI8VG91Y2hMaXN0PiBwcmVzc2VkVG91Y2hlcyA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPFRvdWNoTGlzdD4gcmVsZWFzZWRUb3VjaGVzID0gVG91Y2hMaXN0OjpjcmVh
dGUoKTsKICAgICBSZWZQdHI8VG91Y2hMaXN0PiBtb3ZlZFRvdWNoZXMgPSBUb3VjaExpc3Q6OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxUb3VjaExpc3Q+IHRhcmdldFRvdWNoZXMgPSBUb3VjaExpc3Q6
OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxUb3VjaExpc3Q+IGNhbmNlbFRvdWNoZXMgPSBUb3VjaExp
c3Q6OmNyZWF0ZSgpOwogCiAgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBv
aW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CkBAIC0yNjAzLDg5ICsyNjE1LDEwNCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LnNjcmVlblBvcygpLngoKSwgcG9pbnQuc2Ny
ZWVuUG9zKCkueSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGp1c3RlZFBhZ2VYLCBhZGp1c3RlZFBhZ2VZKTsKIAotICAgICAgICBpZiAoZXZlbnQudHlw
ZSgpID09IFRvdWNoU3RhcnQgJiYgIWkpIHsKLSAgICAgICAgICAgIG1fdG91Y2hFdmVudFRhcmdl
dCA9IHRhcmdldDsKLSAgICAgICAgfQorICAgICAgICAvLyB0b3VjaGVzIHNob3VsZCBjb250YWlu
IGluZm9ybWF0aW9uIGFib3V0IGV2ZXJ5IHRvdWNoIGN1cnJlbnRseSBvbiB0aGUgc2NyZWVuLgor
ICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVs
ZWFzZWQpCisgICAgICAgICAgICB0b3VjaGVzLT5hcHBlbmQodG91Y2gpOwogCisgICAgICAgIC8v
IE5vdyBidWlsZCB1cCB0aGUgY29ycmVjdCBsaXN0IGZvciBjaGFuZ2VkVG91Y2hlcy4KICAgICAg
ICAgaWYgKHBvaW50LnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2Vk
KQogICAgICAgICAgICAgcmVsZWFzZWRUb3VjaGVzLT5hcHBlbmQodG91Y2gpOwogICAgICAgICBl
bHNlIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxs
ZWQpCiAgICAgICAgICAgICBjYW5jZWxUb3VjaGVzLT5hcHBlbmQodG91Y2gpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkKQotICAgICAgICAgICAgICAgIHByZXNzZWRUb3VjaGVzLT5hcHBlbmQo
dG91Y2gpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdG91Y2hlcy0+YXBw
ZW5kKHRvdWNoKTsKLSAgICAgICAgICAgICAgICBpZiAobV90b3VjaEV2ZW50VGFyZ2V0ID09IHRh
cmdldCkKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG91Y2hlcy0+YXBwZW5kKHRvdWNoKTsK
LSAgICAgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQpCi0gICAgICAgICAgICAgICAgICAgIG1vdmVkVG91Y2hlcy0+YXBwZW5kKHRv
dWNoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChwb2ludC5z
dGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKQorICAgICAgICAgICAg
cHJlc3NlZFRvdWNoZXMtPmFwcGVuZCh0b3VjaCk7CisgICAgICAgIGVsc2UgaWYgKHBvaW50LnN0
YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkKQorICAgICAgICAgICAgbW92
ZWRUb3VjaGVzLT5hcHBlbmQodG91Y2gpOwogICAgIH0KIAotICAgIGlmICghbV90b3VjaEV2ZW50
VGFyZ2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBib29sIGRlZmF1bHRQcmV2ZW50
ZWQgPSBmYWxzZTsKKyAgICBUb3VjaCogY2hhbmdlZFRvdWNoID0gMDsKKyAgICBFdmVudFRhcmdl
dCogdG91Y2hFdmVudFRhcmdldCA9IDA7CisKKyAgICBpZiAoY2FuY2VsVG91Y2hlcy0+bGVuZ3Ro
KCkgPiAwKSB7CisgICAgICAgIC8vIFdlIGRpc3BhdGNoIHRoZSBldmVudCB0byB0aGUgdGFyZ2V0
IG9mIHRoZSB0b3VjaCB0aGF0IGNhdXNlZCB0aGlzIHRvdWNoIGV2ZW50IHRvIGJlIGdlbmVyYXRl
ZCwgaS5lLgorICAgICAgICAvLyB3ZSB0YWtlIGl0IGZyb20gdGhlIGxpc3QgdGhhdCB3aWxsIGJl
IHVzZWQgYXMgdGhlIGNoYW5nZWRUb3VjaGVzIHByb3BlcnR5IG9mIHRoZSBldmVudC4KKyAgICAg
ICAgLy8gVGhlIGNob2ljZSB0byB1c2UgdGhlIHRvdWNoIGF0IGluZGV4IDAgZ3VhcmF0ZWVzIHRo
YXQgdGhlcmUgaXMgYSB0YXJnZXQgKGFzIHdlIGNoZWNrZWQgdGhlIGxlbmd0aAorICAgICAgICAv
LyBhYm92ZSkuIEluIHRoZSBjYXNlIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIHRvdWNoZXMgaW4g
d2hhdCBiZWNvbWVzIHRoZSBjaGFuZ2VkVG91Y2hlcyBsaXN0LCBpdCBpcworICAgICAgICAvLyBk
aWZmaWN1bHQgdG8gc2F5IGhvdyB3ZSBzaG91bGQgcHJpb3JpdGlzZSB0b3VjaGVzIGFuZCBhcyBz
dWNoLCBpdGVtIDAgaXMgYW4gYXJiaXRyYXJ5IGNob2ljZS4KKyAgICAgICAgY2hhbmdlZFRvdWNo
ID0gY2FuY2VsVG91Y2hlcy0+aXRlbSgwKTsKKyAgICAgICAgQVNTRVJUKGNoYW5nZWRUb3VjaCk7
CisgICAgICAgIHRvdWNoRXZlbnRUYXJnZXQgPSBjaGFuZ2VkVG91Y2gtPnRhcmdldCgpOworICAg
ICAgICBBU1NFUlQodG91Y2hFdmVudFRhcmdldCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09
IFRvdWNoQ2FuY2VsKSB7CiAgICAgICAgIGV2ZW50TmFtZSA9ICZldmVudE5hbWVzKCkudG91Y2hj
YW5jZWxFdmVudDsKICAgICAgICAgUmVmUHRyPFRvdWNoRXZlbnQ+IGNhbmNlbEV2ID0KICAgICAg
ICAgICAgIFRvdWNoRXZlbnQ6OmNyZWF0ZShUb3VjaExpc3Q6OmNyZWF0ZSgpLmdldCgpLCBUb3Vj
aExpc3Q6OmNyZWF0ZSgpLmdldCgpLCBjYW5jZWxUb3VjaGVzLmdldCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV2ZW50TmFtZSwgbV90b3Vj
aEV2ZW50VGFyZ2V0LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV2ZW50TmFtZSwgdG91Y2hFdmVu
dFRhcmdldC0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBldmVu
dC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSgp
KTsKIAogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV90b3VjaEV2ZW50
VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGNhbmNlbEV2LmdldCgpLCBlYyk7CisgICAgICAgIHRvdWNo
RXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoY2FuY2VsRXYuZ2V0KCksIGVjKTsKICAgICAgICAg
ZGVmYXVsdFByZXZlbnRlZCB8PSBjYW5jZWxFdi0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIH0K
IAogICAgIGlmIChyZWxlYXNlZFRvdWNoZXMtPmxlbmd0aCgpID4gMCkgeworICAgICAgICBUb3Vj
aCogY2hhbmdlZFRvdWNoID0gcmVsZWFzZWRUb3VjaGVzLT5pdGVtKDApOworICAgICAgICBBU1NF
UlQoY2hhbmdlZFRvdWNoKTsKKyAgICAgICAgdG91Y2hFdmVudFRhcmdldCA9IGNoYW5nZWRUb3Vj
aC0+dGFyZ2V0KCk7CisgICAgICAgIEFTU0VSVCh0b3VjaEV2ZW50VGFyZ2V0KTsKKworICAgICAg
ICBSZWZQdHI8VG91Y2hMaXN0PiB0YXJnZXRUb3VjaGVzID0gYXNzZW1ibGVUYXJnZXRUb3VjaGVz
KGNoYW5nZWRUb3VjaCwgdG91Y2hlcy5nZXQoKSk7CisKICAgICAgICAgZXZlbnROYW1lID0gJmV2
ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50OwogICAgICAgICBSZWZQdHI8VG91Y2hFdmVudD4gZW5k
RXYgPSAKICAgICAgICAgICAgIFRvdWNoRXZlbnQ6OmNyZWF0ZSh0b3VjaGVzLmdldCgpLCB0YXJn
ZXRUb3VjaGVzLmdldCgpLCByZWxlYXNlZFRvdWNoZXMuZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnROYW1lLCBtX3RvdWNoRXZl
bnRUYXJnZXQtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnROYW1lLCB0b3VjaEV2ZW50VGFy
Z2V0LT50b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIGV2ZW50LmN0
cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5KCkpOwog
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KGVuZEV2LmdldCgpLCBlYyk7Ci0gICAgICAgIGRlZmF1bHRQcmV2ZW50
ZWQgPSBlbmRFdi0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgICAgICB0b3VjaEV2ZW50VGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KGVuZEV2LmdldCgpLCBlYyk7CisgICAgICAgIGRlZmF1bHRQcmV2ZW50
ZWQgfD0gZW5kRXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICB9CiAgICAgaWYgKHByZXNzZWRU
b3VjaGVzLT5sZW5ndGgoKSA+IDApIHsKLSAgICAgICAgLy8gQWRkIHByZXNzZWQgdG91Y2hwb2lu
dHMgdG8gdG91Y2hlcyBhbmQgdGFyZ2V0VG91Y2hlcwotICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHByZXNzZWRUb3VjaGVzLT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgICAgICB0b3VjaGVz
LT5hcHBlbmQocHJlc3NlZFRvdWNoZXMtPml0ZW0oaSkpOwotICAgICAgICAgICAgaWYgKG1fdG91
Y2hFdmVudFRhcmdldCA9PSBwcmVzc2VkVG91Y2hlcy0+aXRlbShpKS0+dGFyZ2V0KCkpCi0gICAg
ICAgICAgICAgICAgdGFyZ2V0VG91Y2hlcy0+YXBwZW5kKHByZXNzZWRUb3VjaGVzLT5pdGVtKGkp
KTsKLSAgICAgICAgfQorICAgICAgICBUb3VjaCogY2hhbmdlZFRvdWNoID0gcHJlc3NlZFRvdWNo
ZXMtPml0ZW0oMCk7CisgICAgICAgIEFTU0VSVChjaGFuZ2VkVG91Y2gpOworICAgICAgICB0b3Vj
aEV2ZW50VGFyZ2V0ID0gY2hhbmdlZFRvdWNoLT50YXJnZXQoKTsKKyAgICAgICAgQVNTRVJUKHRv
dWNoRXZlbnRUYXJnZXQpOworCisgICAgICAgIFJlZlB0cjxUb3VjaExpc3Q+IHRhcmdldFRvdWNo
ZXMgPSBhc3NlbWJsZVRhcmdldFRvdWNoZXMoY2hhbmdlZFRvdWNoLCB0b3VjaGVzLmdldCgpKTsK
IAogICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudDsKLSAg
ICAgICAgUmVmUHRyPFRvdWNoRXZlbnQ+IHN0YXJ0RXYgPSAKKyAgICAgICAgUmVmUHRyPFRvdWNo
RXZlbnQ+IHN0YXJ0RXYgPQogICAgICAgICAgICAgVG91Y2hFdmVudDo6Y3JlYXRlKHRvdWNoZXMu
Z2V0KCksIHRhcmdldFRvdWNoZXMuZ2V0KCksIHByZXNzZWRUb3VjaGVzLmdldCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV2ZW50TmFtZSwg
bV90b3VjaEV2ZW50VGFyZ2V0LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV2ZW50TmFtZSwgdG91
Y2hFdmVudFRhcmdldC0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAw
LCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQubWV0
YUtleSgpKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fdG91Y2hF
dmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChzdGFydEV2LmdldCgpLCBlYyk7CisgICAgICAgIHRv
dWNoRXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoc3RhcnRFdi5nZXQoKSwgZWMpOwogICAgICAg
ICBkZWZhdWx0UHJldmVudGVkIHw9IHN0YXJ0RXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKICAgICB9
CisKICAgICBpZiAobW92ZWRUb3VjaGVzLT5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgVG91Y2gq
IGNoYW5nZWRUb3VjaCA9IG1vdmVkVG91Y2hlcy0+aXRlbSgwKTsKKyAgICAgICAgQVNTRVJUKGNo
YW5nZWRUb3VjaCk7CisgICAgICAgIHRvdWNoRXZlbnRUYXJnZXQgPSBjaGFuZ2VkVG91Y2gtPnRh
cmdldCgpOworICAgICAgICBBU1NFUlQodG91Y2hFdmVudFRhcmdldCk7CisKKyAgICAgICAgUmVm
UHRyPFRvdWNoTGlzdD4gdGFyZ2V0VG91Y2hlcyA9IGFzc2VtYmxlVGFyZ2V0VG91Y2hlcyhjaGFu
Z2VkVG91Y2gsIHRvdWNoZXMuZ2V0KCkpOworCiAgICAgICAgIGV2ZW50TmFtZSA9ICZldmVudE5h
bWVzKCkudG91Y2htb3ZlRXZlbnQ7CiAgICAgICAgIFJlZlB0cjxUb3VjaEV2ZW50PiBtb3ZlRXYg
PSAKICAgICAgICAgICAgIFRvdWNoRXZlbnQ6OmNyZWF0ZSh0b3VjaGVzLmdldCgpLCB0YXJnZXRU
b3VjaGVzLmdldCgpLCBtb3ZlZFRvdWNoZXMuZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnROYW1lLCBtX3RvdWNoRXZlbnRUYXJn
ZXQtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnROYW1lLCB0b3VjaEV2ZW50VGFyZ2V0LT50
b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIGV2ZW50LmN0cmxLZXko
KSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5KCkpOwogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KG1vdmVFdi5nZXQoKSwgZWMpOworICAgICAgICB0b3VjaEV2ZW50VGFyZ2V0LT5k
aXNwYXRjaEV2ZW50KG1vdmVFdi5nZXQoKSwgZWMpOwogICAgICAgICBkZWZhdWx0UHJldmVudGVk
IHw9IG1vdmVFdi0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIH0KIAotICAgIGlmIChldmVudC50
eXBlKCkgPT0gVG91Y2hFbmQgfHwgZXZlbnQudHlwZSgpID09IFRvdWNoQ2FuY2VsKQotICAgICAg
ICBtX3RvdWNoRXZlbnRUYXJnZXQgPSAwOwotCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7
CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDU1Mjc0KQorKysgV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTUsNyArNDE1LDYg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHR5cGVkZWYgSGFzaE1h
cDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdldE1hcDsKICAgICBUb3VjaFRh
cmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7Ci0gICAgUmVmUHRyPE5vZGU+
IG1fdG91Y2hFdmVudFRhcmdldDsKICNlbmRpZgogfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTUy
ODIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wMi0yNiAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGVsZW1lbnQgdGhh
dCBhIHRvdWNoZXZlbnQgaXMgZGlzcGF0Y2hlZCB0byBpc24ndCBhbHdheXMgcmlnaHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDMxCisKKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVk
LnR4dDogVXBkYXRlZAorCXRoZSB0YXJnZXRUb3VjaGVzIGxpc3QgZXhwZWN0aW9ucy4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtc2luZ2xlLXRvdWNoLWV2
ZW50cy5qczogZGl0dG8uCisgICAgICAgICh2ZXJpZnlUb3VjaCk6CisKIDIwMTAtMDItMjYgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmdsZS10
b3VjaC1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA1NTI3NCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmds
ZS10b3VjaC1ldmVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBAIFBBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LnQKIFBBU1MgbGFzdEV2
ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKIFBBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlz
IDEKIFBBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCi1QQVNTIGxhc3RF
dmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3Vj
aGVzLmxlbmd0aCBpcyAxCiBQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAwCiBQQVNTIGxhc3RFdmVu
dC5wYWdlWSBpcyAwCiBQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlz
ICJESVYiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMv
YmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5q
cwkocmV2aXNpb24gNTUyNzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3Jp
cHQtdGVzdHMvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAt
NzksNyArNzksNyBAQCBmdW5jdGlvbiB2ZXJpZnlUb3VjaCh3aGljaCkgewogICAgICAgICAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQu
dGFnTmFtZSIsICJESVYiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDApOworICAgICAgICAg
ICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2htb3ZlIiwgMSwgMSwgMSk7CiAgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1l
IiwgIkRJViIpOwogICAgICAgICBicmVhazsKIAo=
</data>
<flag name="review"
          id="32502"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>