<?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>155205</bug_id>
          
          <creation_ts>2016-03-08 16:22:57 -0800</creation_ts>
          <short_desc>Add two finger tap on links</short_desc>
          <delta_ts>2016-03-09 11:29:38 -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>WebKit2</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172288</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-03-08 16:22:57 -0800</bug_when>
    <thetext>Adding new gesture to let the delegate implement alternate actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172291</commentid>
    <comment_count>1</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-03-08 16:26:39 -0800</bug_when>
    <thetext>rdar://problem/22937516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172295</commentid>
    <comment_count>2</comment_count>
      <attachid>273364</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-03-08 16:29:43 -0800</bug_when>
    <thetext>Created attachment 273364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172334</commentid>
    <comment_count>3</comment_count>
      <attachid>273364</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-03-08 18:13:40 -0800</bug_when>
    <thetext>Comment on attachment 273364
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=273364&amp;action=review

r=me, but you need to add the things to UIKitSPI.h to fix the build and I think you should consider my comments.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:490
&gt; +    [_twoFingerSingleTapGestureRecognizer setAllowableMovement:60];

You probably need to add this to UIKitSPI.h. Also, what is this in units of?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:493
&gt; +    [_twoFingerSingleTapGestureRecognizer setDelaysTouchesEnded :NO];

