<?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>137182</bug_id>
          
          <creation_ts>2014-09-27 14:44:42 -0700</creation_ts>
          <short_desc>[iOS] Add basic support for link navigation in WKPDFView</short_desc>
          <delta_ts>2014-09-29 11:05:44 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>ap</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037704</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-27 14:44:42 -0700</bug_when>
    <thetext>[iOS] Add basic support for link navigation in WKPDFView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037708</commentid>
    <comment_count>1</comment_count>
      <attachid>238791</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-27 15:16:30 -0700</bug_when>
    <thetext>Created attachment 238791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037709</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-27 15:17:21 -0700</bug_when>
    <thetext>rdar://problem/18334903</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037720</commentid>
    <comment_count>3</comment_count>
      <attachid>238791</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-09-27 19:26:39 -0700</bug_when>
    <thetext>Comment on attachment 238791
Patch

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

Thank you!

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1108
&gt; +    const int numberOfClicks = 1;

Ehh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037724</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-27 20:26:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 238791 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238791&amp;action=review
&gt; 
&gt; Thank you!
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1108
&gt; &gt; +    const int numberOfClicks = 1;
&gt; 
&gt; Ehh.

Well, it wasn&apos;t immediately obvious to me what the detail argument represented so I wanted to document the magic number. I don&apos;t mind removing it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037726</commentid>
    <comment_count>5</comment_count>
      <attachid>238791</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-09-27 20:38:55 -0700</bug_when>
    <thetext>Comment on attachment 238791
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1108
&gt;&gt;&gt; +    const int numberOfClicks = 1;
&gt;&gt; 
&gt;&gt; Ehh.
&gt; 
&gt; Well, it wasn&apos;t immediately obvious to me what the detail argument represented so I wanted to document the magic number. I don&apos;t mind removing it though.

Ah, I didn&apos;t see the odd argument name. Leave it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037787</commentid>
    <comment_count>6</comment_count>
      <attachid>238791</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-28 11:34:22 -0700</bug_when>
    <thetext>Comment on attachment 238791
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:53
&gt; +static const int64_t linkFollowingDelayInNS = 200000000; // .2 seconds

