<?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>104956</bug_id>
          
          <creation_ts>2012-12-13 14:40:33 -0800</creation_ts>
          <short_desc>[chromium] Fix PlatformContextSkia::setDrawingToImageBuffer abuse</short_desc>
          <delta_ts>2013-01-07 14:06:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>105051</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alok Priyadarshi">alokp</reporter>
          <assigned_to name="Alok Priyadarshi">alokp</assigned_to>
          <cc>bungeman</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>junov</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790949</commentid>
    <comment_count>0</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 14:40:33 -0800</bug_when>
    <thetext>We have been using PlatformContextSkia::setDrawingToImageBuffer to indirectly enable/disable LCD text. It was OK until only root layer had LCD text. But now to enable LCD text on composited layer, you have to call PlatformContextSkia::setDrawingToImageBuffer(false), which is wrong.

It turns out that we can use GraphicsContext::setShouldSmoothFonts() to do the same. We may also be able to deprecate PlatformContextSkia::setDrawingToImageBuffer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790985</commentid>
    <comment_count>1</comment_count>
      <attachid>179350</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 15:11:24 -0800</bug_when>
    <thetext>Created attachment 179350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790992</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-13 15:18:56 -0800</bug_when>
    <thetext>What exactly does &quot;setShouldSmoothFonts&quot; mean?  Is it referring to subpixel AA, hinting, AA at all, something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790996</commentid>
    <comment_count>3</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 15:20:24 -0800</bug_when>
    <thetext>I was able to get rid of all setDrawingToImageBuffer calls except the ones in WebScrollbarThemePainter. It looks like it is using it to indirectly set a TransparencyWin::LayerMode in RenderThemeChromiumWin.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791001</commentid>
    <comment_count>4</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 15:21:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; What exactly does &quot;setShouldSmoothFonts&quot; mean?  Is it referring to subpixel AA, hinting, AA at all, something else?

From the current usage on other ports, I think it means subpixel AA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791006</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-12-13 15:24:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; What exactly does &quot;setShouldSmoothFonts&quot; mean?  Is it referring to subpixel AA, hinting, AA at all, something else?
&gt; 
&gt; From the current usage on other ports, I think it means subpixel AA.

I think we want more than &quot;I think it means&quot;.  In the past, we&apos;ve definitely been burned by conflating multiple needs under a single flag.  Why not have a dedicated flag that means exactly what we want it to mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791056</commentid>
    <comment_count>6</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 16:02:45 -0800</bug_when>
    <thetext>The variable name is not explicit, but looking at Font::drawGlyphs in the mac port, it is pretty clear what it is being used for:

shouldAntiAlias: AA
shouldSmoothFonts: subpixel AA
shouldSubpixelQuantizeFonts: subpixel positioning

http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/mac/FontMac.mm#L144

I did not see those variables used in the chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791257</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-12-13 19:52:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; The variable name is not explicit, but looking at Font::drawGlyphs in the mac port, it is pretty clear what it is being used for:
&gt; 
&gt; shouldAntiAlias: AA
&gt; shouldSmoothFonts: subpixel AA
&gt; shouldSubpixelQuantizeFonts: subpixel positioning
&gt; 

If shouldSmoothFonts is in any way related to the webkit-font-smoothing CSS property, we probably want to leave it alone, since that property is now mostly used to control the boldness side-effect of subpixel AA on mac.

@bungeman?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791298</commentid>
    <comment_count>8</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2012-12-13 20:59:17 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; The variable name is not explicit, but looking at Font::drawGlyphs in the mac port, it is pretty clear what it is being used for:
&gt; &gt; 
&gt; &gt; shouldAntiAlias: AA
&gt; &gt; shouldSmoothFonts: subpixel AA
&gt; &gt; shouldSubpixelQuantizeFonts: subpixel positioning
&gt; &gt; 
&gt; 
&gt; If shouldSmoothFonts is in any way related to the webkit-font-smoothing CSS property, we probably want to leave it alone, since that property is now mostly used to control the boldness side-effect of subpixel AA on mac.
&gt; 
&gt; @bungeman?

AFAICT they are not related. -webkit-font-smoothing is captured in Font::fontDescription().fontSmoothing()

See various implementations of Font::drawGlyphs().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801431</commentid>
    <comment_count>9</comment_count>
    <who name="">bungeman</who>
    <bug_when>2013-01-07 10:51:54 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; The variable name is not explicit, but looking at Font::drawGlyphs in the mac port, it is pretty clear what it is being used for:
