<?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>145059</bug_id>
          
          <creation_ts>2015-05-15 10:02:57 -0700</creation_ts>
          <short_desc>[iOS] Remote scrolling tree needs to coordinate scroll snap state during resize/rotations</short_desc>
          <delta_ts>2015-05-18 13:04:07 -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>Layout and Rendering</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>
          <dependson>142590</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1095141</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-15 10:02:57 -0700</bug_when>
    <thetext>This bug is an iOS flavor of Bug 142590, where resize events were not properly updating scroll snap state. In this case, the scroll snap positioning is not correct after a screen rotation.

We need to update the RemoteLayerTree code to notify the WebProcess of new scroll snap positions so that after rotation we can be positioned on the right snap point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095143</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-05-15 10:03:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/20975978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095315</commentid>
    <comment_count>2</comment_count>
      <attachid>253245</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-15 17:24:31 -0700</bug_when>
    <thetext>Created attachment 253245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095317</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-15 17:26:48 -0700</bug_when>
    <thetext>Attachment 253245 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:176:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095322</commentid>
    <comment_count>4</comment_count>
      <attachid>253245</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-15 17:37:51 -0700</bug_when>
    <thetext>Comment on attachment 253245
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1407
&gt; +        CGRect unobscuredRect = UIEdgeInsetsInsetRect(fullViewRect, [self _computedContentInset]);

