<?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>99605</bug_id>
          
          <creation_ts>2012-10-17 09:57:26 -0700</creation_ts>
          <short_desc>[chromium] Unify DRT repaint tracking with other ports</short_desc>
          <delta_ts>2013-04-09 17:07:22 -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>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97801</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyöstilä">skyostil</reporter>
          <assigned_to name="Sami Kyöstilä">skyostil</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>peter</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>744332</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-17 09:57:26 -0700</bug_when>
    <thetext>[chromium] Unify DRT repaint tracking with other ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744335</commentid>
    <comment_count>1</comment_count>
      <attachid>169203</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-17 10:01:06 -0700</bug_when>
    <thetext>Created attachment 169203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744336</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 10:04:15 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744337</commentid>
    <comment_count>3</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-17 10:07:04 -0700</bug_when>
    <thetext>Before adding support for repaint tracking in composited layers I wanted to make chromium use the same FrameView repaint tracking mechanism as the other ports. This does involve rebaselining, because we now display individual rects instead of their union. I&apos;m open to suggestions on how to go about this without getting murdered by gardeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744354</commentid>
    <comment_count>4</comment_count>
      <attachid>169203</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-17 10:16:10 -0700</bug_when>
    <thetext>Comment on attachment 169203
Patch

This looks great.  Any idea how many tests will require rebaselines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744359</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-17 10:17:41 -0700</bug_when>
    <thetext>Also, how do other ports deal with scrolling invalidations?  Currently on windows anything that comes out as a scroll (instead of a repaint) is left un-highlighted whereas on other ports scrolls turn into normal invalidations and are thus greyed out.  The inconsistency is infuriating, but the windows behavior is somewhat nice in that you can tell when something was scrolled vs repainted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744368</commentid>
    <comment_count>6</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-17 10:25:50 -0700</bug_when>
    <thetext>I only checked fast/repaint locally and that amounted to ~200 failures. I&apos;ll see how scrolling is handled next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744383</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-17 10:36:38 -0700</bug_when>
    <thetext>Ah well.  I think it&apos;s worth the effort personally and will help with the rebaselining when it gets to that point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744455</commentid>
    <comment_count>8</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-10-17 11:31:48 -0700</bug_when>
    <thetext>I may be misunderstanding something (and please correct me if I am), but I think that this will make supporting repaint testing for composited layers tougher rather than easier. In fact, I think we should be moving the other ports to the chromium approach rather than the other way around. 

In a nutshell, with this new approach we create a grey mask and cut out holes where we paint. But imagine that we&apos;re using composited layers, the layers on our page are a deck of cards tossed in the air, and we go and repaint rectangles on each of the cards. These rectangles will have perspective effects applied, will be clipped, will be occluded, have backface culling applied, etc. Even if we have stored these repaint rects and the respective draw transforms, it will be a non-trivial, and very brittle process to turn this information into the correct set of holes in the mask (and the holes may become arbitrarily complex polygons).

If we take the chromium approach, we will paint all layers transparent grey. If we then invalidate and paint sections of these layers, these sections will not be grey. It&apos;s an extremely simple and robust way of showing where we&apos;ve painted.

I have been working on a patch based on your earlier attempt at repaint testing in the chromium way, and it&apos;s been working great for chromium (actually, I have just been working on getting DRT for mac to do things the chromium way). In the ChangeLog, you mentioned that chromium&apos;s method detects the entire view as having been modified whenever the compositor renders, but I haven&apos;t seen this. With my patch, if I trigger the repaint mask code on poster circle, for example, the page continues to animate and to composite and it remains grey. It only stops being grey when I force it to paint by selecting sections of the text on the page.

I think that the mask-with-holes approach of the other ports is going to be a liability for them going forward as we have more complex situations with composited layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744638</commentid>
    <comment_count>9</comment_count>
      <attachid>169203</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 14:46:57 -0700</bug_when>
    <thetext>Comment on attachment 169203
Patch

Attachment 169203 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14412247

