<?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>51151</bug_id>
          
          <creation_ts>2010-12-15 16:53:44 -0800</creation_ts>
          <short_desc>NSScrollView-based scrollbars and ScrollBarTheme-based scrollbars don&apos;t look the same</short_desc>
          <delta_ts>2011-01-21 12:29:42 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>51406</dependson>
    
    <dependson>51507</dependson>
    
    <dependson>51728</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>avi</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jam</cc>
    
    <cc>jamesr</cc>
    
    <cc>mihaip</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322938</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-15 16:53:44 -0800</bug_when>
    <thetext>It&apos;s an odd thing, but it appears that painting scrollbars using HIThemeDrawTrack and just relying on NSScrollView to make them doesn&apos;t produce the same result. Here&apos;s an example:

Exhibit A: http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/mac/fast/block/float/008-expected.png (uses NSScrollView to paint scrollbars)
Exhibit B: http://build.webkit.org/results/Chromium%20Mac%20Release%20(Tests)/r74045%20(3464)/fast/block/float/008-actual.png (uses ScrollBarTheme)
Exhibit C: http://build.webkit.org/results/Chromium%20Mac%20Release%20(Tests)/r74045%20(3464)/fast/block/float/008-diff.png (the diff between the two)

I spent a day trying to hack ScrollbarThemeChromiumMac.mm into submission, just trying to see what the problem is. Turns out there are lots of funny little issues:

1) The proportions of the thumb are different for each path. Not sure why, but it requires tweaking SliderTrackInfo::viewsize to get them to match. The amount seems to be some proportional value, because it varies depending on the value of max/value in ThemeTrackDrawInfo. 
2) The wavey Aqua texture on NSScrollView is off by exactly -11px compared to hand-drawn scrollbars. Again, not sure why. So I wrote an extra step to shift the thumb down, paint into a buffer, then paint back onto the track shifted upwards by the same amount.
3) Even after that, the caps on the thumb don&apos;t match! For some reason, they are also drawn differently.

To summarize, I think it might be worth pursuing other options, such as:

1) convert Mac port to hand-drawn scrollbars and rebaseline the tests;
2) cry into a pillow.

Unless someone has better ideas? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322941</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-15 16:55:59 -0800</bug_when>
    <thetext>BTW, I started where Avi left off a while back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322970</commentid>
    <comment_count>2</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-15 17:24:47 -0800</bug_when>
    <thetext>For those who are just joining us, I last dealt with this about a year ago when re-enabling Mac pixel tests for Chromium.

http://www.mail-archive.com/chromium-dev@googlegroups.com/msg08115.html

If we&apos;re OK with having different baselines for WebKit and Chromium, my conclusions still stand. It seems like you&apos;re trying to reconcile them, and that&apos;s going to be painful.