Would be nice to do just enough work to compute origin.y, rather than everything.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1539
&gt; +            CGPoint currentPoint = [_scrollView contentOffset];
&gt; +            CGPoint activePoint = coordinator-&gt;nearestActiveSnapPoint(unobscuredRect.origin.y, currentPoint);
&gt; +
&gt; +            if (!CGPointEqualToPoint(activePoint, currentPoint)) {

Does this work with zooming?

&gt; Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:90
&gt; +    CGPoint nearestActiveSnapPoint(CGFloat topInset, const CGPoint&amp;) const;

I think it would be good to have &quot;contentOffset&quot; in the name here, maybe contentOffsetOfearestActiveSnapPoint().

&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:126
&gt; +        float potentialSnapPosition = closestSnapOffsetForMainFrameScrolling(WebCore::ScrollEventAxis::Vertical, targetContentOffset-&gt;y, velocity.y, m_currentVerticalSnapPointIndex);
&gt; +        potentialSnapPosition -= topInset;

Are these in the same coordinate space with zooming?

&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:166
&gt; +    if (!root-&gt;isFrameScrollingNode())

is&lt;&gt;

&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:169
&gt; +    ScrollingTreeFrameScrollingNode* rootFrame = static_cast&lt;ScrollingTreeFrameScrollingNode*&gt;(root);

downcast&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095446</commentid>
    <comment_count>5</comment_count>
      <attachid>253245</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-16 15:28:03 -0700</bug_when>
    <thetext>Comment on attachment 253245
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1539
&gt;&gt; +            if (!CGPointEqualToPoint(activePoint, currentPoint)) {
&gt; 
&gt; Does this work with zooming?

Based on my testing, it does. But we (I) should be careful to make sure this is tested thoroughly.

&gt;&gt; Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:90
&gt;&gt; +    CGPoint nearestActiveSnapPoint(CGFloat topInset, const CGPoint&amp;) const;
&gt; 
&gt; I think it would be good to have &quot;contentOffset&quot; in the name here, maybe contentOffsetOfearestActiveSnapPoint().

I changed it to &apos;nearestActiveContentInsetAdjustedSnapPoint&apos;, which is a bit of a mouthful, but is more descriptive of what it does.

&gt;&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:126
&gt;&gt; +        potentialSnapPosition -= topInset;
&gt; 
&gt; Are these in the same coordinate space with zooming?

Yes. The coordinates are both in active view space (both zoomed, or both not-zoomed).

&gt;&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:166
&gt;&gt; +    if (!root-&gt;isFrameScrollingNode())
&gt; 
&gt; is&lt;&gt;

Done!

&gt;&gt; Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:169
&gt;&gt; +    ScrollingTreeFrameScrollingNode* rootFrame = static_cast&lt;ScrollingTreeFrameScrollingNode*&gt;(root);
&gt; 
&gt; downcast&lt;&gt;

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095454</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-16 16:01:34 -0700</bug_when>
    <thetext>Committed r184439: &lt;http://trac.webkit.org/changeset/184439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095657</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-18 13:04:07 -0700</bug_when>
    <thetext>*** Bug 136005 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253245</attachid>
            <date>2015-05-15 17:24:31 -0700</date>
            <delta_ts>2015-05-15 17:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145059-20150515172307.patch</filename>
            <type>text/plain</type>
            <size>12369</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDQyMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA1LTE1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFJlbW90ZSBzY3Jv
bGxpbmcgdHJlZSBuZWVkcyB0byBjb29yZGluYXRlIHNjcm9sbCBzbmFwIHN0YXRlIGR1cmluZyBy
ZXNpemUvcm90YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDUwNTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwOTc1OTc4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB3ZWIgdmlldyBu
ZWVkcyB0byB1cGRhdGUgaXRzIHNjcm9sbCBzbmFwIHBvaW50IG9mZnNldHMgdG8gdGFrZSBpbnRv
IGFjY291bnQgYW55CisgICAgICAgIGFkanVzdG1lbnRzIHRvIHRoZSB2aWV3IHNpemUgY2F1c2Vk
IGJ5IGNvbnRlbnQgaW5zZXRzLiBXZSBhbHNvIG5lZWQgdG8gdXBkYXRlIHRoZQorICAgICAgICBv
ZmZzdGVzIGFmdGVyIGRldmljZSByb3RhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Nyb2xsVmlld1dpbGxF
bmREcmFnZ2luZzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKTogUmV0cmlldmUg
dGhlIHByb3BlcgorICAgICAgICBjb21wdXRlZCBjb250ZW50IGluc2V0IGZvciB0aGUgdmlldyBh
bmQgaW5jb3Jwb3JhdGUgaW50byBhbnkgc2Nyb2xsIHNuYXAgcG9pbnQgYWRqdXN0bWVudHMuCisg
ICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10pOiBJZiB3ZSBo
YXZlIGFjdGl2ZSBzY3JvbGwgc25hcCBwb2ludHMsIAorICAgICAgICAqIFVJUHJvY2Vzcy9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6YWRqdXN0VGFyZ2V0Q29u
dGVudE9mZnNldEZvclNuYXBwaW5nKTogVXBkYXRlIHRvIGFjY291bnQKKyAgICAgICAgZm9yIGNv
bnRlbnQgaW5zZXQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcpOiBBbHNvIHZhbGlkYXRlIHRo
YXQgdGhlCisgICAgICAgIGFjdGl2ZSBpbmRleCBpcyB2YWxpZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWlu
RnJhbWVTY3JvbGxpbmcpOiBVcGRhdGUgdG8gdHJhY2sKKyAgICAgICAgY3VycmVudCBhY3RpdmUg
c25hcCBvZmZzZXQgaW5kZXguCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlU25hcFBvaW50
KTogQWRkZWQuIEl0IGNhbGN1bGF0ZXMgdGhlIHByb3BlcgorICAgICAgICBzY3JvbGwgcG9zaXRp
b24gaW5jb3Jwb3JhdGluZyBhbnkgc25hcCBwb2ludCBhbmQgY29udGVudCBpbnNldHMuCisKIDIw
MTUtMDUtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBGYWlsIHRvIGxvYWQgb2xkIGNvbnRlbnQgZXh0
ZW5zaW9uIGZpbGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMTg0MzkzKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MDIsNyAr
MTQwMiwxMSBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2NyCiAgICAg
aWYgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3Ig
PSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBIZXJlLCBJJ20gZmluZGluZyB0aGUgbWF4aW11bSBob3Jpem9udGFsL3ZlcnRpY2FsIHNjcm9s
bCBvZmZzZXRzLiBUaGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLgogICAg
ICAgICBDR1NpemUgbWF4U2Nyb2xsT2Zmc2V0cyA9IENHU2l6ZU1ha2Uoc2Nyb2xsVmlldy5jb250
ZW50U2l6ZS53aWR0aCAtIHNjcm9sbFZpZXcuYm91bmRzLnNpemUud2lkdGgsIHNjcm9sbFZpZXcu
Y29udGVudFNpemUuaGVpZ2h0IC0gc2Nyb2xsVmlldy5ib3VuZHMuc2l6ZS5oZWlnaHQpOwotICAg
ICAgICBjb29yZGluYXRvci0+YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKG1h
eFNjcm9sbE9mZnNldHMsIHZlbG9jaXR5LCB0YXJnZXRDb250ZW50T2Zmc2V0KTsKKyAgICAgICAg
CisgICAgICAgIENHUmVjdCBmdWxsVmlld1JlY3QgPSBzZWxmLmJvdW5kczsKKyAgICAgICAgQ0dS
ZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KGZ1bGxWaWV3UmVjdCwg
W3NlbGYgX2NvbXB1dGVkQ29udGVudEluc2V0XSk7CisgICAgICAgIAorICAgICAgICBjb29yZGlu
YXRvci0+YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKG1heFNjcm9sbE9mZnNl
dHMsIHZlbG9jaXR5LCB1bm9ic2N1cmVkUmVjdC5vcmlnaW4ueSwgdGFyZ2V0Q29udGVudE9mZnNl
dCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNTIyLDYgKzE1MjYsMjYgQEAgLSAodm9pZClfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgIGlmIChpc1N0YWJsZVN0YXRlICYmIFtfc2Nyb2xs
VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJh
dGlvbildKQogICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtfc2Nyb2xsVmlldyBwZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbildOwogCisjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyAgICBpZiAo
aXNTdGFibGVTdGF0ZSkgeworICAgICAgICBXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkqIGNvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHko
KTsKKyAgICAgICAgaWYgKGNvb3JkaW5hdG9yICYmIGNvb3JkaW5hdG9yLT5oYXNBY3RpdmVTbmFw
UG9pbnQoKSkgeworICAgICAgICAgICAgQ0dSZWN0IGZ1bGxWaWV3UmVjdCA9IHNlbGYuYm91bmRz
OworICAgICAgICAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRS
ZWN0KGZ1bGxWaWV3UmVjdCwgW3NlbGYgX2NvbXB1dGVkQ29udGVudEluc2V0XSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIENHUG9pbnQgY3VycmVudFBvaW50ID0gW19zY3JvbGxWaWV3IGNv
bnRlbnRPZmZzZXRdOworICAgICAgICAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9IGNvb3JkaW5h
dG9yLT5uZWFyZXN0QWN0aXZlU25hcFBvaW50KHVub2JzY3VyZWRSZWN0Lm9yaWdpbi55LCBjdXJy
ZW50UG9pbnQpOworCisgICAgICAgICAgICBpZiAoIUNHUG9pbnRFcXVhbFRvUG9pbnQoYWN0aXZl
UG9pbnQsIGN1cnJlbnRQb2ludCkpIHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8V0tTY3Jv
bGxWaWV3PiBzdHJvbmdTY3JvbGxWaWV3ID0gX3Njcm9sbFZpZXc7CisgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Njcm9sbFZp
ZXcsIGFjdGl2ZVBvaW50XSB7CisgICAgICAgICAgICAgICAgICAgIFtzdHJvbmdTY3JvbGxWaWV3
IHNldENvbnRlbnRPZmZzZXQ6YWN0aXZlUG9pbnQgYW5pbWF0ZWQ6Tk9dOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgCiAg
ICAgW19jb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxlUmVjdDp2aXNpYmxlUmVjdEluQ29udGVu
dENvb3JkaW5hdGVzCiAgICAgICAgIHVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXMKICAgICAgICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlczp1bm9ic2N1cmVkUmVjdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgJKHJldmlzaW9uIDE4NDM5MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2ls
bFN0YXJ0U2Nyb2xsKCk7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbCgp
OwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCBhZGp1c3RUYXJnZXRDb250
ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbERpbWVuc2lvbnMsIENHUG9pbnQg
dmVsb2NpdHksIENHUG9pbnQqIHRhcmdldENvbnRlbnRPZmZzZXQpIGNvbnN0OworICAgIHZvaWQg
YWRqdXN0VGFyZ2V0Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxEaW1l
bnNpb25zLCBDR1BvaW50IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50KiB0YXJn
ZXRDb250ZW50T2Zmc2V0KTsKKyAgICBib29sIGhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0Owor
ICAgIENHUG9pbnQgbmVhcmVzdEFjdGl2ZVNuYXBQb2ludChDR0Zsb2F0IHRvcEluc2V0LCBjb25z
dCBDR1BvaW50JikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRTZXRTY3JvbGxWaWV3RGVjZWxlcmF0
aW9uUmF0ZUZhc3QoKSBjb25zdDsKICNlbmRpZgogI2VuZGlmCkBAIC05NCwxMiArOTYsMTYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbm5lY3RTdGF0ZU5vZGVMYXllcnMoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVUcmVlJiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYpOwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5n
KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpcykgY29uc3Q7Ci0gICAgZmxvYXQgY2xvc2VzdFNuYXBP
ZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzLCBmbG9h
dCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHkpIGNvbnN0OworICAgIGZsb2F0IGNs
b3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9jaXR5LCB1bnNpZ25lZCYg
Y2xvc2VzdEluZGV4KSBjb25zdDsKICNlbmRpZgogCiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBh
Z2VQcm94eTsKICAgICBSZWZQdHI8UmVtb3RlU2Nyb2xsaW5nVHJlZT4gbV9zY3JvbGxpbmdUcmVl
OwogICAgIFJlcXVlc3RlZFNjcm9sbEluZm8qIG1fcmVxdWVzdGVkU2Nyb2xsSW5mbzsKKyNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4IHsgMCB9OworI2VuZGlmCiAgICAgYm9vbCBtX3Byb3BhZ2F0ZXNNYWluRnJhbWVT
Y3JvbGxzOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQko
cmV2aXNpb24gMTg0MzkzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTYg
KzExMywxNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNjCiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OjphZGp1c3RUYXJnZXRDb250ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1h
eFNjcm9sbE9mZnNldHMsIENHUG9pbnQgdmVsb2NpdHksIENHUG9pbnQqIHRhcmdldENvbnRlbnRP
ZmZzZXQpIGNvbnN0Cit2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmFkanVz
dFRhcmdldENvbnRlbnRPZmZzZXRGb3JTbmFwcGluZyhDR1NpemUgbWF4U2Nyb2xsT2Zmc2V0cywg
Q0dQb2ludCB2ZWxvY2l0eSwgQ0dGbG9hdCB0b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVu
dE9mZnNldCkKIHsKICAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4U2Nyb2xsT2Zm
c2V0cyBpcyB0byBlbnN1cmUgdGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBydWJiZXItYmFu
ZGluZyB3aGVuIHNjcm9sbGluZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KICAgICBpZiAoc2hv
dWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwpICYmIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPiAwICYmIHRhcmdldENvbnRlbnRP
ZmZzZXQtPnggPCBtYXhTY3JvbGxPZmZzZXRzLndpZHRoKSB7Ci0gICAgICAgIGZsb2F0IHBvdGVu
dGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5n
KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdGFyZ2V0Q29udGVudE9mZnNl
dC0+eCwgdmVsb2NpdHkueCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9
IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCwgdGFyZ2V0Q29udGVudE9mZnNldC0+eCwgdmVsb2NpdHkueCwg
bV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKICAgICAgICAgdGFyZ2V0Q29udGVu
dE9mZnNldC0+eCA9IHN0ZDo6bWluPGZsb2F0PihtYXhTY3JvbGxPZmZzZXRzLndpZHRoLCBwb3Rl
bnRpYWxTbmFwUG9zaXRpb24pOwogICAgIH0KLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBhY2Nv
dW50IGZvciBob3cgdGhlIHRvcCBuYXZpZ2F0aW9uIGJhciBjaGFuZ2VzIGluIHNpemUuCisKICAg
ICBpZiAoc2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhXZWJDb3JlOjpTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsKSAmJiB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID4gMCAmJiB0YXJnZXRD
b250ZW50T2Zmc2V0LT55IDwgbWF4U2Nyb2xsT2Zmc2V0cy5oZWlnaHQpIHsKLSAgICAgICAgZmxv
YXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVT
Y3JvbGxpbmcoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdGFyZ2V0Q29udGVu
dE9mZnNldC0+eSwgdmVsb2NpdHkueSk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3Np
dGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFdlYkNvcmU6OlNj
cm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHRhcmdldENvbnRlbnRPZmZzZXQtPnksIHZlbG9jaXR5
LnksIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOworICAgICAgICBwb3RlbnRpYWxT
bmFwUG9zaXRpb24gLT0gdG9wSW5zZXQ7CiAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkg
PSBzdGQ6Om1pbjxmbG9hdD4obWF4U2Nyb2xsT2Zmc2V0cy5oZWlnaHQsIHBvdGVudGlhbFNuYXBQ
b3NpdGlvbik7CiAgICAgfQogfQpAQCAtMTM4LDIzICsxMzksNjkgQEAgYm9vbCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpzaAogICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVT
Y3JvbGxpbmdOb2RlKCkpIHsKICAgICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZSogcm9vdEZyYW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZSo+KHJvb3QpOwogICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4
aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFs
U25hcE9mZnNldHMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwotICAgICAg
ICByZXR1cm4gc25hcE9mZnNldHMuc2l6ZSgpID4gMDsKKyAgICAgICAgdW5zaWduZWQgY3VycmVu
dEluZGV4ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4
OworICAgICAgICByZXR1cm4gKHNuYXBPZmZzZXRzLnNpemUoKSA+IDApICYmIChjdXJyZW50SW5k
ZXggPCBzbmFwT2Zmc2V0cy5zaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0
Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxE
ZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHkpIGNvbnN0CitmbG9hdCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhT
Y3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb24sIGZsb2F0IHZlbG9j
aXR5LCB1bnNpZ25lZCYgY3VycmVudEluZGV4KSBjb25zdAogewogICAgIFNjcm9sbGluZ1RyZWVO
b2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAgIEFTU0VSVChyb290
ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkpOwogICAgIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUqIHJvb3RGcmFtZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUqPihyb290KTsKICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zm
c2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5o
b3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0cygp
OwogCi0gICAgdW5zaWduZWQgaWdub3JlID0gMDsKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0
aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29u
dGVudFNjYWxlKCk7Ci0gICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25h
cE9mZnNldDxmbG9hdCwgZmxvYXQ+KHNuYXBPZmZzZXRzLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlv
biwgdmVsb2NpdHksIGlnbm9yZSk7CisgICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBj
bG9zZXN0U25hcE9mZnNldDxmbG9hdCwgZmxvYXQ+KHNuYXBPZmZzZXRzLCBzY2FsZWRTY3JvbGxE
ZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRleCk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nl
c3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9
CisKK2Jvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6aGFzQWN0aXZlU25hcFBv
aW50KCkgY29uc3QKK3sKKyAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5n
VHJlZS0+cm9vdE5vZGUoKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZyYW1l
ID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwor
ICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290RnJhbWUtPmhvcml6b250
YWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9v
dEZyYW1lLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisKKyAgICBpZiAoaG9yaXpvbnRhbC5pc0Vt
cHR5KCkgJiYgdmVydGljYWwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAobV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID49IGhvcml6b250YWwuc2l6
ZSgpIHx8IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXggPj0gdmVydGljYWwuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIHJldHVybiB0cnVlOworfQor
ICAgIAorQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0
aXZlU25hcFBvaW50KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQb2lu
dCkgY29uc3QKK3sKKyAgICBDR1BvaW50IGFjdGl2ZVBvaW50ID0gY3VycmVudFBvaW50OworCisg
ICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7
CisgICAgQVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7CisgICAg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZyYW1lID0gc3RhdGljX2Nhc3Q8
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOworICAgIGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIGhvcml6b250YWwgPSByb290RnJhbWUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygp
OworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdEZyYW1lLT52ZXJ0aWNh
bFNuYXBPZmZzZXRzKCk7CisKKyAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4U2Ny
b2xsT2Zmc2V0cyBpcyB0byBlbnN1cmUgdGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBydWJi
ZXItYmFuZGluZyB3aGVuIHNjcm9sbGluZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KKyAgICBp
ZiAoIWhvcml6b250YWwuaXNFbXB0eSgpICYmIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCA8IGhvcml6b250YWwuc2l6ZSgpKQorICAgICAgICBhY3RpdmVQb2ludC54ID0gaG9yaXpv
bnRhbFttX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXhdICogbV93ZWJQYWdlUHJveHku
ZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CisKKyAgICBpZiAoIXZlcnRpY2FsLmlzRW1wdHkoKSAm
JiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IDwgdmVydGljYWwuc2l6ZSgpKSB7Cisg
ICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IHZlcnRpY2FsW21fY3VycmVudFZl
cnRpY2FsU25hcFBvaW50SW5kZXhdICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNj
YWxlKCk7CisgICAgICAgIHBvdGVudGlhbFNuYXBQb3NpdGlvbiAtPSB0b3BJbnNldDsKKyAgICAg
ICAgYWN0aXZlUG9pbnQueSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKKyAgICB9CisKKyAgICBy
ZXR1cm4gYWN0aXZlUG9pbnQ7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="278121"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>