New failing tests:
compositing/checkerboard.html
animations/3d/matrix-transform-type-animation.html
animations/3d/state-at-end-event-transform.html
compositing/direct-image-compositing.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
compositing/scrollbar-painting.html
compositing/clip-change.html
compositing/text-on-large-layer.html
compositing/layers-inside-overflow-scroll.html
compositing/animation/state-at-end-event-transform-layer.html
compositing/sibling-positioning.html
compositing/generated-content.html
compositing/fixed-position-changed-in-composited-layer.html
compositing/self-painting-layers.html
animations/cross-fade-webkit-mask-box-image.html
animations/3d/change-transform-in-end-event.html
compositing/absolute-position-changed-with-composited-parent-layer.html
compositing/absolute-position-changed-in-composited-layer.html
compositing/flat-with-transformed-child.html
compositing/backface-visibility/backface-visibility-3d.html
animations/cross-fade-list-style-image.html
animations/cross-fade-background-image.html
animations/cross-fade-border-image-source.html
compositing/preserve-3d-toggle.html
compositing/fixed-position-scroll-offset-history-restore.html
compositing/compositing-visible-descendant.html
animations/cross-fade-webkit-mask-image.html
compositing/fixed-position-changed-within-composited-parent-layer.html
compositing/animation/busy-indicator.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745134</commentid>
    <comment_count>10</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-18 03:32:41 -0700</bug_when>
    <thetext>(In reply to comment #8)

I think that&apos;s a fair summary Ian, but let me clear up some terms to avoid confusion:

1. The &quot;Chromium way&quot; in this patch refers to old way of drawing a transparent mask over the WebView. Does not support accelerated compositing.

2. The &quot;Chromium way&quot; in comment #8 refers to the patch in bug 96087 which works by painting the repaint mask to each layer&apos;s RenderLayerBacking.

3. Finally, the mask-with-holes approach used by this patch and the other ports works by accumulating a list of repaint rects in FrameView and using it to compose a mask that highlights repaints. Currently only supports tracking repaints to the root layer.

I&apos;m starting to feel that extending option 3 with non-root layer support is the way to go. More precisely, I&apos;d make RenderLayerBacking register paint rects as absolute FloatQuads (instead of IntRects) on their enclosing FrameView. DRT would then use them to make a mask with holes.

You mentioned clipping, occlusion, backface culling, etc., as issues, but actually I think not having those operations is an advantage :) Being able to see painting happening outside overflow clips or in backfacing or occluded layers is useful for spotting bugs in other parts of the system and for testing optimizations like the one in bug 96087.

I don&apos;t think having complex holes in the mask is an issue either. Ports already need to handle complex clipping paths for canvas painting.

One disadvantage of the mask-with-holes approach is that it&apos;s harder to have an interactive mode. The compositor would need to do a second rendering pass to apply the mask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745195</commentid>
    <comment_count>11</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-10-18 06:13:51 -0700</bug_when>
    <thetext>&gt; You mentioned clipping, occlusion, backface culling, etc., as issues, but actually I think not having those operations is an advantage :) Being able to see painting happening outside overflow clips or in backfacing or occluded layers is useful for spotting bugs in other parts of the system and for testing optimizations like the one in bug 96087.

That&apos;s a very good point. I retract my previous objection :)

&gt; 
&gt; I don&apos;t think having complex holes in the mask is an issue either. Ports already need to handle complex clipping paths for canvas painting.
&gt; 

In this case, I wasn&apos;t referring to the complex holes that result from taking the union of rects or quads, but the fact that we would have to subtract bits of these holes because of transformed layers that may clip or occlude them. But as you mentioned above, it&apos;s probably better than we not do this clipping or occluding anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745226</commentid>
    <comment_count>12</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-18 06:52:22 -0700</bug_when>
    <thetext>Re: scrolling; with this patch we get the same behavior as other ports, i.e., scroll invalidations aren&apos;t tracked and simply scrolling a page shows everything grayed out. Once we have tracking for non-root layer paints, (composited) scrolling will start to make more sense as the newly exposed tiles will get highlighted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745425</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-18 11:31:57 -0700</bug_when>
    <thetext>The other thing to keep in mind is that we&apos;d really like to do to repaint tests by dumping a text representation of the repainted rects instead of using pixels to verify, so anything that moves us closer to that is moving in the right direction.