&gt; &gt; &gt; 
&gt; &gt; &gt; shouldAntiAlias: AA
&gt; &gt; &gt; shouldSmoothFonts: subpixel AA
&gt; &gt; &gt; shouldSubpixelQuantizeFonts: subpixel positioning
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; If shouldSmoothFonts is in any way related to the webkit-font-smoothing CSS property, we probably want to leave it alone, since that property is now mostly used to control the boldness side-effect of subpixel AA on mac.
&gt; &gt; 
&gt; &gt; @bungeman?
&gt; 
&gt; AFAICT they are not related. -webkit-font-smoothing is captured in Font::fontDescription().fontSmoothing()
&gt; 
&gt; See various implementations of Font::drawGlyphs().

Summary: Use shouldAntiAlias, shouldSmoothFonts, and shouldSubpixelQuantizeFonts. While I don&apos;t know all of the details, this patch looks correct to me.

The names AntiAlias, SmoothFonts, and SubpixelQuantizeFonts are all CoreGraphics-isms. In the world of CoreGraphics they mean what Alok says they mean in comment #6. That said, this used to directly interact with -webkit-font-smoothing, as the value of -webkit-font-smoothing basically translated into one of the above on Mac. The problem was that on Mac the weight of the text changes between lcd smoothed and regular anti-aliased. What we do now is use AntiAlias and SmoothFonts to choose the rendering method, and if -webkit-font-smoothing:antialised is used set the Skia paint&apos;s hinting to &apos;none&apos; (instead of &apos;normal&apos;). With AntiAlias and &apos;normal&apos; hinting the regular anti-alias is back-formed from the lcd so that the weight doesn&apos;t change in transitions to and from lcd smoothed.

See http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/skia/FontSkia.cpp#L76</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801581</commentid>
    <comment_count>10</comment_count>
      <attachid>179350</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-01-07 13:02:23 -0800</bug_when>
    <thetext>Comment on attachment 179350
Patch

OK, thanks for the background.  R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801632</commentid>
    <comment_count>11</comment_count>
      <attachid>179350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 14:06:55 -0800</bug_when>
    <thetext>Comment on attachment 179350
Patch

Clearing flags on attachment: 179350

Committed r138987: &lt;http://trac.webkit.org/changeset/138987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801633</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 14:06:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179350</attachid>
            <date>2012-12-13 15:11:24 -0800</date>
            <delta_ts>2013-01-07 14:06:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104956-20121213150844.patch</filename>
            <type>text/plain</type>
            <size>9590</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhYTNiMTk1OTlhNDE0