Can something from std::chrono be used here to avoid the annoying InNS suffix, as well as potential for mixing up the units?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:315
&gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, linkFollowingDelayInNS), dispatch_get_main_queue(), ^ {

Does this move execution to a different thread? If it does, then there are thread safety issues here. Notably, implicit capturing of urlString creates a race between its destruction in original thread and in the main thread.

I don&apos;t understand the delay. Is it just to show highlight? It seems worth a comment.

&gt;&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1108
&gt;&gt;&gt;&gt; +    const int numberOfClicks = 1;
&gt;&gt;&gt; 
&gt;&gt;&gt; Ehh.
&gt;&gt; 
&gt;&gt; Well, it wasn&apos;t immediately obvious to me what the detail argument represented so I wanted to document the magic number. I don&apos;t mind removing it though.
&gt; 
&gt; Ah, I didn&apos;t see the odd argument name. Leave it!

Maybe &quot;singleClick&quot; or &quot;simulateSingleClick&quot; would be a better name? Even before seeing Tim&apos;s comment, I didn&apos;t like the name, but wasn&apos;t sure if it was just me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037891</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-29 00:47:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 238791 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238791&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:53
&gt; &gt; +static const int64_t linkFollowingDelayInNS = 200000000; // .2 seconds
&gt; 
&gt; Can something from std::chrono be used here to avoid the annoying InNS suffix, as well as potential for mixing up the units?

Yes, good idea. I&apos;ll use std::chrono::nanoseconds.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:315
&gt; &gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, linkFollowingDelayInNS), dispatch_get_main_queue(), ^ {
&gt; 
&gt; Does this move execution to a different thread? If it does, then there are thread safety issues here. Notably, implicit capturing of urlString creates a race between its destruction in original thread and in the main thread.

No, CorePDF delivers the delegate message on the main thread. I can add a ASSERT_CURRENT_DISPATCH_QUEUE_IS(dispatch_get_main_queue()).

&gt; 
&gt; I don&apos;t understand the delay. Is it just to show highlight? It seems worth a comment.
&gt; 

Yes, it&apos;s to show a highlight. I&apos;ll add a comment.

&gt; &gt;&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1108
&gt; &gt;&gt;&gt;&gt; +    const int numberOfClicks = 1;
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Ehh.
&gt; &gt;&gt; 
&gt; &gt;&gt; Well, it wasn&apos;t immediately obvious to me what the detail argument represented so I wanted to document the magic number. I don&apos;t mind removing it though.
&gt; &gt; 
&gt; &gt; Ah, I didn&apos;t see the odd argument name. Leave it!
&gt; 
&gt; Maybe &quot;singleClick&quot; or &quot;simulateSingleClick&quot; would be a better name? Even before seeing Tim&apos;s comment, I didn&apos;t like the name, but wasn&apos;t sure if it was just me.

Ok, I think singleClick is good.

Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037892</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-29 01:40:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; 
&gt; No, CorePDF delivers the delegate message on the main thread. I can add a ASSERT_CURRENT_DISPATCH_QUEUE_IS(dispatch_get_main_queue()).

Oh, we don&apos;t have ASSERT_CURRENT_DISPATCH_QUEUE_IS(), but I guess I just need ASSERT(isMainThread()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037991</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-29 11:05:44 -0700</bug_when>
    <thetext>Committed r174072: &lt;http://trac.webkit.org/changeset/174072&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238791</attachid>
            <date>2014-09-27 15:16:30 -0700</date>
            <delta_ts>2014-09-28 11:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137182-20140927151630.patch</filename>
            <type>text/plain</type>
            <size>10978</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmQ2ZjdmNGI1ZWVhMjNl
ZDZiMDMyNGQwMmM1M2IyMmI3YjI4Y2UxNC4uNGI5MDJlNDkyYjhiNWY4ZWJhM2JlZDQ1MGNhODI4
OWM1MzA2OGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE0LTA5LTI3ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZGQgYmFzaWMgc3Vw
cG9ydCBmb3IgbGluayBuYXZpZ2F0aW9uIGluIFdLUERGVmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggV0tQREZWaWV3IHRvIG5hdmlnYXRl
IHRvIFVSTHMgd2hlbiBQREYgbGluayBhbm5vdGF0aW9ucyBhcmUgdGFwcGVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bmF2aWdhdGVUb1VSTFdpdGhTaW11bGF0ZWRDbGljayk6IFNlbnQgTWVzc2FnZXM6Oldl
YlBhZ2U6Ok5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2suCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERG
VmlldyBfY2xlYXJQYWdlc10pOiBSZW1vdmVkIHNlbGYgYXMgdGhlIFVJUERGQW5ub3RhdGlvbkNv
bnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9yZXZhbGlkYXRlVmlld3Nd
KTogQWRkZWQgc2VsZiBhcyB0aGUgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlLgor
ICAgICAgICAoLVtXS1BERlZpZXcgYW5ub3RhdGlvbjp3YXNUb3VjaGVkQXRQb2ludDpjb250cm9s
bGVyOl0pOiBSZXRyaWV2ZWQgdGhlIFVSTCBmcm9tIHRoZSB0b3VjaGVkIGFubm90YXRpb24sCisg
ICAgICAgIGNvbXB1dGVkIHRoZSB0b3VjaGVkIHBvaW50IHJlbGF0aXZlIHRvIHRoZSBXS1BERlZp
ZXcgYW5kIHRvIHRoZSBzY3JlZW4sIGFuZCBjYWxsZWQKKyAgICAgICAgbmF2aWdhdGVUb1VSTFdp
dGhTaW11bGF0ZWRDbGljaygpIGFmdGVyIGEgMjAwIG1zIGRlbGF5ICh0byBtYXRjaCBVSVdlYlBE
RlZpZXcpLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bmF2aWdhdGVUb1VSTFdpdGhTaW11bGF0ZWRDbGljayk6IENy
ZWF0ZWQgYSBmYWtlIHNpbmdsZS1jbGljayBNb3VzZUV2ZW50IGFuZCBjYWxsZWQKKyAgICAgICAg
RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKCkuIENyZWF0aW5nIGEgbW91c2UgZXZlbnQgZW5zdXJl
cyB0aGF0IHRoZSBuYXZpZ2F0aW9uIGFwcGVhcnMgYXMgYQorICAgICAgICBOYXZpZ2F0aW9uVHlw
ZUxpbmtDbGlja2VkIGluIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlcy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE0LTA5LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGluY29ycmVjdCB1c2Ugb2YgdGhlIEJLU1Byb2Nl
c3NBc3NlcnRpb25BbGxvd1N1c3BlbmRPblNsZWVwIGZsYWcgZm9yIHByb2Nlc3Mgc3VzcGVuc2lv
biBpbiBpT1MgV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA0NDgwMTczMTcxNjBiNmYwNDk5YmQ5NWQwMWZlYjU4YWVhMThiMzAwLi5mYzRjZmQ2
NTA5MTE0NmUzMmFjZWRkNmE1ODM0ZTIxMjViY2IwMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODQ4LDYgKzg0OCwxOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6
T2JqZWN0KiB1cwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgp
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1VSTFdpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2Ny
ZWVuUG9pbnQpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghaXNWYWxpZCgpKQorICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworCisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvVVJMV2l0aFNpbXVs
YXRlZENsaWNrKHVybCwgZG9jdW1lbnRQb2ludCwgc2NyZWVuUG9pbnQpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7Cit9CisKIHZvaWQg
V2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmJmZjIzZmFjZWZiM2FmNDVh
ZmVlNDFiMmMyOTZjNmE2OTA4MDNjOS4uYWZkYTk0ODA5YTM0ZTgyZDE1MzQ3NjIwOTIyZGQ5N2Jl
MDhhZjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzA4
LDYgKzMwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNv
bnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAg
ICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRh
KiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CisgICAgdm9pZCBuYXZpZ2F0ZVRv
VVJMV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2lu
dCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAKICAgICB2
b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgdWludDY0X3QgcmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9y
aWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaAppbmRleCAwZDlj
MDk3Zjk3ZDZmZmVjOGRiOTZlMTQ0YWE3YzViOTQzNDZhNTJlLi4xOTA0OTkxODE1NmIwM2M2ZDM1
ZGQ5YzlhMDE4MTFjM2ZiNTIxZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3LmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9y
dCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCisjaW1wb3J0IDxDb3JlUERGL1VJUERGQW5u
b3RhdGlvbkNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgog
I2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAKLUBpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3
IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZT4KK0BpbnRl
cmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFVJUERG
UGFnZVZpZXdEZWxlZ2F0ZSwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRlPgogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFt
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dQREZEb2N1bWVudFJlZiBwZGZE
b2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXgg
ZGMxNDRmOWUyNGRlMGZkMGRkNzgwMzJiYTU0ZmIwZTlmZGU1MjRjNi4uOWFkMTQwOGRiYjY1YjJi
YzRkMTY3YTIyMjQwZWNkNDg4OTE1MTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS1BERlZpZXcubW0KQEAgLTMwLDcgKzMwLDkgQEAKIAogI2ltcG9ydCAiV0tQREZQYWdlTnVt
YmVySW5kaWNhdG9yLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxDb3JlUERGL1VJUERGRG9jdW1lbnQuaD4KKyNpbXBv
cnQgPENvcmVQREYvVUlQREZMaW5rQW5ub3RhdGlvbi5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBE
RlBhZ2UuaD4KICNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgogI2ltcG9ydCA8VUlL
aXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KQEAgLTQ4LDYgKzUwLDggQEAgY29uc3QgZmxvYXQg
b3ZlcmRyYXdIZWlnaHRNdWx0aXBsaWVyID0gMS41OwogCiBzdGF0aWMgY29uc3QgQ0dGbG9hdCBz
bWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7CiAKK3N0YXRpYyBjb25zdCBp
bnQ2NF90IGxpbmtGb2xsb3dpbmdEZWxheUluTlMgPSAyMDAwMDAwMDA7IC8vIC4yIHNlY29uZHMK
KwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIENHUmVjdCBmcmFtZTsKICAgICBSZXRhaW5QdHI8VUlQ
REZQYWdlVmlldz4gdmlldzsKQEAgLTExMCw2ICsxMTQsNyBAQCAtICh2b2lkKV9jbGVhclBhZ2Vz
CiAgICAgZm9yIChhdXRvJiBwYWdlIDogX3BhZ2VzKSB7CiAgICAgICAgIFtwYWdlLnZpZXcgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgIFtwYWdlLnZpZXcgc2V0RGVsZWdhdGU6bmlsXTsK
KyAgICAgICAgW1twYWdlLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERlbGVnYXRlOm5p
bF07CiAgICAgfQogICAgIAogICAgIF9wYWdlcy5jbGVhcigpOwpAQCAtMTc5LDYgKzE4NCw3IEBA
IC0gKHZvaWQpX3JldmFsaWRhdGVWaWV3cwogICAgICAgICBwYWdlSW5mby52aWV3ID0gYWRvcHRO
UyhbW1VJUERGUGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlSW5mby5wYWdlLmdldCgp
IHRpbGVkQ29udGVudDpZRVNdKTsKICAgICAgICAgW3BhZ2VJbmZvLnZpZXcgc2V0VXNlQmFja2lu
Z0xheWVyOllFU107CiAgICAgICAgIFtwYWdlSW5mby52aWV3IHNldERlbGVnYXRlOnNlbGZdOwor
ICAgICAgICBbW3BhZ2VJbmZvLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERlbGVnYXRl
OnNlbGZdOwogICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3OnBhZ2VJbmZvLnZpZXcuZ2V0KCldOwog
CiAgICAgICAgIFtwYWdlSW5mby52aWV3IHNldEZyYW1lOnBhZ2VJbmZvLmZyYW1lXTsKQEAgLTI1
OSw2ICsyNjUsNyBAQCAtICh2b2lkKV9jb21wdXRlUGFnZUFuZERvY3VtZW50RnJhbWVzCiAgICAg
W19zY3JvbGxWaWV3IHNldENvbnRlbnRTaXplOm5ld0ZyYW1lLnNpemVdOwogfQogCisjcHJhZ21h
IG1hcmsgVUlQREZQYWdlVmlld0RlbGVnYXRlCiAKIC0gKHZvaWQpem9vbTooVUlQREZQYWdlVmll
dyAqKXBhZ2VWaWV3IHRvOihDR1JlY3QpdGFyZ2V0UmVjdCBhdFBvaW50OihDR1BvaW50KW9yaWdp
biBraW5kOihVSVBERk9iamVjdEtpbmQpa2luZAogewpAQCAtMjg4LDYgKzI5NSwyOCBAQCAtICh2
b2lkKXJlc2V0Wm9vbTooVUlQREZQYWdlVmlldyAqKXBhZ2VWaWV3CiAgICAgX2lzU3RhcnRpbmda
b29tID0gTk87CiB9CiAKKyNwcmFnbWEgbWFyayBVSVBERkFubm90YXRpb25Db250cm9sbGVyRGVs
ZWdhdGUKKworLSAodm9pZClhbm5vdGF0aW9uOihVSVBERkFubm90YXRpb24gKilhbm5vdGF0aW9u
IHdhc1RvdWNoZWRBdFBvaW50OihDR1BvaW50KXBvaW50IGNvbnRyb2xsZXI6KFVJUERGQW5ub3Rh
dGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyCit7CisgICAgaWYgKCFbYW5ub3RhdGlvbiBpc0tp
bmRPZkNsYXNzOltVSVBERkxpbmtBbm5vdGF0aW9uIGNsYXNzXV0pCisgICAgICAgIHJldHVybjsK
KworICAgIFVJUERGTGlua0Fubm90YXRpb24gKmxpbmtBbm5vdGF0aW9uID0gKFVJUERGTGlua0Fu
bm90YXRpb24gKilhbm5vdGF0aW9uOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBsaW5rQW5ub3Rh
dGlvbi51cmwuYWJzb2x1dGVTdHJpbmc7CisgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHBhZ2VOdW1iZXIgbmF2aWdh
dGlvbnMKKworICAgIENHUG9pbnQgZG9jdW1lbnRQb2ludCA9IFtjb250cm9sbGVyLnBhZ2VWaWV3
IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl07CisgICAgQ0dQb2ludCBzY3JlZW5Qb2lu
dCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UG9pbnQ6W3NlbGYgY29udmVydFBvaW50OmRvY3VtZW50
UG9pbnQgdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiByZXRhaW5lZFdlYlZpZXcgPSBfd2ViVmlldzsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRj
aF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBsaW5rRm9sbG93aW5nRGVsYXlJbk5TKSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2Ut
Pm5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCByb3VuZGVkSW50UG9p
bnQoZG9jdW1lbnRQb2ludCksIHJvdW5kZWRJbnRQb2ludChzY3JlZW5Qb2ludCkpOworICAgIH0p
OworfQorCiBAZW5kCiAKICNlbmRpZiAvKiBQTEFURk9STShJT1MpICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2NjNjNiNTMxNDY1Mzg4
OTg1ODlmM2EyYmU4NWY2NDQ5Nzk2OWE5Ny4uYjkwNGQ1OWUzZTg4MThkOTBmNGZhZTAxMjFkYzY2
N2M2OWNmNjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVz
b3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhVHJhbnNmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIu
aD4KQEAgLTEwOTcsNiArMTA5OCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRXZWJBcmNoaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRhLCBJUEM6OgogICAgIGxv
YWREYXRhSW1wbCgwLCBzaGFyZWRCdWZmZXIsIEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veC13
ZWJhcmNoaXZlIiksIEFTQ0lJTGl0ZXJhbCgidXRmLTE2IiksIGJsYW5rVVJMKCksIFVSTCgpLCBk
ZWNvZGVyKTsKIH0KIAordm9pZCBXZWJQYWdlOjpuYXZpZ2F0ZVRvVVJMV2l0aFNpbXVsYXRlZENs
aWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBz
Y3JlZW5Qb2ludCkKK3sKKyAgICBGcmFtZSogbWFpbkZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpOworICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1haW5GcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIW1haW5GcmFtZURvY3VtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBjb25zdCBpbnQgbnVtYmVyT2ZDbGlja3MgPSAxOworICAgIFJlZlB0cjxNb3VzZUV2ZW50
PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
LCB0cnVlLCB0cnVlLCBjdXJyZW50VGltZSgpLCBudWxscHRyLCBudW1iZXJPZkNsaWNrcywgc2Ny
ZWVuUG9pbnQueCgpLCBzY3JlZW5Qb2ludC55KCksIGRvY3VtZW50UG9pbnQueCgpLCBkb2N1bWVu
dFBvaW50LnkoKSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGxwdHIsIG51bGxw
dHIpOworICAgIG1haW5GcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQobWFpbkZyYW1lRG9jdW1l
bnQtPmNvbXBsZXRlVVJMKHVybCksIGVtcHR5U3RyaW5nKCksIG1vdXNlRXZlbnQucmVsZWFzZSgp
LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBTaG91bGRTZW5kUmVm
ZXJyZXI6Ok1heWJlU2VuZFJlZmVycmVyKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGlu
Z0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiN2Q0NDhjOTY4MDBhZjlmZGJkN2E0MDI0ZWJl
NDgzODM2MjYzMzNlLi5jYTQ2YmEwYThhNDU0ZTY5ZjczMjllMjMwMzQ3NzIyZTMxMDkwMDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTkwMCw2
ICs5MDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29u
c3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgdW5yZWFjaGFibGVVUkwsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGxvYWRQ
bGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAg
IHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIElQQzo6
TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIG5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xp
Y2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdl
YkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKICAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0ZvcndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IGViZjcyMGRjMTExMDExMWYyNTkyZTZjMWRjNzlmODQ5MTQzY2U3
ZDQuLmU5OTI1NGIzZTdmNWQyNzg0Y2U0MDA0Mzg3YzdiMmQyNWI2ZDhhZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0xMjUsNiArMTI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoU3RyaW5nIGh0bWxTdHJpbmcsIFN0cmluZyBi
YXNlVVJMLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNz
YWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBMb2FkUGxhaW5UZXh0U3RyaW5nKFN0
cmluZyBzdHJpbmcsIFdlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0
YSkgVmFyaWFkaWMKICAgICBMb2FkV2ViQXJjaGl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIHdl
YkFyY2hpdmVEYXRhLCBXZWJLaXQ6OldlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRh
dGEpIFZhcmlhZGljCisgICAgTmF2aWdhdGVUb1VSTFdpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcg
dXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Qb2ludCkKIAogICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVs
b2FkRnJvbU9yaWdpbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKICAgICBTdG9wTG9hZGluZygpCg==
</data>
<flag name="review"
          id="263520"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>