(In reply to comment #12)
&gt; Re: scrolling; with this patch we get the same behavior as other ports, i.e., scroll invalidations aren&apos;t tracked and simply scrolling a page shows everything grayed out. Once we have tracking for non-root layer paints, (composited) scrolling will start to make more sense as the newly exposed tiles will get highlighted.

Great!  I think that&apos;s the best behavior.  Having this be consistent across chromium ports might let you even delete some baselines that currently are different between cr-win vs cr-mac/cr-linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872512</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 17:07:22 -0700</bug_when>
    <thetext>Marked LayoutTest bugs, bugs with Chromium IDs, and some others as WontFix. Test failure bugs still are trackable via TestExpectations or disabled unit tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169203</attachid>
            <date>2012-10-17 10:01:06 -0700</date>
            <delta_ts>2012-10-17 14:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99605-20121017175952.patch</filename>
            <type>text/plain</type>
            <size>11280</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDRiMDU5YWE2ODViZmQyZWJkMWUwMGY2OGUxMGU5Mzk4ZTBjY2YxY2YuLjgyY2M5YmFiMmFhNGEw
M2JhNTUwYzlmMjg3ZTIyODIyMDcxMWVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMTAtMTcgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBEUlQgcmVwYWludCB0cmFja2lu
ZyB3aXRoIG90aGVyIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZXZpb3VzbHkgQ2hyb21pdW0ncyBEUlQgcG9ydCBwZXJmb3JtZWQgcmVwYWlu
dCB0cmFja2luZyBieSBmaXJzdAorICAgICAgICBwYWludGluZyB0aGUgZW50aXJlIGNvbnRlbnRz
IG9mIHRoZSBXZWJWaWV3IGZvbGxvd2VkIGJ5IGEgdHJhbnNsdWNlbnQKKyAgICAgICAgcmVjdGFu
Z2xlIG92ZXIgdGhlIGVudGlyZSB2aWV3LiBUaGlzIGhhZCB0aGUgZWZmZWN0IG9mIGhpZ2hsaWdo
dGluZyBhbnkKKyAgICAgICAgZnVydGhlciBwYWludCBvcGVyYXRpb25zLCBiZWNhdXNlIHRoZXkg
d2VyZSBwYWludGVkIG9uIHRvcCBvZiB0aGUgZGFyaworICAgICAgICBvdmVybGF5IG1hc2suCisK
KyAgICAgICAgSW4gY29udHJhc3QsIG90aGVyIHBvcnRzIHN1Y2ggYXMgTWFjIGFuZCBRdCBpbnN0
ZWFkIGNvbGxlY3QgYSBsaXN0IG9mCisgICAgICAgIHBhaW50IHJlY3RhbmdsZXMgaW4gRnJhbWVW
aWV3IGFuZCB0aGVuIGRyYXcgYSBtYXNrIGJhc2VkIG9uIHRoZXNlCisgICAgICAgIHJlY3Rhbmds
ZXMgb24gdG9wIG9mIHRoZSBwYWludGVkIGNvbnRlbnRzIHdpdGggaG9sZXMgY29ycmVzcG9uZGlu
ZyB0bworICAgICAgICBwYWludGVkIGFyZWFzLgorCisgICAgICAgIFRoZSBtYWluIGFkdmFudGFn
ZSBvZiB0aGUgRnJhbWVWaWV3LWJhc2VkIG1ldGhvZCBpcyBzdXBwb3J0IGZvcgorICAgICAgICBh
Y2NlbGVyYXRlZCBjb21wb3NpdGluZzsgYmVjYXVzZSB0aGUgY29tcG9zaXRvciBkb2VzIG5vdCBk
byBwYXJ0aWFsCisgICAgICAgIHJlbmRlcmluZywgQ2hyb21pdW0ncyBtZXRob2QgZGV0ZWN0cyB0
aGUgZW50aXJlIHZpZXcgYXMgaGF2aW5nIGJlZW4KKyAgICAgICAgbW9kaWZpZWQgd2hlbmV2ZXIg
dGhlIGNvbXBvc2l0b3IgcmVuZGVycy4KKworICAgICAgICBUaGlzIGNoYW5nZSByZXF1aXJlcyBu
ZXcgQ2hyb21pdW0gYmFzZWxpbmVzIGZvciBtb3N0IGV4aXN0aW5nIHRlc3RzCisgICAgICAgIHVz
aW5nIHJlcGFpbnQgdHJhY2tpbmcsIGJlY2F1c2Ugd2Ugbm93IGRpc3BsYXkgYWxsIGluZGl2aWR1
YWwgcmVwYWludAorICAgICAgICByZWN0YW5nbGVzIGluc3RlYWQgb2YgdGhlaXIgdW5pb24gbGlr
ZSBiZWZvcmUuIFRoaXMgYWxsb3dzIGZvciBtb3JlCisgICAgICAgIGFjY3VyYXRlIHJlcGFpbnQg
dHJhY2tpbmcgYW5kIGlzIGFsc28gaW4gbGluZSB3aXRoIG90aGVyIHBvcnRzLgorCisgICAgICAg
ICogcHVibGljL1dlYldpZGdldC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYldp
ZGdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6c3RhcnRUcmFja2luZ1JlcGFpbnRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp0cmFja2VkUmVwYWludFJlY3RhbmdsZXMp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzdGFydFRyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnRyYWNrZWRSZXBhaW50UmVjdGFuZ2xlcyk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTIt
MTAtMTcgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTG9j
YWxpemVkIGRhdGUgc2hvdWxkIGJlIGJhc2VkIG9uIExETUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViV2lkZ2V0LmgKaW5kZXggZmE0NTYyMzhhM2JkMTc4YTllMTJhOTIzMmU4ZTE3
OGEzYjFmMmIzZi4uNTMxYzhlZmYyYTE5ODdlNzNhZmMwNWFlZTdmNDM3MzBkZmI5NmJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlZlY3Rvci5oIgogCiAjZGVmaW5lIFdFQktJVF9IQVNfTkVXX0ZVTExTQ1JFRU5fQVBJ
IDEKICNkZWZpbmUgV0VCV0lER0VUX0hBU19TRVRDT01QT1NJVE9SU1VSRkFDRVJFQURZIDEKQEAg
LTUwLDcgKzUxLDYgQEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKIHN0
cnVjdCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiAKIGNsYXNzIFdlYldpZGdldCB7CiBwdWJsaWM6CkBA
IC0xMjUsNiArMTI1LDE0IEBAIHB1YmxpYzoKICAgICAvLyBhbmltYXRlIG9yIGxheW91dCBpbiB0
aGlzIGNhc2UuCiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCkgPSAwOwog
CisgICAgLy8gU3RhcnQgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVzLiBDbGVhcnMgdGhlIGxp
c3Qgb2YgcmVjdGFuZ2xlcworICAgIC8vIGNvbGxlY3RlZCBzbyBmYXIuIFVzZWQgZm9yIGxheW91
dCB0ZXN0aW5nLgorICAgIHZpcnR1YWwgdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKSB7IH0K
KworICAgIC8vIFJldHVybnMgdGhlIGNvbGxlY3RlZCByZXBhaW50IHJlY3RhbmdsZXMgc2luY2Ug
c3RhcnRUcmFja2luZ1JlcGFpbnRzKCkKKyAgICAvLyB3YXMgbGFzdCBjYWxsZWQuCisgICAgdmly
dHVhbCBXZWJWZWN0b3I8V2ViUmVjdD4gdHJhY2tlZFJlcGFpbnRSZWN0YW5nbGVzKCkgY29uc3Qg
eyByZXR1cm4gV2ViVmVjdG9yPFdlYlJlY3Q+KCk7IH0KKwogICAgIC8vIEluZGljYXRlcyB0aGF0
IHRoZSBjb21wb3NpdGluZyBzdXJmYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYldpZGdldCBp
cwogICAgIC8vIHJlYWR5IHRvIHVzZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRvclN1
cmZhY2VSZWFkeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCBkNmJmOTRiOTY3NjM5ODQ3OTc0NmQ4YjMzMTdjMDcxOTEzODk1ZjA2Li40Mjlj
ZWE4ZmM4YjRkMGMxYWQ1MGUyYmJiZTg3YTcwY2FjODhmZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xODIxLDYgKzE4MjEsMjMgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3Qs
IFBhaW50T3B0aW9ucyBvcHQKICAgICB9CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0VHJh
Y2tpbmdSZXBhaW50cygpCit7CisgICAgaWYgKCFwYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgdmll
dy0+c2V0VHJhY2tzUmVwYWludHModHJ1ZSk7CisgICAgdmlldy0+cmVzZXRUcmFja2VkUmVwYWlu
dHMoKTsKK30KKworV2ViVmVjdG9yPFdlYlJlY3Q+IFdlYlZpZXdJbXBsOjp0cmFja2VkUmVwYWlu
dFJlY3RhbmdsZXMoKSBjb25zdAoreworICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm4g
V2ViVmVjdG9yPFdlYlJlY3Q+KCk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgpLT5tYWlu
RnJhbWUoKS0+dmlldygpOworICAgIHJldHVybiB2aWV3LT50cmFja2VkUmVwYWludFJlY3RzKCk7
Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnRoZW1lQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFwYWdl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0NzkwN2Yx
MjQxN2UzZjIyMGFjOGIwMGY5MzYwYWVmYWFhMGRhZjQyLi44MDU1ZjVlZjA4ZWZkYWFhOGNmYTUz
MmQwMTBjMWY1NGJjZDgwMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGUoZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7IC8vIEFsc28gaW1wbGVtZW50
cyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpsYXlvdXQoKQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiwgUGFpbnRPcHRpb25zID0gUmVhZGJhY2tGcm9t
Q29tcG9zaXRvcklmQXZhaWxhYmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRUcmFja2luZ1Jl
cGFpbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViUmVjdD4gdHJhY2tl
ZFJlcGFpbnRSZWN0YW5nbGVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRo
ZW1lQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wb3NpdGUoYm9vbCBmaW5pc2gpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRkMmFmNzQ4YmY5NmEzZTYyMzBkNzA5NjZm
MmY3YTMxYTYyYWFkNWQuLmFiNWMzMjY2Njg5ZDQxYmViNTQ3YTViMTI1MjcxOTczNWQ3YTAxNTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxMi0xMC0xNyAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVuaWZ5IERSVCByZXBhaW50IHRyYWNraW5nIHdp
dGggb3RoZXIgcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5NjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUHJldmlvdXNseSBDaHJvbWl1bSdzIERSVCBwb3J0IHBlcmZvcm1lZCByZXBhaW50IHRy
YWNraW5nIGJ5IGZpcnN0CisgICAgICAgIHBhaW50aW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2Yg
dGhlIFdlYlZpZXcgZm9sbG93ZWQgYnkgYSB0cmFuc2x1Y2VudAorICAgICAgICByZWN0YW5nbGUg
b3ZlciB0aGUgZW50aXJlIHZpZXcuIFRoaXMgaGFkIHRoZSBlZmZlY3Qgb2YgaGlnaGxpZ2h0aW5n
IGFueQorICAgICAgICBmdXJ0aGVyIHBhaW50IG9wZXJhdGlvbnMsIGJlY2F1c2UgdGhleSB3ZXJl
IHBhaW50ZWQgb24gdG9wIG9mIHRoZSBkYXJrCisgICAgICAgIG92ZXJsYXkgbWFzay4KKworICAg
ICAgICBJbiBjb250cmFzdCwgb3RoZXIgcG9ydHMgc3VjaCBhcyBNYWMgYW5kIFF0IGluc3RlYWQg
Y29sbGVjdCBhIGxpc3Qgb2YKKyAgICAgICAgcGFpbnQgcmVjdGFuZ2xlcyBpbiBGcmFtZVZpZXcg
YW5kIHRoZW4gZHJhdyBhIG1hc2sgYmFzZWQgb24gdGhlc2UKKyAgICAgICAgcmVjdGFuZ2xlcyBv
biB0b3Agb2YgdGhlIHBhaW50ZWQgY29udGVudHMgd2l0aCBob2xlcyBjb3JyZXNwb25kaW5nIHRv
CisgICAgICAgIHBhaW50ZWQgYXJlYXMuCisKKyAgICAgICAgVGhlIG1haW4gYWR2YW50YWdlIG9m
IHRoZSBGcmFtZVZpZXctYmFzZWQgbWV0aG9kIGlzIHN1cHBvcnQgZm9yCisgICAgICAgIGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nOyBiZWNhdXNlIHRoZSBjb21wb3NpdG9yIGRvZXMgbm90IGRvIHBh
cnRpYWwKKyAgICAgICAgcmVuZGVyaW5nLCBDaHJvbWl1bSdzIG1ldGhvZCBkZXRlY3RzIHRoZSBl
bnRpcmUgdmlldyBhcyBoYXZpbmcgYmVlbgorICAgICAgICBtb2RpZmllZCB3aGVuZXZlciB0aGUg
Y29tcG9zaXRvciByZW5kZXJzLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcXVpcmVzIG5ldyBD
aHJvbWl1bSBiYXNlbGluZXMgZm9yIG1vc3QgZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdXNpbmcg
cmVwYWludCB0cmFja2luZywgYmVjYXVzZSB3ZSBub3cgZGlzcGxheSBhbGwgaW5kaXZpZHVhbCBy
ZXBhaW50CisgICAgICAgIHJlY3RhbmdsZXMgaW5zdGVhZCBvZiB0aGVpciB1bmlvbiBsaWtlIGJl
Zm9yZS4gVGhpcyBhbGxvd3MgZm9yIG1vcmUKKyAgICAgICAgYWNjdXJhdGUgcmVwYWludCB0cmFj
a2luZyBhbmQgaXMgYWxzbyBpbiBsaW5lIHdpdGggb3RoZXIgcG9ydHMuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKERSVFRl
c3RSdW5uZXI6OmRpc3BsYXkpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6ZGlzcGxheUludmFs
aWRhdGVkUmVnaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c3Rh
cnRUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYWludFRyYWNrZWRS
ZXBhaW50UmVjdGFuZ2xlT3ZlcmxheSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMC0xNyAg
SGFyYWxkIEFsdmVzdHJhbmQgIDxodGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQg
dGhlIFNlbGVjdG9yIGFyZ3VtZW50IHRvIFJUQ1BlZXJDb25uZWN0aW9uLmdldFN0YXRzCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IDhh
ZWU3YzViMmM3NDAxMDRjODAyMjM4OTQ1OGEwYmZkZmMyOWQ0ZjguLjNlZTliNjc1NGY5NTY1Zjcx
YWRhMjI0NDRlZTQyNmFlOTNkN2JkMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB2b2lkIERSVFRl
c3RSdW5uZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdAogICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhl
aWdodCk7CiAgICAgaG9zdC0+dXBkYXRlUGFpbnRSZWN0KHJlY3QpOwogICAgIGhvc3QtPnBhaW50
SW52YWxpZGF0ZWRSZWdpb24oKTsKLSAgICBob3N0LT5kaXNwbGF5UmVwYWludE1hc2soKTsKKyAg
ICBob3N0LT5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsK
IH0KIApAQCAtMTI3Myw3ICsxMjczLDcgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpkaXNwbGF5SW52
YWxpZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEMKIHsKICAg
ICBXZWJWaWV3SG9zdCogaG9zdCA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCk7CiAgICAgaG9zdC0+
cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIGhvc3QtPmRpc3BsYXlSZXBhaW50TWFzaygp
OworICAgIGhvc3QtPnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApp
bmRleCAzMjU4NWZhYTFiMmQ4YWQ4MWE4M2IxNWU4ZjcxMmJkOGNhNzI0ODliLi42ZjlkYjBjNTQx
MTc5NjU3MTFkOTFlZWZjNDJiMzRmMTA1ZTQ1OTE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTYyNyw2ICs2MjcsNyBAQCB2b2lkIFRlc3RTaGVs
bDo6ZHVtcCgpCiAgICAgICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludFBhZ2VzV2l0aEJvdW5k
YXJpZXMoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRJ
bnZhbGlkYXRlZFJlZ2lvbigpOworICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludFRyYWNrZWRS
ZXBhaW50UmVjdGFuZ2xlT3ZlcmxheSgpOwogCiAgICAgICAgIC8vIFNlZSBpZiB3ZSBuZWVkIHRv
IGRyYXcgdGhlIHNlbGVjdGlvbiBib3VuZHMgcmVjdC4gU2VsZWN0aW9uIGJvdW5kcwogICAgICAg
ICAvLyByZWN0IGlzIHRoZSByZWN0IGVuY2xvc2luZyB0aGUgKHBvc3NpYmx5IHRyYW5zZm9ybWVk
KSBzZWxlY3Rpb24uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKaW5kZXggYzdhYjQ3NWU3ZmU3OWVmMThkNTI4ODJlMzU3MjZhNDU5NjU2ZDdlOS4uZDJh
Y2IzYTBhZTNjMjNiZGJhZjIyNzJiNTY1NTQyZDFjMjRkYzFlMCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTk0NiwxMSArMTk0NiwyNSBA
QCB2b2lkIFdlYlZpZXdIb3N0OjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKICAgICBtX2NhbnZhcy5j
bGVhcigpOwogfQogCi0vLyBQYWludHMgdGhlIGVudGlyZSBjYW52YXMgYSBzZW1pLXRyYW5zcGFy
ZW50IGJsYWNrIChncmF5aXNoKS4gVGhpcyBpcyB1c2VkCi0vLyBieSB0aGUgbGF5b3V0IHRlc3Rz
IGluIGZhc3QvcmVwYWludC4gVGhlIGFscGhhIHZhbHVlIG1hdGNoZXMgdXBzdHJlYW0uCi12b2lk
IFdlYlZpZXdIb3N0OjpkaXNwbGF5UmVwYWludE1hc2soKQordm9pZCBXZWJWaWV3SG9zdDo6c3Rh
cnRUcmFja2luZ1JlcGFpbnRzKCkKIHsKLSAgICBjYW52YXMoKS0+ZHJhd0FSR0IoMTY3LCAwLCAw
LCAwKTsKKyAgICB3ZWJXaWRnZXQoKS0+c3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKK3Zv
aWQgV2ViVmlld0hvc3Q6OnBhaW50VHJhY2tlZFJlcGFpbnRSZWN0YW5nbGVPdmVybGF5KCkKK3sK
KyAgICBTa1BhdGggcGF0aDsKKyAgICBXZWJWZWN0b3I8V2ViUmVjdD4gcmVjdHMgPSB3ZWJXaWRn
ZXQoKS0+dHJhY2tlZFJlcGFpbnRSZWN0YW5nbGVzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0aC5hZGRSZWN0KHJlY3RzW2ldLngs
IHJlY3RzW2ldLnksIHJlY3RzW2ldLnggKyByZWN0c1tpXS53aWR0aCwgcmVjdHNbaV0ueSArIHJl
Y3RzW2ldLmhlaWdodCwgU2tQYXRoOjprQ0NXX0RpcmVjdGlvbik7CisKKyAgICBXZWJTaXplIHdp
ZGdldFNpemUgPSB3ZWJXaWRnZXQoKS0+c2l6ZSgpOworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAg
cGFpbnQuc2V0Q29sb3IoMHhBNzAwMDAwMCk7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6
a0ZpbGxfU3R5bGUpOworICAgIHBhaW50LnNldEZsYWdzKFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxh
Zyk7CisgICAgY2FudmFzKCktPmNsaXBQYXRoKHBhdGgsIFNrUmVnaW9uOjprRGlmZmVyZW5jZV9P
cCk7CisgICAgY2FudmFzKCktPmRyYXdSZWN0Q29vcmRzKDAsIDAsIHdpZGdldFNpemUud2lkdGgs
IHdpZGdldFNpemUuaGVpZ2h0LCBwYWludCk7CiB9CiAKIC8vIFNpbXVsYXRlIGEgcHJpbnQgYnkg
Z29pbmcgaW50byBwcmludCBtb2RlIGFuZCB0aGVuIGV4aXQgc3RyYWlnaHQgYXdheS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IGM5ZTE3YjA3ZmQ4
YTQ1MDFhMjkwNDdlM2RlZDk0Y2FmMDZiNDQ4MDUuLmQ0MTE1OGIwNDU3YjM1MDZiYzZlNWE0ZDUz
NDc5OTExMzA3ZmM5ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaApAQCAtMTA3LDcgKzEwNyw4IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdl
YktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAg
dm9pZCBwYWludEludmFsaWRhdGVkUmVnaW9uKCk7CiAgICAgdm9pZCBwYWludFBhZ2VzV2l0aEJv
dW5kYXJpZXMoKTsKICAgICBTa0NhbnZhcyogY2FudmFzKCk7Ci0gICAgdm9pZCBkaXNwbGF5UmVw
YWludE1hc2soKTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICAgIHZvaWQg
cGFpbnRUcmFja2VkUmVwYWludFJlY3RhbmdsZU92ZXJsYXkoKTsKIAogICAgIHZvaWQgbG9hZFVS
TEZvckZyYW1lKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
IGZyYW1lTmFtZSk7CiAgICAgVGVzdE5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29u
dHJvbGxlcigpIHsgcmV0dXJuIG1fbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0K
</data>
<flag name="review"
          id="182418"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="182496"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>