MDU3OTE0MmM4ZGM2ZDE1Y2RmNjY0NTgzMi4uMjFkN2Y2ZTdhNGNhMmI0Zjk2YTI2N2RmMDQxZGVm
MDBkYjhiOWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEyLTEzICBBbG9r
IFByaXlhZGFyc2hpICA8YWxva3BAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Rml4IFBsYXRmb3JtQ29udGV4dFNraWE6OnNldERyYXdpbmdUb0ltYWdlQnVmZmVyIGFidXNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpTZXREcmF3aW5nVG9JbWFnZUJ1ZmZlciB3aXRoIEdyYXBoaWNz
Q29udGV4dDo6c2V0U2hvdWxkU21vb3RoRm9udHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5l
ZWRlZC4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9ySFVERm9udEF0bGFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9PcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50
TGF5ZXJEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWN0VHJhY2tpbmdD
b250ZW50TGF5ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lh
L1BsYXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250
ZXh0U2tpYTo6Y291bGRVc2VMQ0RSZW5kZXJlZFRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisK
IDIwMTItMTItMTMgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb2N1bWVudCB3aWxsIG5ldmVyIGJlIHJlbGVhc2VkIHdoZW4gYW4gSW1hZ2UgaXMg
Y3JlYXRlZCBpbnNpZGUgdW5sb2FkIGV2ZW50IGxpc3RlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGRiZjdhNDg3M2M2NDlmZTlmYzJiY2I0YmE4ZmYyMzBhMjQyOTA5ZDYuLjAwOTU1
YTFiZTllODIxNjAwZjkzNzBhN2I4NzAzOTNiMDg3ZjcyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTItMTMgIEFsb2sgUHJpeWFkYXJzaGkgIDxh
bG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggUGxhdGZvcm1Db250
ZXh0U2tpYTo6c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIgYWJ1c2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDk1NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkIFBsYXRmb3JtQ29udGV4dFNr
aWE6OlNldERyYXdpbmdUb0ltYWdlQnVmZmVyIHdpdGggR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91
bGRTbW9vdGhGb250cy4KKworICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKiBzcmMvUGFnZVdp
ZGdldERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVdpZGdldERlbGVnYXRlOjpw
YWludCk6CisgICAgICAgICogc3JjL1dlYkZvbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRm9udEltcGw6OmRyYXdUZXh0KToKKwogMjAxMi0xMi0xMyAgWXVzdWYgT3p1eXNhbCAgPHl1
c3Vmb0Bnb29nbGUuY29tPgogCiAgICAgICAgIENoZWNrIHdoZXRoZXIgYSB0b3VjaERvd24gbGFu
ZHMgb24gYSByZWdpc3RlcmVkIHRvdWNoIGV2ZW50IGhhbmRsZXIgZnJvbSB0aGUgY29tcG9zaXRv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29tcG9zaXRvckhVREZvbnRBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db21wb3NpdG9ySFVERm9udEF0bGFzLmNwcAppbmRleCA2ZWRmM2M1ZTA0
NmUzNjg3NDI3NTQ3NzFmNTk2Zjk4NDkzMTRhNWEzLi5kOGYwMTBlOWQyZDQxYjZlNTk3NmMzMTM0
M2E4MDk2M2RmMTJkZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db21wb3NpdG9ySFVERm9udEF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db21wb3NpdG9ySFVERm9udEF0bGFzLmNw
cApAQCAtNjAsOCArNjAsOCBAQCBTa0JpdG1hcCBDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5l
cmF0ZUZvbnRBdGxhcyhXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XQogICAgIE93blB0cjxT
a0NhbnZhcz4gY2FudmFzID0gYWRvcHRQdHIoc2tpYTo6Q3JlYXRlQml0bWFwQ2FudmFzKEFUTEFT
X1NJWkUsIEFUTEFTX1NJWkUsIGZhbHNlIC8qIG9wYXF1ZSAqLykpOwogCiAgICAgUGxhdGZvcm1D
b250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzLmdldCgpKTsKLSAgICBwbGF0Zm9ybUNv
bnRleHQuc2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIodHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0
IGF0bGFzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKyAgICBhdGxhc0NvbnRleHQuc2V0U2hv
dWxkU21vb3RoRm9udHMoZmFsc2UpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGVudGlyZSB0ZXh0dXJl
IGF0bGFzIHRvIHRyYW5zcGFyZW50IGJlZm9yZSBkcmF3aW5nIGZvbnRzLgogICAgIGF0bGFzQ29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
T3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vT3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExh
eWVyRGVsZWdhdGUuY3BwCmluZGV4IDYyZWRjZWQxNzk3ZjNjYzczM2E3Y2JlZjRiMjg0ZDMzYmY0
MzRjZWYuLjgxZGE0YWI0OWM2ZDQ1OGQ3Y2IzYWQ0NDlmNzg0YjczMmFmZmZiN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL09wYXF1ZVJlY3RU
cmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9PcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxl
Z2F0ZS5jcHAKQEAgLTU3LDExICs1Nyw4IEBAIHZvaWQgT3BhcXVlUmVjdFRyYWNraW5nQ29udGVu
dExheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMoU2tDYW52YXMqIGNhbnZhcywgY29uCiAgICAg
ICAgIHBsYXRmb3JtQ29udGV4dC5zZXRIaW50aW5nU2NhbGVGYWN0b3IoY2FudmFzLT5nZXRUb3Rh
bE1hdHJpeCgpLmdldFNjYWxlWCgpKTsKICNlbmRpZgogICAgIHBsYXRmb3JtQ29udGV4dC5zZXRU
cmFja09wYXF1ZVJlZ2lvbighbV9vcGFxdWUpOwotICAgIC8vIEZJWE1FOiBSZW5hbWUgUGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIgdG8gc2V0Q2FuUGFpbnRMQ0RU
ZXh0LgotICAgIC8vIEkgYWxzbyBzdXNwZWN0IHRoYXQgYSBmdW5jdGlvbiBvbiBQbGF0Zm9ybUNv
bnRleHRTa2lhIGlzIG5vdCByZWFsbHkgbmVlZGVkLgotICAgIC8vIEdyYXBoaWNzQ29udGV4dDo6
c2V0QWxsb3dzRm9udFNtb290aGluZyBjYW4gYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLgotICAg
IHBsYXRmb3JtQ29udGV4dC5zZXREcmF3aW5nVG9JbWFnZUJ1ZmZlcighKGNhblBhaW50TENEVGV4
dCAmJiBtX29wYXF1ZSkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNv
bnRleHQpOworICAgIGNvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMoY2FuUGFpbnRMQ0RUZXh0
ICYmIG1fb3BhcXVlKTsKIAogICAgIC8vIFJlY29yZCB0cmFuc2Zvcm0gcHJpb3IgdG8gcGFpbnRp
bmcsIGFzIGFsbCBvcGFxdWUgdHJhY2tpbmcgd2lsbCBiZQogICAgIC8vIHJlbGF0aXZlIHRvIHRo
aXMgY3VycmVudCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAppbmRleCBmYmY3MzU5YjA3NDY2NGEx
YzJjYTlmN2NiOTAxM2MxMWRkOTFjMDQyLi5lM2MyYzFjNjk3MjE1NDU2YjNhOWVjOWY3NDczYThk
MGZkYTIyMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwKICAgICBtX2RhdGEubV9jYW52YXMgPSBhZG9wdFB0cihuZXcgU2tD
YW52YXMoZGV2aWNlKSk7CiAgICAgbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LnNldENhbnZhcyht
X2RhdGEubV9jYW52YXMuZ2V0KCkpOwogICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFw
aGljc0NvbnRleHQoJm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOwotICAgIG1fY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPnNldERyYXdpbmdUb0ltYWdlQnVmZmVyKHRydWUpOworICAgIG1f
Y29udGV4dC0+c2V0U2hvdWxkU21vb3RoRm9udHMoZmFsc2UpOwogICAgIG1fY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSkpOwogCiAg
ICAgc3VjY2VzcyA9IHRydWU7CkBAIC0xNjgsNyArMTY4LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdl
QnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSwKICAgICBtX2RhdGEubV9jYW52YXMgPSBjYW52YXMucmVsZWFzZSgpOwogICAgIG1fZGF0
YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDYW52YXMobV9kYXRhLm1fY2FudmFzLmdldCgpKTsKICAg
ICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KCZtX2RhdGEubV9wbGF0
Zm9ybUNvbnRleHQpKTsKLSAgICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXREcmF3
aW5nVG9JbWFnZUJ1ZmZlcih0cnVlKTsKKyAgICBtX2NvbnRleHQtPnNldFNob3VsZFNtb290aEZv
bnRzKGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3Jlc29sdXRpb25T
Y2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpKTsKIAogICAgIC8vIE1ha2UgdGhlIGJhY2tncm91bmQg
dHJhbnNwYXJlbnQuIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhpcyB3YXNuJ3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuY3BwCmluZGV4IGY3OWQ5MjNiYjRmMzIwNzIyODAwNjJjNGQ5OTAzZmZlNzAyMDkw
MzUuLjA0MDBhN2NkZGI0ODU3YzQ3MDM2MTI3NWYwNmMxODdhOGM0ZGY0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmNwcApAQCAtNjI5LDkgKzYyOSw3IEBAIGJvb2wgUGxhdGZvcm1Db250ZXh0
U2tpYTo6Y291bGRVc2VMQ0RSZW5kZXJlZFRleHQoKQogICAgIGlmIChpc0RyYXdpbmdUb0xheWVy
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIElmIHRoaXMgdGV4dCBpcyBub3Qg
aW4gYW4gaW1hZ2UgYnVmZmVyIGFuZCBzbyB3b24ndCBiZSBleHRlcm5hbGx5Ci0gICAgLy8gY29t
cG9zaXRlZCwgdGhlbiBzdWJwaXhlbCBhbnRpYWxpYXNpbmcgaXMgZmluZS4KLSAgICByZXR1cm4g
IWlzRHJhd2luZ1RvSW1hZ2VCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9nYy0+c2hvdWxkU21vb3Ro
Rm9udHMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXgg
MDVhNGMxNWQ5NmI1ODA0YWRkNTcwZWUxYTI2YjhhZjhkZTQzZTdlMy4uNDZkY2JlYzQwN2I0NWYw
MjI5ODdiYTI2YjI4MTBhYjA4ZTRlMzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC0xNzIsMTMgKzE3
Miw2IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpub3RpZnlGbHVzaFJlcXVpcmVk
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqCiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCkKIHsKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIExDRCB0ZXh0IHNldHRpbmcgYWZ0ZXIgaXQgaXMgaW1wbGVtZW50ZWQgaW4g
Y2hyb21pdW0uCi0gICAgLy8gT24gbm9uLWFuZHJvaWQgcGxhdGZvcm1zLCB3ZSB3YW50IHRvIHJl
bmRlciB0ZXh0IHdpdGggc3VicGl4ZWwgYW50aWFsaWFzaW5nIG9uIHRoZSByb290IGxheWVyCi0g
ICAgLy8gc28gbG9uZyBhcyB0aGUgcm9vdCBpcyBvcGFxdWUuIE9uIGFuZHJvaWQgYWxsIHRleHQg
aXMgZ3JheXNjYWxlLgotI2lmICFPUyhBTkRST0lEKQotICAgIGlmIChtX2dyYXBoaWNzTGF5ZXIt
PmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNl
dERyYXdpbmdUb0ltYWdlQnVmZmVyKGZhbHNlKTsKLSNlbmRpZgogICAgIGNvbnRleHQudHJhbnNs
YXRlKC1tX2xheWVyQWRqdXN0KTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGFkanVzdGVkQ2xpcFJl
Y3QgPSBjbGlwUmVjdDsKICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUobV9sYXllckFkanVzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZVdpZGdldERlbGVnYXRlLmNw
cAppbmRleCAxODk4NTkxMGI2ZGI2ZjY5MDBiYTM1NDA3NGQ5ZmMzMjQzNmI1YTA3Li45NmYwOWE2
MTAwNzk5MmQ1YWQzY2M1OTAxMTA5OTRhNDBlZGI1YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
dm9pZCBQYWdlV2lkZ2V0RGVsZWdhdGU6OnBhaW50KFBhZ2UqIHBhZ2UsIFBhZ2VPdmVybGF5TGlz
dCogb3ZlcmxheXMsIFdlYkNhbnZhcyoKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29u
dGV4dEJ1aWxkZXIgYnVpbGRlcihjYW52YXMpOwogICAgIEdyYXBoaWNzQ29udGV4dCYgZ2MgPSBi
dWlsZGVyLmNvbnRleHQoKTsKLSAgICBnYy5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0RHJhd2luZ1Rv
SW1hZ2VCdWZmZXIoYmFja2dyb3VuZCA9PSBPcGFxdWUgPyBmYWxzZSA6IHRydWUpOworICAgIGdj
LnNldFNob3VsZFNtb290aEZvbnRzKGJhY2tncm91bmQgPT0gT3BhcXVlKTsKICAgICBpZiAoYXBw
bHlEZXZpY2VTY2FsZSkgewogICAgICAgICBnYy5hcHBseURldmljZVNjYWxlRmFjdG9yKHBhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBnYy5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0
RGV2aWNlU2NhbGVGYWN0b3IocGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb250SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGb250SW1wbC5jcHAKaW5kZXggYzRmNWFjMWFiNDRhOTVkZWZk
YjRkNWUwNWE4MDEyODMyYTlmZDkyNC4uYjM0Y2Y0M2UxMmFlY2ExOTNmMDE0ZDBjNjk0MTAyM2U2
OGRkNzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9udElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvbnRJbXBsLmNwcApA
QCAtOTgsOSArOTgsOCBAQCB2b2lkIFdlYkZvbnRJbXBsOjpkcmF3VGV4dChXZWJDYW52YXMqIGNh
bnZhcywgY29uc3QgV2ViVGV4dFJ1biYgcnVuLCBjb25zdCBXZWJGbAogICAgIEdyYXBoaWNzQ29u
dGV4dEJ1aWxkZXIgYnVpbGRlcihjYW52YXMpOwogICAgIEdyYXBoaWNzQ29udGV4dCYgZ2MgPSBi
dWlsZGVyLmNvbnRleHQoKTsKIAotICAgIGdjLnBsYXRmb3JtQ29udGV4dCgpLT5zZXREcmF3aW5n
VG9JbWFnZUJ1ZmZlcighY2FudmFzSXNPcGFxdWUpOwotCiAgICAgZ2Muc2F2ZSgpOworICAgIGdj
LnNldFNob3VsZFNtb290aEZvbnRzKGNhbnZhc0lzT3BhcXVlKTsKICAgICBnYy5zZXRGaWxsQ29s
b3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGdjLmNsaXAoV2ViQ29yZTo6Rmxv
YXRSZWN0KGNsaXApKTsKICAgICBtX2ZvbnQuZHJhd1RleHQoJmdjLCBydW4sIGxlZnRCYXNlbGlu
ZSwgZnJvbSwgdG8pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>