Right now, for the sake of a Cocoa hierarchy, the top level scrollbars (and only those) are drawn with an NSScrollView. You&apos;re asking if we can ditch those in WebKit, and that&apos;s an answer I can&apos;t provide. Are you proposing using ScrollbarThemeMac for only tests and not Safari? (I suppose that&apos;s what you mean by &quot;hand-drawn scrollbars&quot;.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322971</commentid>
    <comment_count>3</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-15 17:26:51 -0800</bug_when>
    <thetext>BTW, the conclusion that I came to was that it simply wasn&apos;t worth the hassle to try to make an HIThemeDrawTrack scrollbar draw exactly like an NSScroller. They are two entirely different code paths and playing games is only going to leave someone in tears.

And Mac OS X doesn&apos;t cry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322972</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-15 17:29:08 -0800</bug_when>
    <thetext>In the long term, nobody will use NSScrollView for scrollbars on mac - Chromium already does not and WebKit2 will not either.  Where are the WebKit2 pixel baselines expected to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322977</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-15 17:34:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; In the long term, nobody will use NSScrollView for scrollbars on mac - Chromium already does not and WebKit2 will not either.  Where are the WebKit2 pixel baselines expected to go?

Adding fearless WebKit2 peeps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323204</commentid>
    <comment_count>6</comment_count>
      <attachid>76774</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-16 09:01:16 -0800</bug_when>
    <thetext>Created attachment 76774
The closest I could come to matching

I got pretty close :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323498</commentid>
    <comment_count>7</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-16 16:18:22 -0800</bug_when>
    <thetext>H(In reply to comment #3)
&gt; BTW, the conclusion that I came to was that it simply wasn&apos;t worth the hassle to try to make an HIThemeDrawTrack scrollbar draw exactly like an NSScroller. They are two entirely different code paths and playing games is only going to leave someone in tears.

Can we just use NSScroller directly (instantiate one, use setKnobProportion, etc, and then have it draw itself)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323503</commentid>
    <comment_count>8</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-16 16:24:06 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Can we just use NSScroller directly (instantiate one, use setKnobProportion, etc, and then have it draw itself)?

I suppose we could. But if we&apos;re dropping NSScrollViews altogether and moving towards only ScrollbarThemeMac ones, I don&apos;t see the advantage of dropping the current implementation of ScrollbarThemeMac for a new one based on Cocoa widgets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323530</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-16 17:21:35 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I suppose we could. But if we&apos;re dropping NSScrollViews altogether and moving towards only ScrollbarThemeMac ones, I don&apos;t see the advantage of dropping the current implementation of ScrollbarThemeMac for a new one based on Cocoa widgets.

Will HIThemeDrawTrack be around indefinitely? It&apos;s part of the &quot;legacy&quot; Appearance Manager API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323549</commentid>
    <comment_count>10</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-16 17:56:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Will HIThemeDrawTrack be around indefinitely? It&apos;s part of the &quot;legacy&quot; Appearance Manager API.

HIThemeDrawTrack isn&apos;t Appearance Manager, it&apos;s HITheme. When Carbon was killed for 64-bits, people at WWDC asked explicitly about HITheme and using it to draw appearance primitives, and Apple said that it would stick around. For now, I&apos;m not worried about its future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324060</commentid>
    <comment_count>11</comment_count>
      <attachid>76930</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-17 17:48:48 -0800</bug_when>
    <thetext>Created attachment 76930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324061</commentid>
    <comment_count>12</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-17 17:52:02 -0800</bug_when>
    <thetext>The attached patch seems to produce identical results to the native NSScrollView scrollbars. It has a bunch of FIXMEs, but if this seems like a reasonable approach, I can look into getting it landed. The biggest hack it in is the use of FakeActiveWindow and overriding the private _hasActiveControls NSWindow method to control (in)active appearance. Is there any way to improve on that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324623</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-20 16:09:51 -0800</bug_when>
    <thetext>Avi and I chatted about this, and he feels like the right thing to do is to ge the Safari/Mac port (or at least its DRT) off of NSScrollView for the root scrollable area, so that it matches the other ports.

However, from talking to James, I realized that that means a mass rebaseline (in platform/mac and platform/mac-leopard) of all layout tests that have scrollbars in them. The whole point of Dimitri&apos;s and my exploration in this area is to get Chromium/Mac to match Safari/Mac so that we can use the existing baselines. If we&apos;re going to be doing a mass rebaseline anyway, we might as well just maintain platform/chromium-mac baselines with our different scrollbar rendering (since we&apos;re already down that path -- we started with ~400 scrollbar-related failures in platform/chromium/test_expectations.txt and are now down to 229).

Avi, how about I limit the scope of this patch to only use NSScroller when running under the Chromium DRT _and_ we&apos;re rendering the top-level scrollbar? That way any brittleness will be isolated. I&apos;m also open to any suggestions that you might have to lessen that (e.g. can we get at the real NSWindow that we&apos;re in, instead of needing FakeActiveWindow?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324711</commentid>
    <comment_count>14</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-20 19:19:55 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Avi, how about I limit the scope of this patch to only use NSScroller when running under the Chromium DRT _and_ we&apos;re rendering the top-level scrollbar? That way any brittleness will be isolated.

Yes, that would likely work, though I&apos;m not thrilled at the code flow (if we&apos;re in DRT and we&apos;re at the top level then run this entirely different code path). BTW, how do you plan to pipe in that state so that the scrollbar code would know?

&gt; I&apos;m also open to any suggestions that you might have to lessen that (e.g. can we get at the real NSWindow that we&apos;re in, instead of needing FakeActiveWindow?)

Um, the window that the renderer&apos;s output is drawn into is in a different process. No, you may not get at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324726</commentid>
    <comment_count>15</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-20 19:37:33 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Avi, how about I limit the scope of this patch to only use NSScroller when running under the Chromium DRT _and_ we&apos;re rendering the top-level scrollbar? That way any brittleness will be isolated.
&gt; 
&gt; Yes, that would likely work, though I&apos;m not thrilled at the code flow (if we&apos;re in DRT and we&apos;re at the top level then run this entirely different code path). BTW, how do you plan to pipe in that state so that the scrollbar code would know?

I&apos;d use a similar mechanism to the Windows port, which does something similar. It uses DRT-specific widget rendering code to get consistency between Win7, Vista and XP (see comments in http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/chromium/WebThemeEngineDRT.h#L31). Specifically:

ScrollbarThemeChromiumWin::paintTrackPiece (http://trac.webkit.org/browser/trunk/WebCore/platform/chromium/ScrollbarThemeChromiumWin.cpp#L107) calls:
ChromiumBridge::paintScrollbarTrack (http://trac.webkit.org/browser/trunk/WebKit/chromium/src/ChromiumBridge.cpp#L742) which calls:
WebThemeEngine:: paintScrollbarTrack (defined at http://trac.webkit.org/browser/trunk/WebKit/chromium/public/win/WebThemeEngine.h#L67)

WebThemeEngine:: paintScrollbarTrack  has multiple implementations:
http://www.google.com/codesearch?hl=en&amp;vert=chromium&amp;lr=&amp;q=engine.*::paintscrollbartrack&amp;sbtn=Search

The one in WebThemeEngineDRT::paintScrollbarTrack is pulled in via a .gyp condition: http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/DumpRenderTree.gypi#L61

Linux has its own WebThemeEngine definition/implementation (added pretty recently: http://trac.webkit.org/changeset/69311), Mac will join the club.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324734</commentid>
    <comment_count>16</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-20 19:46:39 -0800</bug_when>
    <thetext>OK. I have no doubts that you&apos;re capable of doing it. I only have opinions left.

1. Yes, we can have two different scrollbar drawing implementations. It may solve a real problem. That doesn&apos;t mean it doesn&apos;t give me a bad feeling and scream &quot;backward-looking&quot;. My gut says that fixing the top-level scrollbar != other scrollbar problem for Safari and rebaselining everything is a real solution and that this is just a hack.

2. You&apos;re doing WebThemeEngine for the Mac? Wasn&apos;t jam working on that? There is no way to draw the separate pieces of a scrollbar on the Mac (arrows, track, etc) with HITheme. Almost certainly not with the public API of NSScroller either.

Avi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324739</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-20 19:57:57 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; 1. Yes, we can have two different scrollbar drawing implementations. It may solve a real problem. That doesn&apos;t mean it doesn&apos;t give me a bad feeling and scream &quot;backward-looking&quot;. My gut says that fixing the top-level scrollbar != other scrollbar problem for Safari and rebaselining everything is a real solution and that this is just a hack.

Yes, this is a hack, but it seems preferable to either not looking at the results of hundreds of tests or maintaining parallel baselines for them.

&gt; 2. You&apos;re doing WebThemeEngine for the Mac? Wasn&apos;t jam working on that? 

Not sure, adding him to the bug.

&gt; There is no way to draw the separate pieces of a scrollbar on the Mac (arrows, track, etc) with HITheme. Almost certainly not with the public API of NSScroller either.

The only part that&apos;s actually different is the thumb, so that&apos;s the only part we&apos;d need to move into WebThemeEngineMac. We already draw that separately with HITheme:

http://trac.webkit.org/browser/trunk/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm#L450

And NSScroller has drawKnob: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScroller_Class/Reference/Reference.html#//apple_ref/occ/instm/NSScroller/drawKnob</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324748</commentid>
    <comment_count>18</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2010-12-20 20:23:17 -0800</bug_when>
    <thetext>So kinda like we have today, where the Lin and Win WebThemeEngines are totally different?

Can we put a TODO in this so that someday when we drop using the NSScrollView for the outer scroller we&apos;ll remember to drop these weird dual code paths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328094</commentid>
    <comment_count>19</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-30 20:08:31 -0800</bug_when>
    <thetext>I&apos;ve landed all the necessary code changes to fix this, all that remains is to flip the USE_WEB_THEME_ENGINE_TO_PAINT_THUMB #define in ScrollbarThemeChromiumMac. I&apos;ll try to do that in the next couple of days, while I&apos;m still gardening, so that the inevitable mass rebaseline is less disruptive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328573</commentid>
    <comment_count>20</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-03 08:16:58 -0800</bug_when>
    <thetext>Committed r74892: &lt;http://trac.webkit.org/changeset/74892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328575</commentid>
    <comment_count>21</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-03 08:19:15 -0800</bug_when>
    <thetext>Keeping this open until rebaselines are done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328601</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 09:40:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74892 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334774</commentid>
    <comment_count>23</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-14 17:29:21 -0800</bug_when>
    <thetext>Marking this as fixed since I&apos;m done with rebaselines. Bug 52414 is still open about a small remaining mac vs. chromium-mac scrollbar difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334778</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-14 17:38:01 -0800</bug_when>
    <thetext>Did we ever file a radar about this API mismatch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336170</commentid>
    <comment_count>25</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-18 15:57:20 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Did we ever file a radar about this API mismatch?

Filed rdar://8881862 (http://openradar.appspot.com/8881862)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336173</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-18 16:00:42 -0800</bug_when>
    <thetext>Ideally you should mention this (or any other WebKit/Chromium) bugs in your Radar.  I&apos;ve poked relevant people @ Apple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336183</commentid>
    <comment_count>27</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-18 16:13:34 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Ideally you should mention this (or any other WebKit/Chromium) bugs in your Radar.  I&apos;ve poked relevant people @ Apple.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337674</commentid>
    <comment_count>28</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-20 15:52:16 -0800</bug_when>
    <thetext>Curiouser and curiouser: http://trac.webkit.org/changeset/76292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337683</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-20 16:05:07 -0800</bug_when>
    <thetext>You should probably mention that commit and the associated Radar in your Radar if you haven&apos;t already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338006</commentid>
    <comment_count>30</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2011-01-21 04:37:42 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Curiouser and curiouser: http://trac.webkit.org/changeset/76292

Sigh. Because all we needed was more opaque SPI. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338262</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-21 12:29:42 -0800</bug_when>
    <thetext>I suspect the opaque API may be related to the need for the chromium hack and mihai&apos;s radar.  We just need to get the right Apple people talkign to one another so we can remove our hack and they can remove their opaque API. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>76774</attachid>
            <date>2010-12-16 09:01:16 -0800</date>
            <delta_ts>2010-12-16 09:01:16 -0800</delta_ts>
            <desc>The closest I could come to matching</desc>
            <filename>008-diff.png</filename>
            <type>image/png</type>
            <size>17377</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76930</attachid>
            <date>2010-12-17 17:48:48 -0800</date>
            <delta_ts>2010-12-30 20:06:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51151-20101217174847.patch</filename>
            <type>text/plain</type>
            <size>7452</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbQppbmRleCBiNDdlOTk4NWIxMWE1ODcyMjk1NDhlN2Q4OTFjMjQ5NmYyZjQ0ZGI4
Li40ZDhmNjc2ZTZhZDIyZTMyZmFlNGU3OTc2ZmU1MmNhYjMyMjZmOTk2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1t
CkBAIC0zOSw2ICszOSw0OSBAQAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCitAaW50ZXJmYWNlIEZha2VBY3RpdmVXaW5kb3cgOiBOU1dpbmRvdyB7CitA
cHJpdmF0ZQorICAgIEJPT0wgaGFzQWN0aXZlQ29udHJvbHM7Cit9CisrIChOU1dpbmRvdyopYWx3
YXlzQWN0aXZlV2luZG93OworLSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFz
QWN0aXZlQ29udHJvbHM7CistIChCT09MKV9oYXNBY3RpdmVDb250cm9sczsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIEZha2VBY3RpdmVXaW5kb3cKKworc3RhdGljIE5TV2luZG93KiBhbHdheXNB
Y3RpdmVXaW5kb3cgPSBuaWw7CitzdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0luYWN0aXZlV2luZG93
ID0gbmlsOworCisrIChOU1dpbmRvdyopYWx3YXlzQWN0aXZlV2luZG93Cit7CisgICAgaWYgKGFs
d2F5c0FjdGl2ZVdpbmRvdyA9PSBuaWwpIHsKKyAgICAgICAgYWx3YXlzQWN0aXZlV2luZG93ID0g
W1tzZWxmIGFsbG9jXSBpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOllFU107CisgICAgfQorICAgIHJl
dHVybiBhbHdheXNBY3RpdmVXaW5kb3c7Cit9CisKKysgKE5TV2luZG93KilhbHdheXNJbmFjdGl2
ZVdpbmRvdworeworICAgIGlmIChhbHdheXNJbmFjdGl2ZVdpbmRvdyA9PSBuaWwpIHsKKyAgICAg
ICAgYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29u
dHJvbHM6Tk9dOworICAgIH0KKyAgICByZXR1cm4gYWx3YXlzSW5hY3RpdmVXaW5kb3c7Cit9CisK
Ky0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzCit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBoYXNBY3RpdmVDb250cm9scyA9IF9oYXNB
Y3RpdmVDb250cm9sczsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoQk9PTClfaGFzQWN0aXZl
Q29udHJvbHMgeworICByZXR1cm4gaGFzQWN0aXZlQ29udHJvbHM7Cit9CisKK0BlbmQKKwogLy8g
VGhpcyBmaWxlIChhbmQgaXRzIGFzc29jaWF0ZWQgLmggZmlsZSkgaXMgYSBjbG9uZSBvZiBTY3Jv
bGxiYXJUaGVtZU1hYy5tbS4KIC8vIEJlY2F1c2Ugd2Ugd2FudCB0byBkcmF3IHRpY2ttYXJrcyBp
biB0aGUgc2Nyb2xsYmFyLCB3ZSBtdXN0IG1haW50YWluIGEgZm9yay4KIC8vIFBsZWFzZSBtYWlu
dGFpbiB0aGlzIGZpbGUgYnkgcGVyZm9ybWluZyBwYXJhbGxlbCBjaGFuZ2VzIHRvIGl0LgpAQCAt
MzQ4LDcwICszOTEsNDkgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW8KICAgICByZXR1cm4gZXZ0
LmFsdEtleSgpOwogfQogCi1zdGF0aWMgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRl
KFNjcm9sbGJhclBhcnQgcGFydCkKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2Fz
ZSBCYWNrQnV0dG9uU3RhcnRQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGtUaGVtZVRvcE91dHNp
ZGVBcnJvd1ByZXNzZWQ7Ci0gICAgICAgIGNhc2UgQmFja0J1dHRvbkVuZFBhcnQ6Ci0gICAgICAg
ICAgICByZXR1cm4ga1RoZW1lVG9wT3V0c2lkZUFycm93UHJlc3NlZDsgLy8gVGhpcyBkb2VzIG5v
dCBtYWtlIG11Y2ggc2Vuc2UuICBGb3Igc29tZSByZWFzb24gdGhlIG91dHNpZGUgY29uc3RhbnQg
aXMgcmVxdWlyZWQuCi0gICAgICAgIGNhc2UgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydDoKLSAgICAg
ICAgICAgIHJldHVybiBrVGhlbWVUb3BJbnNpZGVBcnJvd1ByZXNzZWQ7Ci0gICAgICAgIGNhc2Ug
Rm9yd2FyZEJ1dHRvbkVuZFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4ga1RoZW1lQm90dG9tT3V0
c2lkZUFycm93UHJlc3NlZDsKLSAgICAgICAgY2FzZSBUaHVtYlBhcnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4ga1RoZW1lVGh1bWJQcmVzc2VkOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotfQotCiBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBh
aW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7Ci0gICAgSElUaGVtZVRyYWNrRHJhd0luZm8gdHJhY2tJ
bmZvOwotICAgIHRyYWNrSW5mby52ZXJzaW9uID0gMDsKLSAgICB0cmFja0luZm8ua2luZCA9IHNj
cm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBSZWd1bGFyU2Nyb2xsYmFyID8ga1RoZW1lTWVkaXVt
U2Nyb2xsQmFyIDoga1RoZW1lU21hbGxTY3JvbGxCYXI7Ci0gICAgdHJhY2tJbmZvLmJvdW5kcyA9
IHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7Ci0gICAgdHJhY2tJbmZvLm1pbiA9IDA7Ci0gICAgdHJh
Y2tJbmZvLm1heCA9IHNjcm9sbGJhci0+bWF4aW11bSgpOwotICAgIHRyYWNrSW5mby52YWx1ZSA9
IHNjcm9sbGJhci0+Y3VycmVudFBvcygpOwotICAgIHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xs
YmFyLnZpZXdzaXplID0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpOwotICAgIHRyYWNrSW5mby5h
dHRyaWJ1dGVzID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIpCi0gICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtUaGVtZVRy
YWNrSG9yaXpvbnRhbDsKLQotICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCi0gICAgICAg
IHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CisgICAgTlNTY3Jv
bGxlciogc2Nyb2xsZXIgPSBbW05TU2Nyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6c2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKV07CisgICAgaWYgKHNjcm9sbGJhci0+Y2xpZW50KCktPmlzQWN0aXZl
KCkpCisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250
ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07ICAgIAogICAgIGVsc2UKLSAgICAgICAgdHJh
Y2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5jbGllbnQoKS0+aXNBY3RpdmUoKSA/IGtU
aGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKLQotICAgIGlmICghaGFzQnV0
dG9ucyhzY3JvbGxiYXIpKQotICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVU
cmFja05vdGhpbmdUb1Njcm9sbDsKLSAgICB0cmFja0luZm8udHJhY2tJbmZvLnNjcm9sbGJhci5w
cmVzc1N0YXRlID0gc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoc2Nyb2xsYmFyLT5wcmVz
c2VkUGFydCgpKTsKLQotICAgIENHQWZmaW5lVHJhbnNmb3JtIGN1cnJlbnRDVE0gPSBDR0NvbnRl
eHRHZXRDVE0oY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgLy8gVGhlIEFxdWEg
c2Nyb2xsYmFyIGlzIGJ1Z2d5IHdoZW4gcm90YXRlZCBhbmQgc2NhbGVkLiAgV2Ugd2lsbCBqdXN0
IGRyYXcgaW50byBhIGJpdG1hcCBpZiB3ZSBkZXRlY3QgYSBzY2FsZSBvciByb3RhdGlvbi4KLSAg
ICBib29sIGNhbkRyYXdEaXJlY3RseSA9IGN1cnJlbnRDVE0uYSA9PSAxLjBmICYmIGN1cnJlbnRD
VE0uYiA9PSAwLjBmICYmIGN1cnJlbnRDVE0uYyA9PSAwLjBmICYmIChjdXJyZW50Q1RNLmQgPT0g
MS4wZiB8fCBjdXJyZW50Q1RNLmQgPT0gLTEuMGYpOwotICAgIEdyYXBoaWNzQ29udGV4dCogZHJh
d2luZ0NvbnRleHQgPSBjb250ZXh0OwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7Ci0gICAgaWYgKCFjYW5EcmF3RGlyZWN0bHkpIHsKLSAgICAgICAgdHJhY2tJbmZvLmJvdW5k
cyA9IEludFJlY3QoSW50UG9pbnQoKSwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpOwot
Ci0gICAgICAgIEludFJlY3QgYnVmZmVyUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKLSAg
ICAgICAgYnVmZmVyUmVjdC5pbnRlcnNlY3QoZGFtYWdlUmVjdCk7Ci0gICAgICAgIGJ1ZmZlclJl
Y3QubW92ZSgtc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS54KCksIC1zY3JvbGxiYXItPmZyYW1lUmVj
dCgpLnkoKSk7Ci0KLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlclJlY3Quc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgICAgIGRyYXdpbmdDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNv
bnRleHQoKTsKKyAgICAgICAgW1tbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNJbmFjdGl2ZVdpbmRv
d10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsZXJdOworICAgIFtzY3JvbGxlciBzZXRF
bmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgpXTsKKyAgICAKKyAgICBbc2Nyb2xsZXIgc2V0Q29u
dHJvbFNpemU6c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFJlZ3VsYXJTY3JvbGxiYXIgPyBO
U1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZV07CisgICAgCisgICAgTlNH
cmFwaGljc0NvbnRleHQqIHByZXZpb3VzR3JhcGhpY3NDb250ZXh0ID0gW05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XTsKKyAgICBOU0dyYXBoaWNzQ29udGV4dCogbnNHcmFwaGljc0Nv
bnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9y
dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOllFU107CisgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5zR3JhcGhpY3NDb250ZXh0XTsKKworICAgIC8v
IERlc3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3QoKSB0byB0aGUgc2Nyb2xsZXIsIGl0IGFsd2F5
cyBkcmF3cyBhdCAoMCwgMCkuCisgICAgLy8gRm9yY2UgaXQgdG8gZHJhdyBpbiB0aGUgcmlnaHQg
bG9jYXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdob2xlIGdyYXBoaWNzCisgICAgLy8gY29udGV4
dC4KKyAgICBbbnNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOworICAgIE5TQWZm
aW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtXTsK
KyAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpzY3JvbGxiYXItPmZyYW1lUmVjdCgpLngoKSB5
Qnk6c2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS55KCldOworICAgIFt0cmFuc2Zvcm0gY29uY2F0XTsK
KyAgICAKKyAgICBkb3VibGUgdmFsdWUgPSBkb3VibGUoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkp
L2RvdWJsZShzY3JvbGxiYXItPm1heGltdW0oKSk7CisgICAgW3Njcm9sbGVyIHNldERvdWJsZVZh
bHVlOiB2YWx1ZV07CisKKyAgICBmbG9hdCBrbm9iUHJvcG9ydGlvbiA9IGZsb2F0KHNjcm9sbGJh
ci0+dmlzaWJsZVNpemUoKSkvZmxvYXQoc2Nyb2xsYmFyLT50b3RhbFNpemUoKSk7CisgICAgW3Nj
cm9sbGVyIHNldEtub2JQcm9wb3J0aW9uOiBrbm9iUHJvcG9ydGlvbl07CisgICAgCisgICAgW3Nj
cm9sbGVyIGRyYXdLbm9iU2xvdEluUmVjdDpbc2Nyb2xsZXIgcmVjdEZvclBhcnQ6TlNTY3JvbGxl
cktub2JTbG90XSBoaWdobGlnaHQ6Tk9dOworICAgIAorICAgIC8vIEZJWE1FOiBjaGVjayB0aWNr
bWFya3MKKyAgICAvLyBGSVhNRTogY2hlY2sgdHJhbnNmb3JtcworICAgIC8vIEZJWE1FOiBjaGVj
ayBoaWdobGlnaHRpbmcKKyAgICAKKyAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKSB7Cisg
ICAgICAgIFtzY3JvbGxlciBkcmF3QXJyb3c6TlNTY3JvbGxlckluY3JlbWVudEFycm93IGhpZ2hs
aWdodDpzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydF07
CisgICAgICAgIFtzY3JvbGxlciBkcmF3QXJyb3c6TlNTY3JvbGxlckRlY3JlbWVudEFycm93IGhp
Z2hsaWdodDpzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gQmFja0J1dHRvblN0YXJ0UGFydF07
CiAgICAgfQogCi0gICAgLy8gRHJhdyB0aHVtYmxlc3MuCi0gICAgSElUaGVtZURyYXdUcmFjaygm
dHJhY2tJbmZvLCAwLCBkcmF3aW5nQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGtISVRoZW1l
T3JpZW50YXRpb25Ob3JtYWwpOwotCisgICAgLy8gRklYTUU6IGFyZSB0aGVzZSBuZWNlc3Nhcnk/
CisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCA9IGNvbnRleHQ7CisgICAgYm9v
bCBjYW5EcmF3RGlyZWN0bHkgPSB0cnVlOwogICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7
CiAgICAgc2Nyb2xsYmFyLT5jbGllbnQoKS0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CiAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciAmJiB0aWNr
bWFya3Muc2l6ZSgpKSB7CkBAIC00NDYsMTUgKzQ2OCwxNiBAQCBib29sIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQq
IGNvbgogCiAgICAgICAgIGRyYXdpbmdDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQotCi0gICAg
aWYgKGhhc1RodW1iKHNjcm9sbGJhcikpIHsKLSAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMg
fD0gKGtUaGVtZVRyYWNrU2hvd1RodW1iIHwga1RoZW1lVHJhY2tIaWRlVHJhY2spOwotICAgICAg
ICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGRyYXdpbmdDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Ci0gICAgfQotCi0gICAgaWYg
KCFjYW5EcmF3RGlyZWN0bHkpCi0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgc2Nyb2xsYmFyLT5mcmFtZVJlY3Qo
KS5sb2NhdGlvbigpKTsKLQorICAgIAorICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQorICAg
ICAgICBbc2Nyb2xsZXIgZHJhd0tub2JdOworCisgICAgW3Njcm9sbGVyIHJlbGVhc2VdOworICAg
IAorICAgIFtuc0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07ICAgIAorICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpwcmV2aW91c0dyYXBoaWNzQ29u
dGV4dF07CisgICAgCisgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>