<?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>164340</bug_id>
          
          <creation_ts>2016-11-02 14:01:47 -0700</creation_ts>
          <short_desc>REGRESSION (r206247): Painting milestones can be delayed until the next layer flush</short_desc>
          <delta_ts>2016-11-03 09:23:02 -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>WebKit2</component>
          <version>Other</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, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>cpugh</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247462</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-02 14:01:47 -0700</bug_when>
    <thetext>After &lt;https://trac.webkit.org/r206247&gt; (the fix for bug 162359), it is possible for the client to not get notified of a paint milestone until the next layer flush, which may or may not occur. This is because WebCore fires painting milestones on a timer, and by the time it does so, the flush for the paint that triggered it may have already happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247469</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-02 14:06:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/29074344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247478</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-02 14:20:10 -0700</bug_when>
    <thetext>Perhaps the timer is not the reason. TiledCoreAnimationDrawingArea::flushLayers is called long before RenderLayerCompositor::didPaintBacking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247487</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-02 14:34:31 -0700</bug_when>
    <thetext>If some data in the commit will change, we should schedule a commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247499</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-02 14:55:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Perhaps the timer is not the reason.
&gt; TiledCoreAnimationDrawingArea::flushLayers is called long before
&gt; RenderLayerCompositor::didPaintBacking.

TiledCoreAnimationDrawingArea::flushLayers installs a commit handler, and that runs after didPaintBacking. So we need to fire the pending milestones from there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247598</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-02 17:41:49 -0700</bug_when>
    <thetext>Actually, I am seeing this with the root layer, which doesn’t even rely on RenderLayerCompositor::didPaintBacking, because RenderLayerBacking::paintIntoLayer calls FrameView::didPaintContents() directly which calls firePaintRelatedMilestonesIfNeeded() without a timer delay.

I am trying to understand in what cases that is not followed by a flush, so that I cam make a reliable test case for the fix that moves firing the pending milestones into the commit handler.

I am also trying to understand what’s the right thing to do for OS X 10.10, which doesn’t use the commit handler code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247623</commentid>
    <comment_count>6</comment_count>
      <attachid>293734</attachid>
    <who name="">mitz</who>
    <bug_when>2016-11-02 19:09:27 -0700</bug_when>
    <thetext>Created attachment 293734
Have WebKit, not WebCore, defer sending the milestones until after the commit

I wasn’t able to add an API test for this. I test with internal builds of macOS Mail, which were affected by the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247625</commentid>
    <comment_count>7</comment_count>
      <attachid>293734</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-02 19:18:28 -0700</bug_when>
    <thetext>Comment on attachment 293734
Have WebKit, not WebCore, defer sending the milestones until after the commit

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        To give WebKit a chance to deliver the painting milestones to its client after the commit,
&gt; +        we must tell it about them before or during the commit. To that end, we should not defer
&gt; +        the call to firePaintRelatedMilestonesIfNeeded until after the commit.

Was it deferred for a good reason, like coalescing?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:572
&gt; +        frameView.firePaintRelatedMilestonesIfNeeded();

