<?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>60524</bug_id>
          
          <creation_ts>2011-05-09 18:11:47 -0700</creation_ts>
          <short_desc>[chromium] Clean up setLayerRenderer() calls in LayerRendererChromium</short_desc>
          <delta_ts>2011-05-10 20:01: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>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400958</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-09 18:11:47 -0700</bug_when>
    <thetext>[chromium] Clean up setLayerRenderer() calls in LayerRendererChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401347</commentid>
    <comment_count>1</comment_count>
      <attachid>92985</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 11:02:46 -0700</bug_when>
    <thetext>Created attachment 92985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401348</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 11:03:25 -0700</bug_when>
    <thetext>Cleanup time!  This is not the only cleanup we need to do around setLayerRenderer, but it&apos;s one of them and feels safe to land in isolation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401380</commentid>
    <comment_count>3</comment_count>
      <attachid>92985</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-05-10 11:38:10 -0700</bug_when>
    <thetext>Comment on attachment 92985
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:375
&gt; +            }

Is this the total depth of the hierarchy for each layer (i.e., optional mask / replica / replica + mask sub-layers)? If so, I think this should be factored out into a separate method and called from both here and setLayerRendererRecursive.

Also, it seems to me that conceptually these updates don&apos;t belong in a method called paintLayerContents(), but if this is the best or most efficient place to put them it&apos;s fine.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:506
&gt; +        setLayerRendererRecursive(layer-&gt;replicaLayer());

Are these recursive calls for the mask and replica layers really necessary? Or is the depth of the hierarchies of those layers bounded? If the latter, then this should re-use the logic that&apos;s being added to paintLayerContents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401404</commentid>
    <comment_count>4</comment_count>
      <attachid>92985</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 12:00:31 -0700</bug_when>
    <thetext>Comment on attachment 92985
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:375
&gt;&gt; +            }
&gt; 
&gt; Is this the total depth of the hierarchy for each layer (i.e., optional mask / replica / replica + mask sub-layers)? If so, I think this should be factored out into a separate method and called from both here and setLayerRendererRecursive.
&gt; 
&gt; Also, it seems to me that conceptually these updates don&apos;t belong in a method called paintLayerContents(), but if this is the best or most efficient place to put them it&apos;s fine.

This function does not iterate through every layer in the tree, only those that will actually be painted so it can&apos;t share the iteration logic with setLayerRendererRecursive()

It&apos;s true that this call is fairly out of place here, but the paint implementation on ContentLayerChromium depends on the LayerRendererChromium pointer being up to date.  That will get cleaned up in the course of fixing https://bugs.webkit.org/show_bug.cgi?id=58833

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:506
&gt;&gt; +        setLayerRendererRecursive(layer-&gt;replicaLayer());
&gt; 
&gt; Are these recursive calls for the mask and replica layers really necessary? Or is the depth of the hierarchies of those layers bounded? If the latter, then this should re-use the logic that&apos;s being added to paintLayerContents.

Currently mask layers have no children, mask layers, or replica layers.  Replica layers have no children or replica layers, but may have a mask layer.  The difference between this and paintLayerContents is that paintLayerContents does not recurse its children.

It&apos;s possible to write this by calling setLayerRenderer() on the mask, replica, and replica mask layers if they exist rather than recursing, but that&apos;s a little more error prone and less flexible if the tree structure gets more general in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401424</commentid>
    <comment_count>5</comment_count>
      <attachid>92985</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-05-10 12:41:09 -0700</bug_when>
    <thetext>Comment on attachment 92985
Patch

OK. You might want to ask Vangelis to take a look before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401679</commentid>
    <comment_count>6</comment_count>
      <attachid>92985</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-05-10 18:18:53 -0700</bug_when>
    <thetext>Comment on attachment 92985
Patch

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

One comment, otherwise looks good.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:834
&gt;      if (layer-&gt;bounds().isEmpty())