Weird space after ended.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1315
&gt; +    _page-&gt;handleTwoFingerTapAtPoint(roundedIntPoint(gestureRecognizer.centroid), [view, webView](const String&amp; string, CallbackBase::Error error) {

You probably need to add [UITapGestureRecognizer centroid] to UIKitSPI.h

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1321
&gt; +            if ([uiDelegate respondsToSelector:@selector(_webView:alternateActionForURL:)])
&gt; +                [uiDelegate _webView:webView alternateActionForURL:[NSURL _web_URLWithWTFString:string]];

Instead of passing a URL here, could we pass an _WKActivatedElementInfo (or subclass of it), and let the client make the decision?  That way, if someone wants to do something with images, or something else, they could.  It would also allow the client to show that something was happening, because the boundingRect would be available.

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:633
&gt; +void WebPage::handleTwoFingerTapAtPoint(const WebCore::IntPoint&amp; point, uint64_t callbackID)

Could we reuse getPositionInformation() here, but make an async version of it.  That might be too heavy weight, but passing enough information for a _WKActivatedElementInfo would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172629</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-03-09 11:15:46 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 273364 [details]
I did notice the bot failures. I&apos;ll update UIKitSPI.h
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1321
&gt; &gt; +            if ([uiDelegate respondsToSelector:@selector(_webView:alternateActionForURL:)])
&gt; &gt; +                [uiDelegate _webView:webView alternateActionForURL:[NSURL _web_URLWithWTFString:string]];
&gt; 
&gt; Instead of passing a URL here, could we pass an _WKActivatedElementInfo (or
&gt; subclass of it), and let the client make the decision?  That way, if someone
&gt; wants to do something with images, or something else, they could.  It would
&gt; also allow the client to show that something was happening, because the
&gt; boundingRect would be available.
We are not computing the position information for this. We could in the future. For now I&apos;d like to leave it as is.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:633
&gt; &gt; +void WebPage::handleTwoFingerTapAtPoint(const WebCore::IntPoint&amp; point, uint64_t callbackID)
&gt; 
&gt; Could we reuse getPositionInformation() here, but make an async version of
&gt; it.  That might be too heavy weight, but passing enough information for a
&gt; _WKActivatedElementInfo would be good.
We already have requestPositionInformation that is async but doesn&apos;t use a completion block. I&apos;d rather do this in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172636</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2016-03-09 11:29:38 -0800</bug_when>
    <thetext>Committed revision 197866.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273364</attachid>
            <date>2016-03-08 16:29:43 -0800</date>
            <delta_ts>2016-03-08 18:13:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>twofingertap.txt</filename>
            <type>text/plain</type>
            <size>11648</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzgxNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE2LTAzLTA4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHR3byBmaW5nZXIgdGFw
IG9uIGxpbmtzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1MjA1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIyOTM3NTE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0d28gZmluZ2VyIHRhcCBn
ZXN0dXJlIHJlY29nbml6ZXIuIFdoZW4gcGVyZm9ybWVkCisgICAgICAgIG9uIGEgbGluaywgaXQg
Y2FsbHMgdGhlIGRlbGVnYXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9y
ZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZWQ6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9p
bnQpOgorCiAyMDE2LTAzLTA4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RhcnQgbW92aW5nIHRvIHNlcGFyYXRlZCB3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSBt
YXBwaW5ncyBpbiB0aGUgSklUCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAxOTc2NTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxNyw2ICs1MTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5n
JiBjb250ZW50U2l6ZUNhdGVnb3J5KTsKICAgICB2b2lkIGdldExvb2t1cENvbnRleHRBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAjZW5kaWYKICNpZiBFTkFCTEUoREFU
QV9ERVRFQ1RJT04pCiAgICAgdm9pZCBzZXREYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFE
ZXRlY3Rpb25SZXN1bHQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc2NTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRz
OwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWREaXNtaXNzUHJldmll
d1ZpZXdDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJldmlld2VkVmlld0NvbnRyb2xs
ZXIgY29tbWl0dGluZzooQk9PTCljb21taXR0aW5nIFdLX0FWQUlMQUJMRShOQSwgOV8wKTsKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRGlzbWlzc1ByZXZpZXdWaWV3
Q29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXZpZXdlZFZpZXdDb250cm9sbGVyIFdL
X0FWQUlMQUJMRShOQSwgOV8wKTsKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKill
bGVtZW50IFdLX0FWQUlMQUJMRShOQSwgV0tfSU9TX1RCQSk7CistICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGFsdGVybmF0ZUFjdGlvbkZvclVSTDooTlNVUkwgKil1cmwgV0tf
QVZBSUxBQkxFKE5BLCBXS19JT1NfVEJBKTsKIC0gKE5TQXJyYXkgKilfYXR0YWNobWVudExpc3RG
b3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FWQUlMQUJMRShOQSwgV0tfSU9TX1RC
QSk7CiAtIChOU1VJbnRlZ2VyKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGluZGV4SW50
b0F0dGFjaG1lbnRMaXN0Rm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVt
ZW50IFdLX0FWQUlMQUJMRShOQSwgV0tfSU9TX1RCQSk7CiAtIChVSUVkZ2VJbnNldHMpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZmluYWxPYnNjdXJlZEluc2V0c0ZvclNjcm9sbFZpZXc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaW50KXZlbG9jaXR5
IHRhcmdldENvbnRlbnRPZmZzZXQ6KGlub3V0IENHUG9pbnQgKil0YXJnZXRDb250ZW50T2Zmc2V0
IFdLX0FWQUlMQUJMRShOQSwgOV8wKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkocmV2aXNpb24gMTk3
NjU1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9k
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVj
b2duaXplcj4gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0
YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3R3b0Zp
bmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxXS0luc3BlY3Rv
ck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcj4gX2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJl
UmVjb2duaXplcjsKIAogICAgIFJldGFpblB0cjxVSVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50
PiBfdGV4dFNlbGVjdGlvbkFzc2lzdGFudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lv
biAxOTc2NTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg2LDYgKzQ4NiwxNCBAQCAtICh2b2lk
KXNldHVwSW50ZXJhY3Rpb24KICAgICBbX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIF9zZXRS
ZXF1aXJlc1F1aWV0SW1wdWxzZTpZRVNdOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVy
Ol9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKKyAgICBfdHdvRmluZ2VyU2lu
Z2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXpl
ciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF90d29GaW5nZXJT
aW5nbGVUYXBHZXN0dXJlUmVjb2duaXplZDopXSk7CisgICAgW190d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplciBzZXRBbGxvd2FibGVNb3ZlbWVudDo2MF07CisgICAgW190d29GaW5n
ZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXROdW1iZXJPZlRhcHNSZXF1aXJlZDoxXTsK
KyAgICBbX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51bWJlck9mVG91
Y2hlc1JlcXVpcmVkOjJdOworICAgIFtfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVsYXlzVG91Y2hlc0VuZGVkIDpOT107CisgICAgW190d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJl
UmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwor
CiAjaWYgSEFWRShMSU5LX1BSRVZJRVcpCiAgICAgW3NlbGYgX3JlZ2lzdGVyUHJldmlld107CiAj
ZW5kaWYKQEAgLTU0Niw2ICs1NTQsOSBAQCAtICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbgogICAg
IFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsK
ICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCisgICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICAg
ICBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQgPSBOTzsKICAgICBpZiAoX2luc3BlY3Rvck5v
ZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcikgewogICAgICAgICBbX2luc3BlY3Rvck5vZGVTZWFy
Y2hHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwpAQCAtNTcyLDYgKzU4Myw3IEBA
IC0gKHZvaWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiByZW1v
dmVHZXN0dXJlUmVjb2duaXplcjpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9ub25CbG9ja2luZ0RvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXpl
cjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxm
IHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiB9CiAKIC0gKHZvaWQpX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMK
QEAgLTU4Miw2ICs1OTQsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJz
CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfbm9uQmxvY2tpbmdE
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwogfQogCiAtIChVSVZpZXcqKXVuc2NhbGVkVmlldwpAQCAtMTI5Myw2
ICsxMzA2LDI1IEBAIC0gKHZvaWQpX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KFUKICAg
ICB9CiB9CiAKKy0gKHZvaWQpX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVkOihV
SVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBfcGFnZS0+
dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCwgKytfbGF0
ZXN0VGFwSUQpOworICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CisgICAgUmV0YWlu
UHRyPFdLQ29udGVudFZpZXc+IHZpZXcgPSBzZWxmOworICAgIFdLV2ViVmlldyAqd2ViVmlldyA9
IF93ZWJWaWV3OworICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHJvdW5kZWRJ
bnRQb2ludChnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCksIFt2aWV3LCB3ZWJWaWV3XShjb25z
dCBTdHJpbmcmIHN0cmluZywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBp
ZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdh
dGVQcml2YXRlPj4oW3dlYlZpZXcgVUlEZWxlZ2F0ZV0pOworICAgICAgICAgICAgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YWx0ZXJuYXRlQWN0
aW9uRm9yVVJMOildKQorICAgICAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OndlYlZp
ZXcgYWx0ZXJuYXRlQWN0aW9uRm9yVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6c3Ry
aW5nXV07CisgICAgICAgICAgICBbdmlldyBfZmluaXNoSW50ZXJhY3Rpb25dOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIFt2aWV3IF9jYW5jZWxJbnRlcmFjdGlvbl07CisgICAgfSk7Cit9
CisKIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXpl
ciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDE5NzY1NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTYsNiArNTU2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb29r
dXBDb250ZXh0QXRQb2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dExvb2t1cENvbnRleHRBdFBvaW50KHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBpZiAoIWlzVmFs
aWQoKSkgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZVR3b0ZpbmdlclRhcEF0
UG9pbnQocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE5NzY1NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1Niw3ICs1NTYsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rpb25Mb2NhdGlvbigpOwogICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uQXBwZWFyYW5jZSgpOwogICAgIHZvaWQgZ2V0TG9va3VwQ29udGV4dEF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotCisgICAgdm9pZCBo
YW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBk
aXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50
LCAxPiYgcXVldWUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTk3NjU1KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBu
YW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEdldExvb2t1cENvbnRleHRBdFBvaW50KFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFNldEFsbG93
c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKKyAgICBIYW5kbGVUd29G
aW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJv
bGxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDE5NzY1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMw
LDYgKzYzMCwxNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRUYXBIaWdobGlnaHRGb3JOb2RlSWZOCiAj
ZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBG
bG9hdFBvaW50IGFkanVzdGVkUG9pbnQ7CisgICAgTm9kZSogbm9kZVJlc3BvbmRpbmdUb0NsaWNr
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9pbnQs
IGFkanVzdGVkUG9pbnQpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAobm9kZVJlc3BvbmRpbmdU
b0NsaWNrICYmIGlzPEVsZW1lbnQ+KCpub2RlUmVzcG9uZGluZ1RvQ2xpY2spKSA/IGRvd25jYXN0
PEVsZW1lbnQ+KG5vZGVSZXNwb25kaW5nVG9DbGljaykgOiBudWxscHRyOworICAgIFN0cmluZyB1
cmw7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNMaW5rKCkpCisgICAgICAgIHVybCA9
IFsoTlNVUkwgKillbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVm
QXR0cikpKSBhYnNvbHV0ZVN0cmluZ107CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTdHJpbmdDYWxsYmFjayh1cmwsIGNhbGxiYWNrSUQpKTsKK30KKwogdm9pZCBXZWJQYWdlOjpw
b3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgbV9wb3RlbnRpYWxUYXBOb2RlID0gbV9wYWdl
LT5tYWluRnJhbWUoKS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9zaXRpb24sIG1fcG90
ZW50aWFsVGFwTG9jYXRpb24pOwo=
</data>
<flag name="review"
          id="297960"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>