<?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>160450</bug_id>
          
          <creation_ts>2016-08-02 06:27:08 -0700</creation_ts>
          <short_desc>[GTK][Threaded Compositor] Several flaky tests due to differences in scrollbars</short_desc>
          <delta_ts>2016-08-26 06:53:35 -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>WebKitGTK</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=161242</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>yoon</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216471</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-02 06:27:08 -0700</bug_when>
    <thetext>We still have a lot of flaky tests since we switched to the threaded compositor. I can&apos;t reproduce them though. I&apos;ve seen several reftests failing because there&apos;s a part of the vertical scrollbar that is not rendered. It turns out that the part not rendered is the second tile of the scrollbar layer, that for some reason it seems to be rendered later. So, my guess is that we force a repaint that when finishes hasn&apos;t actually painted all the tiles. Then the UI process takes the screenshot too early, before the second tile of the scrollbar layer is actually painted. I took advantage of the DRI3 bug, to see how things happen when everything is slow, and that&apos;s exactly what happens, everything is rendered in one pass and then the second tile of the scrollbar layer. See:

http://people.igalia.com/cgarcia/webkitgtk-scrollbar-layer.mp4

I&apos;m not sure how to fix it, because I don&apos;t know why that happens and I can&apos;t really reproduce the flakiness, but we could try to wait for more damage events in the UI process before taking the screenshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216835</commentid>
    <comment_count>1</comment_count>
      <attachid>285207</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-03 00:58:16 -0700</bug_when>
    <thetext>Created attachment 285207
Speculative fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216837</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-03 01:01:35 -0700</bug_when>
    <thetext>Attachment 285207 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:353:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 3 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>1217948</commentid>
    <comment_count>3</comment_count>
      <attachid>285207</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-05 10:14:36 -0700</bug_when>
    <thetext>Comment on attachment 285207
Speculative fix

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

&gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:359
&gt; +#if PLATFORM(GTK)
&gt; +    g_signal_connect_swapped(m_webPage.viewWidget(), &quot;draw&quot;, reinterpret_cast&lt;GCallback&gt;(webViewDrawCallback), this);
&gt; +    m_timer.startOneShot(1);

So we have a DrawingMonitor class that doesn&apos;t actually monitor drawing unless PLATFORM(GTK). Consider guarding the entire class and putting an #ifdef in DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing so it&apos;s not used at all on other platforms.

&gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:382
&gt; +    // We wait up to 1 second for draw events. If there are several draw events queued quickly,
&gt; +    // we want to wait until all of them have been processed, so after receiving a draw, we wait
&gt; +    // up to 100ms for the next one or stop.

I have no clue if this is right or sensible, but OK.

&gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:89
&gt; +    class DrawingMonitor {
&gt; +        WTF_MAKE_NONCOPYABLE(DrawingMonitor); WTF_MAKE_FAST_ALLOCATED;

Does it really make sense to use WTF_MAKE_FAST_ALLOCATED for a class that will rarely be allocated?

&gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:136
&gt; +    std::unique_ptr&lt;DrawingMonitor&gt; m_drawingMonitor;

This use of std::unique_ptr appears to be unnecessary, since you&apos;re not using it for polymorphism, you don&apos;t really need the null state, and you don&apos;t appear to need the lazy initialization. You can just keep a DrawingMonitor member, then you don&apos;t need to worry about creating it in DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing or checking that it&apos;s not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218196</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-05 22:57:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 285207 [details]
&gt; Speculative fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285207&amp;action=review

Thanks for the review. I think Zan was looking at the actual cause of the scrollbars drawing delay, so I&apos;ll wait until he confirms this is ok.

&gt; &gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:359
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt; +    g_signal_connect_swapped(m_webPage.viewWidget(), &quot;draw&quot;, reinterpret_cast&lt;GCallback&gt;(webViewDrawCallback), this);
&gt; &gt; +    m_timer.startOneShot(1);
&gt; 
&gt; So we have a DrawingMonitor class that doesn&apos;t actually monitor drawing
&gt; unless PLATFORM(GTK). Consider guarding the entire class and putting an
&gt; #ifdef in DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing so it&apos;s not
&gt; used at all on other platforms.

This file is actually only used by GTK anyway, what is protected by GTK is the actual use of GTK API. 

&gt; &gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp:382
&gt; &gt; +    // We wait up to 1 second for draw events. If there are several draw events queued quickly,
&gt; &gt; +    // we want to wait until all of them have been processed, so after receiving a draw, we wait
&gt; &gt; +    // up to 100ms for the next one or stop.
&gt; 
&gt; I have no clue if this is right or sensible, but OK.

Note that this patch is just an experiment to see if flaky tests are reduced in the bots, so I just took those numbers arbitrarily. I didn&apos;t want to delay tests for more than 1 second, and if we could finish earlier we do.

&gt; &gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:89
&gt; &gt; +    class DrawingMonitor {
&gt; &gt; +        WTF_MAKE_NONCOPYABLE(DrawingMonitor); WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; Does it really make sense to use WTF_MAKE_FAST_ALLOCATED for a class that
&gt; will rarely be allocated?

I don&apos;t know, I guess it&apos;s harmless.

&gt; &gt; Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:136
&gt; &gt; +    std::unique_ptr&lt;DrawingMonitor&gt; m_drawingMonitor;
&gt; 
&gt; This use of std::unique_ptr appears to be unnecessary, since you&apos;re not
&gt; using it for polymorphism, you don&apos;t really need the null state, and you
&gt; don&apos;t appear to need the lazy initialization. You can just keep a
&gt; DrawingMonitor member, then you don&apos;t need to worry about creating it in
&gt; DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing or checking that it&apos;s not
&gt; null.

This is only used by tests, so when no running tests, it&apos;s better to not have that monitor thing created, that&apos;s why I create it on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218197</commentid>
    <comment_count>5</comment_count>
      <attachid>285207</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-05 22:57:46 -0700</bug_when>
    <thetext>Comment on attachment 285207
Speculative fix

cq- for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218241</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-06 07:43:14 -0700</bug_when>
    <thetext>Zan :)

(In reply to comment #4)
&gt; This is only used by tests, so when no running tests, it&apos;s better to not
&gt; have that monitor thing created, that&apos;s why I create it on demand.

I&apos;d add a comment to that effect if you don&apos;t want someone &quot;optimizing&quot; away the pointer in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218461</commentid>
    <comment_count>7</comment_count>
      <attachid>285558</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-08-07 23:09:21 -0700</bug_when>
    <thetext>Created attachment 285558
Simplified test case

Just sets up a 400px-wide column that enforces a scrollbar.

Reproduces the scrollbar issue in MiniBrowser. It&apos;s easier to observe it if a sleep() call is placed into the CoordinatedLayerTreeHost timer callback, along with either using mock scrollbars or exporting GTK_OVERLAY_SCOLLING=0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218473</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-08-08 03:02:23 -0700</bug_when>
    <thetext>OK, the issue is that when loading the test case in MiniBrowser, ThreadedCompositor::didChangeVisibleRect() dispatches the setVisibleContentsRect() call that ends up in CompositingCoordinator. Since we&apos;re compositing the scrollbars as well, this visible contents rect needs to encompass the complete width of the view, but that&apos;s not happening.

In case of mock scrollbars, the rightmost 15px are clipped from this rect, but that doesn&apos;t prevent the scrollbar overlay layers to be flushed and rendered. What does happen is that during tile creation in the backing store the tiles that would normally intersect the visible rect of the view (if it were spanning over the whole actual visible area) are sorted by distance to the visible rect.

The top of the two tiles used for the scrollbar is closer to the visible rect, so that gets created and filled in first.  The second tile is stored as pending for creation, and does get rendered at the point of the next layer flush.

None of this would be a problem if the setVisibleContentsRect() was passed a proper rect that would cover the whole view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223035</commentid>
    <comment_count>9</comment_count>
      <attachid>286961</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-25 05:51:39 -0700</bug_when>
    <thetext>Created attachment 286961
Patch

This should be the proper fix, I think. At least it seems to work. Thanks for the explanation Zan, I&apos;ve copied it to the changelog entry :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223061</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-25 08:41:10 -0700</bug_when>
    <thetext>Committed r204961: &lt;http://trac.webkit.org/changeset/204961&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223333</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-25 17:00:37 -0700</bug_when>
    <thetext>Didn&apos;t work, we had more builds after this landed with huge number of flakes:

https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/builds/17873
https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/builds/17874
https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/builds/17877

We need to investigate the 40 unexpected passes in 17877; that is definitely related to the flakes and fallout from threaded compositor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223418</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-08-25 23:28:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Didn&apos;t work, we had more builds after this landed with huge number of flakes:

No, it worked, it&apos;s just that this was not the only cause of flakiness, if you look at the results, there isn&apos;t any case in which we don&apos;t render the full scrollbar, what the patch fixed. Now it seems we have problems with borders, and also with scrollbars that sometimes are shown (the whole scrollbar) when they shouldn&apos;t and the other way around. We need to investigate why.

&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; builds/17873
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; builds/17874
&gt; https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; builds/17877
&gt; 
&gt; We need to investigate the 40 unexpected passes in 17877; that is definitely
&gt; related to the flakes and fallout from threaded compositor.

Yes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285207</attachid>
            <date>2016-08-03 00:58:16 -0700</date>
            <delta_ts>2016-08-25 05:51:39 -0700</delta_ts>
            <desc>Speculative fix</desc>
            <filename>wk2-flaky-tests.diff</filename>
            <type>text/plain</type>
            <size>6729</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYzY1MGZjLi4zMTc2ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMDgtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1RocmVhZGVkIENvbXBvc2l0b3JdIFNldmVyYWwgZmxha3kgdGVz
dHMgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0aWxsIGhhdmUgYSBsb3Qgb2YgZmxha3kg
dGVzdHMgc2luY2Ugd2Ugc3dpdGNoZWQgdG8gdGhlIHRocmVhZGVkIGNvbXBvc2l0b3IuIEkndmUg
c2VlbiBzZXZlcmFsIHJlZnRlc3RzCisgICAgICAgIGZhaWxpbmcgYmVjYXVzZSB0aGVyZSdzIGEg
cGFydCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHRoYXQgaXMgbm90IHJlbmRlcmVkLiBJdCB0
dXJucyBvdXQgdGhhdCB0aGUgcGFydCBub3QKKyAgICAgICAgcmVuZGVyZWQgaXMgdGhlIHNlY29u
ZCB0aWxlIG9mIHRoZSBzY3JvbGxiYXIgbGF5ZXIsIHRoYXQgZm9yIHNvbWUgcmVhc29uIGl0IHNl
ZW1zIHRvIGJlIHJlbmRlcmVkIGxhdGVyLiBTbywgbXkKKyAgICAgICAgZ3Vlc3MgaXMgdGhhdCB3
ZSBmb3JjZSBhIHJlcGFpbnQgdGhhdCB3aGVuIGZpbmlzaGVzIGhhc24ndCBhY3R1YWxseSBwYWlu
dGVkIGFsbCB0aGUgdGlsZXMuIFRoZW4gdGhlIFVJIHByb2Nlc3MKKyAgICAgICAgdGFrZXMgdGhl
IHNjcmVlbnNob3QgdG9vIGVhcmx5LCBiZWZvcmUgdGhlIHNlY29uZCB0aWxlIG9mIHRoZSBzY3Jv
bGxiYXIgbGF5ZXIgaXMgYWN0dWFsbHkgcGFpbnRlZC4KKyAgICAgICAgSSBjYW4ndCByZXByb2R1
Y2UgdGhlIHByb2JsZW0sIHNvIHRoaXMgaXMgYWN0dWFsbHkgYSBzcGVjdWxhdGl2ZSBmaXggb3Ig
d29ya2Fyb3VuZC4gT3VyIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIERyYXdpbmdBcmVhOjpk
aXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKCkgaXMgcXVpdGUgc2ltcGxlLCB3ZSBqdXN0IGRp
c3BhdGNoIHRoZSBjYWxsYmFjayBpbiB0aGUgbmV4dCBydW4gbG9vcAorICAgICAgICBvcGVyYXRp
b24sIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGVuc3VyZXMgYW55IGRyYXdpbmcgYXQgYWxsLiBTbywg
d2UgY2FuIHdhaXQgZm9yIGRyYXcgZXZlbnRzIGJlZm9yZSBkaXNwYXRjaGluZworICAgICAgICB0
aGUgZ2l2ZW4gY2FsbGJhY2suIFNpbmNlIHdlIGRvbid0IHJlYWxseSBrbm93IGlmIGRyYXcgZXZl
bnRzIHdlcmUgYWxyZWFkeSBwcm9jZXNzZWQgYmVmb3JlCisgICAgICAgIGRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcoKSBpcyBjYWxsZWQsIG9yIGlmIHRoZXJlIHdpbGwgYmUgbW9yZSB0aGFu
IG9uZSBkYW1hZ2UgZXZlbnQgaW4gYSBzaG9ydCB0aW1lLCB0aGlzCisgICAgICAgIHBhdGNoIHdh
aXRzIHVwIHRvIDEgc2Vjb25kIGZvciBkcmF3IGV2ZW50cywgYW5kIGlmIGEgZHJhdyBoYXBwZW5z
IGl0IHN0b3BzIGlmIHRoZXJlIGlucyd0IGFub3RoZXIgZHJhdyBldmVudCBpbgorICAgICAgICB0
aGUgbmV4dCAxMDBtcy4gVGhpcyBzaG91bGQgZW5zdXJlIGEgZHJhd2luZyBpZiBpdCB3YXMgcmVh
bGx5IG5lZWRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRv
cjo6RHJhd2luZ01vbml0b3IpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1w
bDo6RHJhd2luZ01vbml0b3I6On5EcmF3aW5nTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OkRy
YXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6d2ViVmlld0RyYXdDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01v
bml0b3I6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6RHJh
d2luZ01vbml0b3I6OmRpZERyYXcpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
SW1wbDo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisKIDIwMTYtMDgtMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEJhZCBwZXJmb3JtYW5j
ZSBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlIHdpdGggdGhlIG1vZGVzZXR0aW5nIGlu
dGVsIGRyaXZlciBhbmQgRFJJMyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAppbmRleCAyNDc2Mjk2Li4wZjZmMDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAK
QEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpb24uaD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxndGsv
Z3RrLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMzI4LDYgKzMzMiw2MCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpk
ZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCkKIH0KICNlbmRpZgogCitE
cmF3aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OkRyYXdpbmdNb25pdG9yKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV90aW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEcmF3aW5nTW9uaXRvcjo6c3RvcCkKK3sKK30KKwor
RHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjp+RHJhd2luZ01vbml0b3IoKQor
eworICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgIHN0b3AoKTsKK30KKworaW50IERyYXdp
bmdBcmVhUHJveHlJbXBsOjpEcmF3aW5nTW9uaXRvcjo6d2ViVmlld0RyYXdDYWxsYmFjayhEcmF3
aW5nQXJlYVByb3h5SW1wbDo6RHJhd2luZ01vbml0b3IqIG1vbml0b3IpCit7CisgICAgbW9uaXRv
ci0+ZGlkRHJhdygpOworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCBEcmF3aW5nQXJlYVBy
b3h5SW1wbDo6RHJhd2luZ01vbml0b3I6OnN0YXJ0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrKQoreworICAgIG1fc3RhcnRUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lTVMoKTsKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisjaWYg
UExBVEZPUk0oR1RLKQorICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlBhZ2Uudmll
d1dpZGdldCgpLCAiZHJhdyIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJWaWV3RHJh
d0NhbGxiYWNrKSwgdGhpcyk7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMSk7CisjZWxzZQor
ICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworI2VuZGlmCit9CisKK3ZvaWQgRHJhd2luZ0Fy
ZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyLnN0b3Ao
KTsKKyNpZiBQTEFURk9STShHVEspCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKG1fd2ViUGFnZS52aWV3V2lkZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+
KHdlYlZpZXdEcmF3Q2FsbGJhY2spLCB0aGlzKTsKKyNlbmRpZgorICAgIG1fc3RhcnRUaW1lID0g
MDsKKyAgICBpZiAobV9jYWxsYmFjaykgeworICAgICAgICBtX2NhbGxiYWNrKENhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICB9Cit9
CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OkRyYXdpbmdNb25pdG9yOjpkaWREcmF3KCkK
K3sKKyAgICAvLyBXZSB3YWl0IHVwIHRvIDEgc2Vjb25kIGZvciBkcmF3IGV2ZW50cy4gSWYgdGhl
cmUgYXJlIHNldmVyYWwgZHJhdyBldmVudHMgcXVldWVkIHF1aWNrbHksCisgICAgLy8gd2Ugd2Fu
dCB0byB3YWl0IHVudGlsIGFsbCBvZiB0aGVtIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHNvIGFmdGVy
IHJlY2VpdmluZyBhIGRyYXcsIHdlIHdhaXQKKyAgICAvLyB1cCB0byAxMDBtcyBmb3IgdGhlIG5l
eHQgb25lIG9yIHN0b3AuCisgICAgaWYgKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZU1TKCkg
LSBtX3N0YXJ0VGltZSA+IDEwMDApCisgICAgICAgIHN0b3AoKTsKKyAgICBlbHNlCisgICAgICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KDAuMTAwKTsKK30KKwogdm9pZCBEcmF3aW5nQXJlYVByb3h5
SW1wbDo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghbV93ZWJQ
YWdlUHJveHkuaXNWYWxpZCgpKSB7CkBAIC0zMzUsNyArMzkzLDkgQEAgdm9pZCBEcmF3aW5nQXJl
YVByb3h5SW1wbDo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhzdGQ6OmZ1bmN0aW9uPHZv
aWQgKENhbGwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2tGdW5jdGlvbl0geyBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpOyB9KTsKKyAgICBpZiAoIW1fZHJhd2luZ01vbml0b3IpCisgICAgICAg
IG1fZHJhd2luZ01vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlJbXBs
OjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOworICAgIG1fZHJhd2luZ01vbml0b3It
PnN0YXJ0KGNhbGxiYWNrRnVuY3Rpb24pOwogfQogCiB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBs
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCAxZWQ2ZDAwLi5mMjIwODAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaApA
QCAtODUsNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmVT
b29uKCk7CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKKyAgICBjbGFzcyBEcmF3
aW5nTW9uaXRvciB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdNb25pdG9y
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBEcmF3aW5n
TW9uaXRvcihXZWJQYWdlUHJveHkmKTsKKyAgICAgICAgfkRyYXdpbmdNb25pdG9yKCk7CisKKyAg
ICAgICAgdm9pZCBzdGFydChzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgaW50IHdlYlZpZXdEcmF3Q2FsbGJh
Y2soRHJhd2luZ01vbml0b3IqKTsKKworICAgICAgICB2b2lkIHN0b3AoKTsKKyAgICAgICAgdm9p
ZCBkaWREcmF3KCk7CisKKyAgICAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2U7CisgICAgICAg
IGRvdWJsZSBtX3N0YXJ0VGltZSB7IDAgfTsKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gbV9jYWxsYmFjazsKKyAgICAgICAgUnVuTG9vcDo6VGltZXI8
RHJhd2luZ01vbml0b3I+IG1fdGltZXI7CisgICAgfTsKKwogICAgIC8vIFRoZSBzdGF0ZSBJRCBj
b3JyZXNwb25kaW5nIHRvIG91ciBjdXJyZW50IGJhY2tpbmcgc3RvcmUuIFVwZGF0ZWQgd2hlbmV2
ZXIgd2UgYWxsb2NhdGUKICAgICAvLyBhIG5ldyBiYWNraW5nIHN0b3JlLiBBbnkgbWVzc2FnZXMg
cmVjZWl2ZWQgdGhhdCBjb3JyZXNwb25kIHRvIGFuIGVhcmxpZXIgc3RhdGUgYXJlIGlnbm9yZWQs
CiAgICAgLy8gYXMgdGhleSBkb24ndCBhcHBseSB0byBvdXIgY3VycmVudCBiYWNraW5nIHN0b3Jl
LgpAQCAtMTEyLDYgKzEzMiw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAm
JiBQTEFURk9STShHVEspCiAgICAgdWludDY0X3QgbV9wZW5kaW5nTmF0aXZlU3VyZmFjZUhhbmRs
ZUZvckNvbXBvc2l0aW5nIHsgMCB9OwogI2VuZGlmCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJh
d2luZ01vbml0b3I+IG1fZHJhd2luZ01vbml0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>
<flag name="review"
          id="308840"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="309114"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>285558</attachid>
            <date>2016-08-07 23:09:21 -0700</date>
            <delta_ts>2016-08-07 23:09:21 -0700</delta_ts>
            <desc>Simplified test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>149</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJ3aWR0aDogNDAwcHg7IGhlaWdodDogMTYwMHB4Ij48
L2Rpdj4KPGRpdiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQiPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286961</attachid>
            <date>2016-08-25 05:51:39 -0700</date>
            <delta_ts>2016-08-25 07:13:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-flaky-scrollbars.diff</filename>
            <type>text/plain</type>
            <size>4003</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMGRmOGYwLi4yMDRiMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTYtMDgtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW1RocmVhZGVkIENvbXBvc2l0b3JdIFNldmVyYWwgZmxha3kgdGVz
dHMgZHVlIHRvIGRpZmZlcmVuY2VzIGluIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDQ1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IFRocmVhZGVkQ29t
cG9zaXRvcjo6ZGlkQ2hhbmdlVmlzaWJsZVJlY3QoKSBkaXNwYXRjaGVzIHRoZSBzZXRWaXNpYmxl
Q29udGVudHNSZWN0KCkgY2FsbCB0aGF0CisgICAgICAgIGVuZHMgdXAgaW4gQ29tcG9zaXRpbmdD
b29yZGluYXRvci4gU2luY2Ugd2UncmUgY29tcG9zaXRpbmcgdGhlIHNjcm9sbGJhcnMgYXMgd2Vs
bCwgdGhpcyB2aXNpYmxlIGNvbnRlbnRzIHJlY3QKKyAgICAgICAgbmVlZHMgdG8gZW5jb21wYXNz
IHRoZSBjb21wbGV0ZSB3aWR0aCBvZiB0aGUgdmlldywgYnV0IHRoYXQncyBub3QgaGFwcGVuaW5n
LgorICAgICAgICBJbiBjYXNlIG9mIG5vbi1vdmVybGF5IHNjcm9sbGJhcnMsIHRoZSBzY3JvbGxi
YXJzIGFyZSBjbGlwcGVkIGZyb20gdGhpcyByZWN0LCBidXQgdGhhdCBkb2Vzbid0IHByZXZlbnQg
dGhlCisgICAgICAgIHNjcm9sbGJhciBvdmVybGF5IGxheWVycyB0byBiZSBmbHVzaGVkIGFuZCBy
ZW5kZXJlZC4gV2hhdCBkb2VzIGhhcHBlbiBpcyB0aGF0IGR1cmluZyB0aWxlIGNyZWF0aW9uIGlu
IHRoZQorICAgICAgICBiYWNraW5nIHN0b3JlIHRoZSB0aWxlcyB0aGF0IHdvdWxkIG5vcm1hbGx5
IGludGVyc2VjdCB0aGUgdmlzaWJsZSByZWN0IG9mIHRoZSB2aWV3IChpZiBpdCB3ZXJlIHNwYW5u
aW5nIG92ZXIgdGhlCisgICAgICAgIHdob2xlIGFjdHVhbCB2aXNpYmxlIGFyZWEpIGFyZSBzb3J0
ZWQgYnkgZGlzdGFuY2UgdG8gdGhlIHZpc2libGUgcmVjdC4KKyAgICAgICAgVGhlIHRvcCBvZiB0
aGUgdHdvIHRpbGVzIHVzZWQgZm9yIHRoZSBzY3JvbGxiYXIgaXMgY2xvc2VyIHRvIHRoZSB2aXNp
YmxlIHJlY3QsIHNvIHRoYXQgZ2V0cyBjcmVhdGVkIGFuZCBmaWxsZWQKKyAgICAgICAgaW4gZmly
c3QuIFRoZSBzZWNvbmQgdGlsZSBpcyBzdG9yZWQgYXMgcGVuZGluZyBmb3IgY3JlYXRpb24sIGFu
ZCBkb2VzIGdldCByZW5kZXJlZCBhdCB0aGUgcG9pbnQgb2YgdGhlIG5leHQKKyAgICAgICAgbGF5
ZXIgZmx1c2guCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KTogVXBkYXRlIHRoZSB2aXNpYmxlIHJlY3QgdGFraW5nIGludG8gYWNjb3VudAorICAgICAg
ICB0aGUgbm9uLW92ZXJsYXkgc2Nyb2xsYmFycyBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgY29t
cG9zaXRvci4KKwogMjAxNi0wOC0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZG9lcyBu
b3Qgd29yayBpbiBXYXlsYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZWM0NzE5
NC4uOGNlNjg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMTMzLDEyICsxMzMs
MjUgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQKIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IsIGZsb2F0IHNjYWxlKQogewot
ICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0
LCB0cmFqZWN0b3J5VmVjdG9yKTsKLSAgICBpZiAobV9sYXN0U2Nyb2xsUG9zaXRpb24gIT0gcm91
bmRlZEludFBvaW50KHJlY3QubG9jYXRpb24oKSkpIHsKLSAgICAgICAgbV9sYXN0U2Nyb2xsUG9z
aXRpb24gPSByb3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKTsKLQotICAgICAgICBpZiAo
IW1fd2ViUGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnVzZUZpeGVkTGF5b3V0
KCkpCi0gICAgICAgICAgICBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygp
LT5ub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5nZWQobV9sYXN0U2Nyb2xsUG9zaXRpb24pOworICAg
IEZsb2F0UmVjdCB2aXNpYmxlUmVjdChyZWN0KTsKKworICAgIC8vIFdoZW4gdXNpbmcgbm9uIG92
ZXJsYXkgc2Nyb2xsYmFycywgdGhlIGNvbnRlbnRzIHNpemUgZG9lc24ndCBpbmNsdWRlIHRoZSBz
Y3JvbGxiYXJzLCBidXQgd2UgbmVlZCB0byBpbmNsdWRlIHRoZW0KKyAgICAvLyBpbiB0aGUgdmlz
aWJsZSBhcmVhIHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcm9s
bGJhciBsYXllcnMgYXJlIGFsc28gdXBkYXRlZC4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDQ1MC4KKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X3dlYlBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIFNjcm9sbGJhciog
c2Nyb2xsYmFyID0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKTsKKyAgICBpZiAoc2Nyb2xsYmFy
ICYmICFzY3JvbGxiYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpKQorICAgICAgICB2aXNpYmxlUmVj
dC5leHBhbmQoc2Nyb2xsYmFyLT53aWR0aCgpLCAwKTsKKyAgICBzY3JvbGxiYXIgPSB2aWV3LT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgaWYgKHNjcm9sbGJhciAmJiAhc2Nyb2xsYmFyLT5p
c092ZXJsYXlTY3JvbGxiYXIoKSkKKyAgICAgICAgdmlzaWJsZVJlY3QuZXhwYW5kKDAsIHNjcm9s
bGJhci0+aGVpZ2h0KCkpOworCisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNp
YmxlQ29udGVudHNSZWN0KHZpc2libGVSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBpZiAo
bV9sYXN0U2Nyb2xsUG9zaXRpb24gIT0gcm91bmRlZEludFBvaW50KHZpc2libGVSZWN0LmxvY2F0
aW9uKCkpKSB7CisgICAgICAgIG1fbGFzdFNjcm9sbFBvc2l0aW9uID0gcm91bmRlZEludFBvaW50
KHZpc2libGVSZWN0LmxvY2F0aW9uKCkpOworCisgICAgICAgIGlmICghdmlldy0+dXNlRml4ZWRM
YXlvdXQoKSkKKyAgICAgICAgICAgIHZpZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZCht
X2xhc3RTY3JvbGxQb3NpdGlvbik7CiAgICAgfQogCiAgICAgaWYgKG1fbGFzdFNjYWxlRmFjdG9y
ICE9IHNjYWxlKSB7Cg==
</data>
<flag name="review"
          id="310451"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>