Does one really &quot;fire&quot; a milestone, or just reach or pass it?

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:428
&gt; +            if (TiledCoreAnimationDrawingArea* drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea*&gt;(retainedPage-&gt;drawingArea())) {

auto foo = downcast&lt;TiledCoreAnimationDrawingArea&gt;() ?

When is drawingArea != this? Very confusing to fetch it here again.

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:431
&gt; +                if (drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones)
&gt; +                    retainedPage-&gt;send(Messages::WebPageProxy::DidReachLayoutMilestone(drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones));
&gt; +                drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones = 0;

I would like to see this moved to a self-contained function.

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:439
&gt; +                if (drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones)
&gt; +                    retainedPage-&gt;send(Messages::WebPageProxy::DidReachLayoutMilestone(drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones));
&gt; +                drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones = 0;

...which you could also call here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247643</commentid>
    <comment_count>8</comment_count>
      <attachid>293734</attachid>
    <who name="">mitz</who>
    <bug_when>2016-11-02 21:06:42 -0700</bug_when>
    <thetext>Comment on attachment 293734
Have WebKit, not WebCore, defer sending the milestones until after the commit

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        the call to firePaintRelatedMilestonesIfNeeded until after the commit.
&gt; 
&gt; Was it deferred for a good reason, like coalescing?

It was deferred in order to make sure that WebKit client gets notified only after the commit (see bug 115753). That bug was probably reintroduced when &lt;https://trac.webkit.org/r166015&gt; (the fix for bug 130541) made RenderLayerBacking::paintIntoLayer() call FrameView::didPaintContents(), which fires the paint-related milestones synchronously. That is, until &lt;https://trac.webkit.org/r206247&gt; introduced a completely different way for the milestones to be deferred, which happened to defer them too much in some cases.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:428
&gt;&gt; +            if (TiledCoreAnimationDrawingArea* drawingArea = static_cast&lt;TiledCoreAnimationDrawingArea*&gt;(retainedPage-&gt;drawingArea())) {
&gt; 
&gt; auto foo = downcast&lt;TiledCoreAnimationDrawingArea&gt;() ?
&gt; 
&gt; When is drawingArea != this? Very confusing to fetch it here again.

drawingArea is null if in the mean while WebPage::close has been called.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:439
&gt;&gt; +                drawingArea-&gt;m_pendingNewlyReachedLayoutMilestones = 0;
&gt; 
&gt; ...which you could also call here.

I waffled on this. It will be a similar number of lines of code, and once 10.10 support is gone, it will be even more silly for it to be a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247653</commentid>
    <comment_count>9</comment_count>
      <attachid>293747</attachid>
    <who name="">mitz</who>
    <bug_when>2016-11-02 22:30:56 -0700</bug_when>
    <thetext>Created attachment 293747
Have WebKit, not WebCore, defer sending the milestones until after the commit

Made a helper function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247722</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2016-11-03 09:23:02 -0700</bug_when>
    <thetext>Fixed in &lt;https://trac.webkit.org/r208328&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293734</attachid>
            <date>2016-11-02 19:09:27 -0700</date>
            <delta_ts>2016-11-02 22:30:51 -0700</delta_ts>
            <desc>Have WebKit, not WebCore, defer sending the milestones until after the commit</desc>
            <filename>29074344_r1.diff</filename>
            <type>text/plain</type>
            <size>7687</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTExLTAyICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjI0Nyk6
IFBhaW50aW5nIG1pbGVzdG9uZXMgY2FuIGJlIGRlbGF5ZWQgdW50aWwgdGhlIG5leHQgbGF5ZXIg
Zmx1c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDM0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkwNzQzNDQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZ2l2ZSBXZWJLaXQgYSBjaGFuY2Ug
dG8gZGVsaXZlciB0aGUgcGFpbnRpbmcgbWlsZXN0b25lcyB0byBpdHMgY2xpZW50IGFmdGVyIHRo
ZSBjb21taXQsCisgICAgICAgIHdlIG11c3QgdGVsbCBpdCBhYm91dCB0aGVtIGJlZm9yZSBvciBk
dXJpbmcgdGhlIGNvbW1pdC4gVG8gdGhhdCBlbmQsIHdlIHNob3VsZCBub3QgZGVmZXIKKyAgICAg
ICAgdGhlIGNhbGwgdG8gZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCB1bnRpbCBh
ZnRlciB0aGUgY29tbWl0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcik6IFJlbW92ZWQKKyAgICAgICAgICBtX3BhaW50UmVsYXRlZE1pbGVz
dG9uZXNUaW1lciBpbml0aWFsaXplci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZGlkUGFpbnRCYWNraW5nKTogQ2FsbAorICAgICAgICAgIEZyYW1lVmlldzo6Zmly
ZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCBkaXJlY3RseSBmcm9tIGhlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50UmVsYXRlZE1pbGVzdG9u
ZXNUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmg6CisKIDIwMTYtMTAtMzEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIFNpbXBsaWZ5IGJhY2tncm91bmQtcG9zaXRpb24teC95
IHN0eWxlIG1hcHBpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMDgxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc0LDcgKzI3NCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wb3NpdGluZ0xvZ0VuYWJs
ZWQKIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZp
ZXcmIHJlbmRlclZpZXcpCiAgICAgOiBtX3JlbmRlclZpZXcocmVuZGVyVmlldykKICAgICAsIG1f
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lcigqdGhpcywgJlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKQotICAgICwgbV9wYWludFJlbGF0
ZWRNaWxlc3RvbmVzVGltZXIoKnRoaXMsICZSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50UmVs
YXRlZE1pbGVzdG9uZXNUaW1lckZpcmVkKQogICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMs
ICZSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewogfQpAQCAt
NTY5LDggKzU2OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRQYWludEJhY2sK
IHsKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKTsK
ICAgICBmcmFtZVZpZXcuc2V0TGFzdFBhaW50VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSk7Ci0gICAgaWYgKGZyYW1lVmlldy5taWxlc3RvbmVzUGVuZGluZ1BhaW50KCkgJiYgIW1f
cGFpbnRSZWxhdGVkTWlsZXN0b25lc1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGFpbnRS
ZWxhdGVkTWlsZXN0b25lc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAoZnJhbWVWaWV3
Lm1pbGVzdG9uZXNQZW5kaW5nUGFpbnQoKSkKKyAgICAgICAgZnJhbWVWaWV3LmZpcmVQYWludFJl
bGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmRpZENoYW5nZVZpc2libGVSZWN0KCkKQEAgLTQxOTksMjAgKzQxOTgsNiBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJGbHVzaFRpCiAgICAgc2NoZWR1bGVMYXllckZsdXNo
Tm93KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludFJlbGF0ZWRNaWxl
c3RvbmVzVGltZXJGaXJlZCgpCi17Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLmZyYW1lKCk7Ci0gICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBsYXllciB0cmVlIGlz
IGZyb3plbiwgd2UnbGwgcGFpbnQgd2hlbiBpdCdzIHVuZnJvemVuIGFuZCBzY2hlZHVsZSB0aGUg
dGltZXIgYWdhaW4uCi0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLmZpcmVQYWludFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKLX0KLQogI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiBSZWZQdHI8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNyZWF0ZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0CiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCShy
ZXZpc2lvbiAyMDgxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw4ICs0NzUsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRMYXllckZsdXNoVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgbGF5ZXJG
bHVzaFRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgcGFpbnRSZWxhdGVkTWlsZXN0b25lc1RpbWVy
RmlyZWQoKTsKLQogI2lmICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dSZWFzb25z
Rm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXImKTsKICAgICB2b2lkIGxvZ0xheWVySW5m
byhjb25zdCBSZW5kZXJMYXllciYsIGludCBkZXB0aCk7CkBAIC01NDgsNyArNTQ2LDYgQEAgcHJp
dmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyVXBkYXRlcj4gbV9sYXll
clVwZGF0ZXI7IC8vIFVwZGF0ZXMgdGlsZWQgbGF5ZXIgdmlzaWJsZSBhcmVhIHBlcmlvZGljYWxs
eSB3aGlsZSBhbmltYXRpb25zIGFyZSBydW5uaW5nLgogCi0gICAgVGltZXIgbV9wYWludFJlbGF0
ZWRNaWxlc3RvbmVzVGltZXI7CiAgICAgVGltZXIgbV9sYXllckZsdXNoVGltZXI7CiAKICAgICBi
b29sIG1fbGF5ZXJGbHVzaFRocm90dGxpbmdFbmFibGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwODMxOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjI0Nyk6IFBhaW50aW5nIG1p
bGVzdG9uZXMgY2FuIGJlIGRlbGF5ZWQgdW50aWwgdGhlIG5leHQgbGF5ZXIgZmx1c2gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjkwNzQzNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOiBXYWl0IHVudGlsIGFmdGVyIHRoZSBjb21taXQg
dG8gZ2V0IHRoZQorICAgICAgICAgIHBlbmRpbmcgbWlsZXN0b25lcyBhbmQgc2VuZCB0aGVtIHRv
IHRoZSBVSSBwcm9jZXNzLiBUaGlzIHdheSB3ZSBkb27igJl0IG1pc3MgbWlsZXN0b25lcyB0aGF0
CisgICAgICAgICAgZmlyZSBkdXJpbmcgdGhlIGNvbW1pdC4KKwogMjAxNi0xMS0wMiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1ZyAxNjQzMzM6IEFkZCBs
b2dnaW5nIGZvciAiV2ViS2l0IGVuY291bnRlcmVkIGFuIGludGVybmFsIGVycm9yIiBtZXNzYWdl
cyBkdWUgdG8gTmV0d29yayBwcm9jZXNzIGNyYXNoZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjA4MTQ2KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE4LDE0ICs0MTgsMjcgQEAgYm9vbCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1cwogICAgICAgICBpZiAobV92aWV3T3ZlcmxheVJvb3RM
YXllcikKICAgICAgICAgICAgIG1fdmlld092ZXJsYXlSb290TGF5ZXItPmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZSh2aXNpYmxlUmVjdCwgbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlld3BvcnRJ
c1N0YWJsZSgpKTsKIAotI2lmIFRBUkdFVF9PU19JUEhPTkUgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCiAgICAgICAgIFJlZlB0
cjxXZWJQYWdlPiByZXRhaW5lZFBhZ2UgPSAmbV93ZWJQYWdlOworI2lmIFRBUkdFVF9PU19JUEhP
TkUgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDExMDApCiAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3JldGFp
bmVkUGFnZV0gewogICAgICAgICAgICAgaWYgKFBhZ2UqIGNvcmVQYWdlID0gcmV0YWluZWRQYWdl
LT5jb3JlUGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBy
ZXRhaW5lZFBhZ2UtPm1haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBjb3JlUGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpZENvbXBvc2l0ZSgqY29yZUZyYW1lKTsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSogZHJh
d2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSo+KHJl
dGFpbmVkUGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZHJhd2lu
Z0FyZWEtPm1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMpCisgICAgICAgICAg
ICAgICAgICAgIHJldGFpbmVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWFjaExheW91dE1pbGVzdG9uZShkcmF3aW5nQXJlYS0+bV9wZW5kaW5nTmV3bHlSZWFjaGVkTGF5
b3V0TWlsZXN0b25lcykpOworICAgICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5tX3BlbmRpbmdO
ZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBmb3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUG9zdENvbW1pdF07CisjZWxzZQorICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcmV0YWluZWRQYWdl
XSB7CisgICAgICAgICAgICBpZiAoVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEqIGRyYXdp
bmdBcmVhID0gc3RhdGljX2Nhc3Q8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEqPihyZXRh
aW5lZFBhZ2UtPmRyYXdpbmdBcmVhKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdpbmdB
cmVhLT5tX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzKQorICAgICAgICAgICAg
ICAgICAgICByZXRhaW5lZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVh
Y2hMYXlvdXRNaWxlc3RvbmUoZHJhd2luZ0FyZWEtPm1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91
dE1pbGVzdG9uZXMpKTsKKyAgICAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+bV9wZW5kaW5nTmV3
bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OwogI2VuZGlmCiAKICAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IG1fd2ViUGFnZS5tYWluRnJh
bWVWaWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwpAQCAt
NDM5LDEwICs0NTIsNiBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVz
CiAgICAgICAgIGlmIChtX3RyYW5zaWVudFpvb21TY2FsZSAhPSAxKQogICAgICAgICAgICAgYXBw
bHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2llbnRab29tU2NhbGUsIG1fdHJhbnNpZW50
Wm9vbU9yaWdpbik7CiAKLSAgICAgICAgaWYgKG1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1p
bGVzdG9uZXMpCi0gICAgICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZWFjaExheW91dE1pbGVzdG9uZShtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRN
aWxlc3RvbmVzKSk7Ci0gICAgICAgIG1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9u
ZXMgPSAwOwotCiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293747</attachid>
            <date>2016-11-02 22:30:56 -0700</date>
            <delta_ts>2016-11-03 09:18:53 -0700</delta_ts>
            <desc>Have WebKit, not WebCore, defer sending the milestones until after the commit</desc>
            <filename>bug-164340-20161102222657.patch</filename>
            <type>text/plain</type>
            <size>8547</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODE0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTExLTAyICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjI0Nyk6
IFBhaW50aW5nIG1pbGVzdG9uZXMgY2FuIGJlIGRlbGF5ZWQgdW50aWwgdGhlIG5leHQgbGF5ZXIg
Zmx1c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDM0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkwNzQzNDQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZ2l2ZSBXZWJLaXQgYSBjaGFuY2Ug
dG8gZGVsaXZlciB0aGUgcGFpbnRpbmcgbWlsZXN0b25lcyB0byBpdHMgY2xpZW50IGFmdGVyIHRo
ZSBjb21taXQsCisgICAgICAgIHdlIG11c3QgdGVsbCBpdCBhYm91dCB0aGVtIGJlZm9yZSBvciBk
dXJpbmcgdGhlIGNvbW1pdC4gVG8gdGhhdCBlbmQsIHdlIHNob3VsZCBub3QgZGVmZXIKKyAgICAg
ICAgdGhlIGNhbGwgdG8gZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCB1bnRpbCBh
ZnRlciB0aGUgY29tbWl0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcik6IFJlbW92ZWQKKyAgICAgICAgICBtX3BhaW50UmVsYXRlZE1pbGVz
dG9uZXNUaW1lciBpbml0aWFsaXplci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZGlkUGFpbnRCYWNraW5nKTogQ2FsbAorICAgICAgICAgIEZyYW1lVmlldzo6Zmly
ZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCBkaXJlY3RseSBmcm9tIGhlcmUuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50UmVsYXRlZE1pbGVzdG9u
ZXNUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmg6CisKIDIwMTYtMTAtMzEgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NTUyBQYXJzZXJdIFNpbXBsaWZ5IGJhY2tncm91bmQtcG9zaXRpb24teC95
IHN0eWxlIG1hcHBpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMDgxNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc0LDcgKzI3NCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wb3NpdGluZ0xvZ0VuYWJs
ZWQKIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZp
ZXcmIHJlbmRlclZpZXcpCiAgICAgOiBtX3JlbmRlclZpZXcocmVuZGVyVmlldykKICAgICAsIG1f
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lcigqdGhpcywgJlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKQotICAgICwgbV9wYWludFJlbGF0
ZWRNaWxlc3RvbmVzVGltZXIoKnRoaXMsICZSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50UmVs
YXRlZE1pbGVzdG9uZXNUaW1lckZpcmVkKQogICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMs
ICZSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewogfQpAQCAt
NTY5LDggKzU2OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRQYWludEJhY2sK
IHsKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKTsK
ICAgICBmcmFtZVZpZXcuc2V0TGFzdFBhaW50VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSk7Ci0gICAgaWYgKGZyYW1lVmlldy5taWxlc3RvbmVzUGVuZGluZ1BhaW50KCkgJiYgIW1f
cGFpbnRSZWxhdGVkTWlsZXN0b25lc1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGFpbnRS
ZWxhdGVkTWlsZXN0b25lc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBpZiAoZnJhbWVWaWV3
Lm1pbGVzdG9uZXNQZW5kaW5nUGFpbnQoKSkKKyAgICAgICAgZnJhbWVWaWV3LmZpcmVQYWludFJl
bGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmRpZENoYW5nZVZpc2libGVSZWN0KCkKQEAgLTQxOTksMjAgKzQxOTgsNiBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJGbHVzaFRpCiAgICAgc2NoZWR1bGVMYXllckZsdXNo
Tm93KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludFJlbGF0ZWRNaWxl
c3RvbmVzVGltZXJGaXJlZCgpCi17Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLmZyYW1lKCk7Ci0gICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHRoZSBsYXllciB0cmVlIGlz
IGZyb3plbiwgd2UnbGwgcGFpbnQgd2hlbiBpdCdzIHVuZnJvemVuIGFuZCBzY2hlZHVsZSB0aGUg
dGltZXIgYWdhaW4uCi0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLmZpcmVQYWludFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKLX0KLQogI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiBSZWZQdHI8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNyZWF0ZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpIGNvbnN0CiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCShy
ZXZpc2lvbiAyMDgxNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw4ICs0NzUsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRMYXllckZsdXNoVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgbGF5ZXJG
bHVzaFRpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgcGFpbnRSZWxhdGVkTWlsZXN0b25lc1RpbWVy
RmlyZWQoKTsKLQogI2lmICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dSZWFzb25z
Rm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXImKTsKICAgICB2b2lkIGxvZ0xheWVySW5m
byhjb25zdCBSZW5kZXJMYXllciYsIGludCBkZXB0aCk7CkBAIC01NDgsNyArNTQ2LDYgQEAgcHJp
dmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyVXBkYXRlcj4gbV9sYXll
clVwZGF0ZXI7IC8vIFVwZGF0ZXMgdGlsZWQgbGF5ZXIgdmlzaWJsZSBhcmVhIHBlcmlvZGljYWxs
eSB3aGlsZSBhbmltYXRpb25zIGFyZSBydW5uaW5nLgogCi0gICAgVGltZXIgbV9wYWludFJlbGF0
ZWRNaWxlc3RvbmVzVGltZXI7CiAgICAgVGltZXIgbV9sYXllckZsdXNoVGltZXI7CiAKICAgICBi
b29sIG1fbGF5ZXJGbHVzaFRocm90dGxpbmdFbmFibGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwODMyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTExLTAyICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIwNjI0Nyk6IFBhaW50aW5nIG1p
bGVzdG9uZXMgY2FuIGJlIGRlbGF5ZWQgdW50aWwgdGhlIG5leHQgbGF5ZXIgZmx1c2gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDM0MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjkwNzQzNDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmg6IERlY2xhcmVkIG5ldyBoZWxwZXIgZnVuY3Rpb24uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
bmRQZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyk6IEhlbHBlcgorICAgICAgICAg
IGZ1bmN0aW9uIHRoYXQgc2VuZHMgdGhlIG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MgYW5kIHJl
c2V0cworICAgICAgICAgIG1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMuCisg
ICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVy
cyk6IFdhaXQgdW50aWwgYWZ0ZXIgdGhlIGNvbW1pdCB0byBnZXQgdGhlCisgICAgICAgICAgcGVu
ZGluZyBtaWxlc3RvbmVzIGFuZCBzZW5kIHRoZW0gdG8gdGhlIFVJIHByb2Nlc3MuIFRoaXMgd2F5
IHdlIGRvbuKAmXQgbWlzcyBtaWxlc3RvbmVzIHRoYXQKKyAgICAgICAgICBmaXJlIGR1cmluZyB0
aGUgY29tbWl0LgorCiAyMDE2LTExLTAyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgQnVnIDE2NDMzMzogQWRkIGxvZ2dpbmcgZm9yICJXZWJLaXQgZW5jb3Vu
dGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiIG1lc3NhZ2VzIGR1ZSB0byBOZXR3b3JrIHByb2Nlc3Mg
Y3Jhc2hlcwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAko
cmV2aXNpb24gMjA4MTQ2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NiArMTIyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3Qo
KTsKICAgICB2b2lkIHNjYWxlVmlld1RvRml0RG9jdW1lbnRJZk5lZWRlZCgpOwogCisgICAgdm9p
ZCBzZW5kUGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMoKTsKKwogICAgIGJvb2wg
bV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOwogICAgIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVs
ZXIgbV9sYXllckZsdXNoU2NoZWR1bGVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDIwODE0NikKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM5NCw2ICszOTQsMTUgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6ZGlzcAogI2VuZGlmCiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNlbmRQZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcygpCit7
CisgICAgaWYgKCFtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWFjaExheW91dE1pbGVzdG9uZShtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRNaWxlc3Rv
bmVzKSk7CisgICAgbV9wZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyA9IDA7Cit9
CisKIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKIHsK
ICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbik7CkBAIC00MTgsMTQgKzQyNywy
MSBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzCiAgICAgICAgIGlm
IChtX3ZpZXdPdmVybGF5Um9vdExheWVyKQogICAgICAgICAgICAgbV92aWV3T3ZlcmxheVJvb3RM
YXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0LCBtX3dlYlBhZ2UubWFpbkZy
YW1lVmlldygpLT52aWV3cG9ydElzU3RhYmxlKCkpOwogCi0jaWYgVEFSR0VUX09TX0lQSE9ORSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTEwMCkKICAgICAgICAgUmVmUHRyPFdlYlBhZ2U+IHJldGFpbmVkUGFnZSA9ICZtX3dlYlBhZ2U7
CisjaWYgVEFSR0VUX09TX0lQSE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYWRk
Q29tbWl0SGFuZGxlcjpbcmV0YWluZWRQYWdlXSB7CiAgICAgICAgICAgICBpZiAoUGFnZSogY29y
ZVBhZ2UgPSByZXRhaW5lZFBhZ2UtPmNvcmVQYWdlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
RnJhbWUqIGNvcmVGcmFtZSA9IHJldGFpbmVkUGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNvcmVQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlkQ29tcG9zaXRlKCpj
b3JlRnJhbWUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0Fy
ZWEgPSBzdGF0aWNfY2FzdDxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSo+KHJldGFpbmVk
UGFnZS0+ZHJhd2luZ0FyZWEoKSkpCisgICAgICAgICAgICAgICAgZHJhd2luZ0FyZWEtPnNlbmRQ
ZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcygpOwogICAgICAgICB9IGZvclBoYXNl
OmtDQVRyYW5zYWN0aW9uUGhhc2VQb3N0Q29tbWl0XTsKKyNlbHNlCisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtdIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEqPihyZXRhaW5lZFBhZ2UtPmRyYXdpbmdBcmVhKCkpKQorICAgICAgICAgICAgICAgIGRyYXdp
bmdBcmVhLT5zZW5kUGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMoKTsKKyAgICAg
ICAgfSk7CiAjZW5kaWYKIAogICAgICAgICBib29sIHJldHVyblZhbHVlID0gbV93ZWJQYWdlLm1h
aW5GcmFtZVZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7
CkBAIC00MzksMTAgKzQ1NSw2IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmZsdXMKICAgICAgICAgaWYgKG1fdHJhbnNpZW50Wm9vbVNjYWxlICE9IDEpCiAgICAgICAgICAg
ICBhcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhtX3RyYW5zaWVudFpvb21TY2FsZSwgbV90cmFu
c2llbnRab29tT3JpZ2luKTsKIAotICAgICAgICBpZiAobV9wZW5kaW5nTmV3bHlSZWFjaGVkTGF5
b3V0TWlsZXN0b25lcykKLSAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKG1fcGVuZGluZ05ld2x5UmVhY2hlZExh
eW91dE1pbGVzdG9uZXMpKTsKLSAgICAgICAgbV9wZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWls
ZXN0b25lcyA9IDA7Ci0KICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogICAgIH0KIH0K
</data>
<flag name="review"
          id="316585"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>