Do we still want to have this early return?  I&apos;m not sure why isEmpty() is different than !drawsContent() .  In the second case we&apos;ll call pushPropertiesTo()  but not in the first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401712</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 19:23:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92985 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92985&amp;action=review
&gt; 
&gt; One comment, otherwise looks good.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:834
&gt; &gt;      if (layer-&gt;bounds().isEmpty())
&gt; 
&gt; Do we still want to have this early return?  I&apos;m not sure why isEmpty() is different than !drawsContent() .  In the second case we&apos;ll call pushPropertiesTo()  but not in the first.

We need the early return for content layers currently so we avoid calling updateCompositorResources() on &apos;empty&apos; layers since for empty layers the m_tiler member is null (because of http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp#L47) and updateCompositorResources() doesn&apos;t null check it.  In general it seems a little better to avoid calling updateCompositorResources() for layers that are empty since we skip them in the paint step (http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp#L365) and the draw step (http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp#L903).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401714</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 19:29:05 -0700</bug_when>
    <thetext>Committed r86208: &lt;http://trac.webkit.org/changeset/86208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401725</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 20:01:22 -0700</bug_when>
    <thetext>This seems to have changed the rendering of media/video-transformed.html, but I think the new rendering is slightly better.  I don&apos;t have time/access to do anything about it right now but if someone wants to either suppress the diff and file a bug on me or revert I would not be too mad!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92985</attachid>
            <date>2011-05-10 11:02:46 -0700</date>
            <delta_ts>2011-05-10 18:18:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60524-20110510110245.patch</filename>
            <type>text/plain</type>
            <size>8131</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTExOGI2MDlmMmYxOGI1
ZmViNDI5OGEyZTk0YzhhOTJiOTEwMjFjLi5hZDJmMTJhNzE2MjcxYjkwNzIwYmRiMmNlYTU2NzU3
ZThiYmMyZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDUtMDkgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIHNldExheWVyUmVu
ZGVyZXIoKSBjYWxscyBpbiBMYXllclJlbmRlcmVyQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTI0CisKKyAgICAgICAgVGhpcyByZWZh
Y3RvcnMgdGhlIHdheSBMYXllclJlbmRlcmVyQ2hyb21pdW0gY2FsbHMgc2V0TGF5ZXJSZW5kZXJl
ciBvbiBpdHMgbGF5ZXJzIGluIGEgZmV3IHdheXMgdG8gY2xlYW4gdGhpbmdzCisgICAgICAgIHVw
OgorCisgICAgICAgICopIE1vdmUgdGhlIHByZS1wYWludCBjYWxsIHRvIHNldExheWVyUmVuZGVy
ZXIgZnJvbSB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoKSB0byBwYWludExheWVy
Q29udGVudHMoKS4KKyAgICAgICAgICAgIHVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJmYWNl
cygpIGRvZXMgdG9vIG11Y2ggYW5kIHRoZSBsYXllciByZW5kZXJlciBwb2ludGVyIG9ubHkgaGFz
IHRvIGJlIHVwIHRvIGRhdGUgdG8gZG8KKyAgICAgICAgICAgIHRoZSBhY3R1YWwgcGFpbnQuIExv
bmdlciB0ZXJtIHdlIHdvbid0IG5lZWQgdG8gY2FsbCB0aGlzIGF0IGFsbCBpbiBvcmRlciB0byBj
YWxsIHBhaW50IGFuZCB0aGlzIGNhbGwgd2lsbCBqdXN0CisgICAgICAgICAgICBnbyBhd2F5Lgor
ICAgICAgICAqKSBUd2Vha3MgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1JlY3Vyc2l2ZSgpIHRv
IGJlIHNsaWdodGx5IHNob3J0ZXIgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCisgICAgICAgICopIEV4
cGxpY2l0bHkgc2V0IHRoZSBMYXllclJlbmRlcmVyQ2hyb21pdW0gZm9yIGVhY2ggbGF5ZXIgaW4g
dGhlIHRyZWUgd2hlbiB0cmFuc2ZlcmluZyB0aGUgcm9vdCBsYXllciAodXNlZAorICAgICAgICAg
ICAgZHVyaW5nIGxvc3QgY29udGV4dCkuICBMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVy
IGNoZWNrcyBpZiB0aGUgbmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bSBpcyBkaWZmZXJlbnQKKyAg
ICAgICAgICAgIGJ5IGNvbXBhcmluZyB0aGUgcG9pbnRlciB2YWx1ZSB0byB0aGUgb2xkIG9uZS4g
IFRoaXMgY2hlY2sgd2lsbCBiZSBpbmNvcnJlY3QgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxvc3QK
KyAgICAgICAgICAgIGNvbnRleHRzIGJldHdlZW4gYSBzZXRMYXllclJlbmRlcmVyKCkgY2FsbCBh
bmQgYSBuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtIGhhcHBlbnMgdG8gYmUgYWxsb2NhdGVkIGF0
IHRoZQorICAgICAgICAgICAgc2FtZSBhZGRyZXNzIGFzIHRoZSBvbGQgb25lLiAgQW4gZXhwbGlj
aXQgY2FsbCB0byBzZXRMYXllclJlbmRlcmVyKCkgZm9yIGV2ZXJ5IGxheWVyIGluIHRoZSB0cmVl
IGZpeGVzIHRoaXMKKyAgICAgICAgICAgIHNpbmNlIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQgdGhlIG5ldyBhbmQgb2xkIExheWVyUmVuZGVyZXJDaHJvbWl1bSBhcmUgc3RpbGwgbGl2ZSBh
bmQgc28gdGhleSBjYW5ub3QKKyAgICAgICAgICAgIGxpdmUgYXQgdGhlIHNhbWUgYWRkcmVzcy4K
KworICAgICAgICBUaGUgZmlyc3QgdHdvIGNoYW5nZXMgYXJlIHB1cmVseSByZWZhY3RvcnMgYW5k
IGRvIG5vdCBjaGFuZ2UgYmVoYXZpb3IuICBUaGUgdGhpcmQgaXNzdWUgY2FuJ3QgYmUgdGVzdGVk
IHZpYSBhCisgICAgICAgIGxheW91dCB0ZXN0IGRpcmVjdGx5IGFzIHdlIGRvbid0IGhhdmUgYSB3
YXkgdG8gaW5kdWNlIGEgbG9zdCBjb250ZXh0IG9uIHRoZSBjb21wb3NpdG9yIGluIGEgbGF5b3V0
IHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpjbGVhckxheWVyUmVuZGVyZXJSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0cmFuc2ZlclJvb3RMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJm
YWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorCiAyMDExLTA1LTA5ICBBbmRyZWFz
IEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IDA5ZDgzNjAxOTYxODBkMmY1YjE0ODFlZjM0YjAxZDVmM2FlN2Q5MjQuLjg5NjM2OTEz
YTk3ZDY1OTEwMzFlMWI0ZGNmODhkZGEyM2Q4ZDIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtMzY1LDYgKzM2NSwxNSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFj
ZUxheQogICAgICAgICAgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgIGxheWVyLT5zZXRMYXllclJlbmRlcmVy
KHRoaXMpOworICAgICAgICAgICAgaWYgKGxheWVyLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgICAg
ICAgICBsYXllci0+bWFza0xheWVyKCktPnNldExheWVyUmVuZGVyZXIodGhpcyk7CisgICAgICAg
ICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKSB7CisgICAgICAgICAgICAgICAgbGF5ZXIt
PnJlcGxpY2FMYXllcigpLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOworICAgICAgICAgICAgICAg
IGlmIChsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQorICAgICAgICAgICAgICAg
ICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5zZXRMYXllclJlbmRlcmVy
KHRoaXMpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBJbnRSZWN0IHRhcmdldFN1cmZh
Y2VSZWN0ID0gY2NMYXllckltcGwtPnRhcmdldFJlbmRlclN1cmZhY2UoKSA/IGNjTGF5ZXJJbXBs
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlLT5jb250ZW50UmVjdCgpOwogICAgICAgICAgICAgSW50UmVjdCBzY2lzc29yUmVjdCA9
IGxheWVyLT5jY0xheWVySW1wbCgpLT5zY2lzc29yUmVjdCgpOwogICAgICAgICAgICAgaWYgKCFz
Y2lzc29yUmVjdC5pc0VtcHR5KCkpCkBAIC00ODUsNiArNDk0LDI2IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXll
cikKICAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7
CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyUmVjdXJz
aXZlKExheWVyQ2hyb21pdW0qIGxheWVyKQoreworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiYgc3VibGF5ZXJzID0gbGF5ZXItPmdldFN1YmxheWVycygpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VibGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICBzZXRM
YXllclJlbmRlcmVyUmVjdXJzaXZlKHN1YmxheWVyc1tpXS5nZXQoKSk7CisKKyAgICBpZiAobGF5
ZXItPm1hc2tMYXllcigpKQorICAgICAgICBzZXRMYXllclJlbmRlcmVyUmVjdXJzaXZlKGxheWVy
LT5tYXNrTGF5ZXIoKSk7CisgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAg
c2V0TGF5ZXJSZW5kZXJlclJlY3Vyc2l2ZShsYXllci0+cmVwbGljYUxheWVyKCkpOworCisgICAg
bGF5ZXItPnNldExheWVyUmVuZGVyZXIodGhpcyk7Cit9CisKK3ZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0cmFuc2ZlclJvb3RMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIG90aGVyKQor
eworICAgIG90aGVyLT5zZXRMYXllclJlbmRlcmVyUmVjdXJzaXZlKG1fcm9vdExheWVyLmdldCgp
KTsKKyAgICBvdGhlci0+bV9yb290TGF5ZXIgPSBtX3Jvb3RMYXllci5yZWxlYXNlKCk7Cit9CisK
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpw
aXhlbHMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKHJlY3QubWF4WCgpIDw9
IG1fdmlld3BvcnRWaXNpYmxlUmVjdC53aWR0aCgpICYmIHJlY3QubWF4WSgpIDw9IG1fdmlld3Bv
cnRWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CkBAIC01NDQsMTkgKzU3MywxMiBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUHJvcGVydGllc0FuZFJlbmRlclN1cmZhY2VzKExheWVy
Q2hyb21pdW0qIGxheQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIENDTGF5ZXJJbXBscyBm
b3IgdGhpcyBzdWJ0cmVlLgogICAgIGxheWVyLT5jcmVhdGVDQ0xheWVySW1wbElmTmVlZGVkKCk7
Ci0gICAgbGF5ZXItPnNldExheWVyUmVuZGVyZXIodGhpcyk7Ci0gICAgaWYgKGxheWVyLT5tYXNr
TGF5ZXIoKSkgeworICAgIGlmIChsYXllci0+bWFza0xheWVyKCkpCiAgICAgICAgIGxheWVyLT5t
YXNrTGF5ZXIoKS0+Y3JlYXRlQ0NMYXllckltcGxJZk5lZWRlZCgpOwotICAgICAgICBsYXllci0+
bWFza0xheWVyKCktPnNldExheWVyUmVuZGVyZXIodGhpcyk7Ci0gICAgfQotICAgIGlmIChsYXll
ci0+cmVwbGljYUxheWVyKCkpIHsKKyAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKQogICAg
ICAgICBsYXllci0+cmVwbGljYUxheWVyKCktPmNyZWF0ZUNDTGF5ZXJJbXBsSWZOZWVkZWQoKTsK
LSAgICAgICAgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOwot
ICAgIH0KLSAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpICYmIGxheWVyLT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCkpIHsKKyAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpICYmIGxh
eWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCiAgICAgICAgIGxheWVyLT5yZXBsaWNh
TGF5ZXIoKS0+bWFza0xheWVyKCktPmNyZWF0ZUNDTGF5ZXJJbXBsSWZOZWVkZWQoKTsKLSAgICAg
ICAgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJSZW5kZXJlcih0
aGlzKTsKLSAgICB9CiAKICAgICBDQ0xheWVySW1wbCogZHJhd0xheWVyID0gbGF5ZXItPmNjTGF5
ZXJJbXBsKCk7CiAgICAgLy8gQ3VycmVudGx5IHdlJ3JlIGNhbGxpbmcgcHVzaFByb3BlcnRpZXNU
bygpIHR3aWNlIC0gb25jZSBoZXJlIGFuZCBvbmNlIGluIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXNSZWN1cnNpdmUoKS4KQEAgLTgxMiwxNiArODM0LDE1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0q
IGxhCiAgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChsYXllci0+bWFza0xheWVyKCkpCisgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXNSZWN1cnNpdmUobGF5ZXItPm1hc2tMYXllcigpKTsKKyAgICBpZiAobGF5ZXItPnJl
cGxpY2FMYXllcigpKQorICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZl
KGxheWVyLT5yZXBsaWNhTGF5ZXIoKSk7CisKICAgICBDQ0xheWVySW1wbCogZHJhd0xheWVyID0g
bGF5ZXItPmNjTGF5ZXJJbXBsKCk7CiAKICAgICBpZiAoZHJhd0xheWVyLT5kcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgZHJhd0xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7Ci0gICAg
aWYgKGRyYXdMYXllci0+bWFza0xheWVyKCkgJiYgZHJhd0xheWVyLT5tYXNrTGF5ZXIoKS0+ZHJh
d3NDb250ZW50KCkpCi0gICAgICAgIGRyYXdMYXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoKTsKLSAgICBpZiAoZHJhd0xheWVyLT5yZXBsaWNhTGF5ZXIoKSAmJiBk
cmF3TGF5ZXItPnJlcGxpY2FMYXllcigpLT5kcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgZHJhd0xh
eWVyLT5yZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOwotICAgIGlm
IChkcmF3TGF5ZXItPnJlcGxpY2FMYXllcigpICYmIGRyYXdMYXllci0+cmVwbGljYUxheWVyKCkt
Pm1hc2tMYXllcigpICYmIGRyYXdMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT5k
cmF3c0NvbnRlbnQoKSkKLSAgICAgICAgZHJhd0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xh
eWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKIAogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGRyYXdMYXllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CmluZGV4IDM5OTU2MmQ2MzIyZjM5OGRmOTI3ZGU1M2M3MWExZmM0MThhZDBiMmIuLjMzMzljZTA3
NGY3MTJhY2U1OTQ0MWEzMDI4Y2E2M2ViNGQ5MWQzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Um9v
dExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwogICAgIExheWVyQ2hyb21pdW0qIHJv
b3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9Ci0gICAgdm9pZCB0cmFuc2Zl
clJvb3RMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIG90aGVyKSB7IG90aGVyLT5tX3Jvb3RM
YXllciA9IG1fcm9vdExheWVyLnJlbGVhc2UoKTsgfQorICAgIHZvaWQgdHJhbnNmZXJSb290TGF5
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBvdGhlcik7CiAKICAgICBib29sIGhhcmR3YXJlQ29t
cG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0KIApAQCAt
MTczLDYgKzE3Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplU2hhcmVkT2JqZWN0
cygpOwogICAgIHZvaWQgY2xlYW51cFNoYXJlZE9iamVjdHMoKTsKIAorICAgIHZvaWQgc2V0TGF5
ZXJSZW5kZXJlclJlY3Vyc2l2ZShMYXllckNocm9taXVtKik7CisKICAgICBJbnRSZWN0IG1fdmll
d3BvcnRWaXNpYmxlUmVjdDsKICAgICBJbnRSZWN0IG1fdmlld3BvcnRDb250ZW50UmVjdDsKICAg
ICBJbnRQb2ludCBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRpb247Cg==
</data>
<flag name="review"
          id="86045"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>