<?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>228780</bug_id>
          
          <creation_ts>2021-08-04 09:17:23 -0700</creation_ts>
          <short_desc>Tweak HTML parser yielding</short_desc>
          <delta_ts>2023-03-29 15:22:53 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=254637</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>251943</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>nham</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781899</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-04 09:17:23 -0700</bug_when>
    <thetext>Tweak html parser yielding to attempt to improve page load performance with respect to certain page load metrics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781900</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-04 09:17:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/81517847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781905</commentid>
    <comment_count>2</comment_count>
      <attachid>434910</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-04 09:41:15 -0700</bug_when>
    <thetext>Created attachment 434910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781910</commentid>
    <comment_count>3</comment_count>
      <attachid>434910</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-08-04 09:49:18 -0700</bug_when>
    <thetext>Comment on attachment 434910
Patch

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

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:-126
&gt; -    if (elapsedTime &lt; elapsedTimeLimit)

Is there any reason to not retain the 16 ms upper bound on yielding? I think with this change we will quickly yield if we have a layout pending after first meaningful paint, but if that&apos;s not true we might no longer yield at 16 ms.

I guess I&apos;m suggesting we retain the current time limit, but check for it after first checking for the pending layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781911</commentid>
    <comment_count>4</comment_count>
      <attachid>434910</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-04 09:51:12 -0700</bug_when>
    <thetext>Comment on attachment 434910
Patch

I think Antti needs to review this, since he recently established this behavior based on extensive testing, and there were lots of tradeoffs involved.

Can you share which page load metric(s) improve when we make this change?

I see the logic of not yielding when there is no pending layout (the main goal of yielding is to show something new to the user, and if there is no pending layout, there is nothing new to show); but why also test isVisuallyNonEmpty()? If we have not painted yet, and we have nothing to paint now, what is the point of yielding the parser? Wouldn&apos;t it be better to keep parsing, in the hopes of finding something new to show to the user?

Side note: I believe the document-&gt;view()-&gt;isVisuallyNonEmpty() check tests for first paint, not first *meaningful* paint. I&apos;m not sure if this influences the code at all, but assuming my understanding is correct, let&apos;s fix up the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781913</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-04 09:53:48 -0700</bug_when>
    <thetext>Also: Please see my comment in Radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781924</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-04 10:28:34 -0700</bug_when>
    <thetext>isVisuallyNonEmpty() does not really have much to do with _painting_ (it&apos;s a legacy term, we should probably change it). It only tells you whether we believe we&apos;ve got enough content to present to the user. 

&gt;document-&gt;view()-&gt;isVisuallyNonEmpty() &amp;&amp; !document-&gt;isLayoutTimerActive()
Is this about letting us paint sooner after we established that there&apos;s enough content to show (i.e. we are in between (a)figured we&apos;ve got enough content to show (b)paint)? -If so, I am a bit confused by the layout timer check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781928</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-04 10:38:22 -0700</bug_when>
    <thetext>&gt;isVisuallyNonEmpty() does not really have much to do with _painting_
Let&apos;s make it a bit more accurate. The subsequent paint is supposed to be visually non-empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782025</commentid>
    <comment_count>8</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-04 13:42:35 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #3)
&gt; Comment on attachment 434910 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434910&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:-126
&gt; &gt; -    if (elapsedTime &lt; elapsedTimeLimit)
&gt; 
&gt; Is there any reason to not retain the 16 ms upper bound on yielding? I think
&gt; with this change we will quickly yield if we have a layout pending after
&gt; first meaningful paint, but if that&apos;s not true we might no longer yield at
&gt; 16 ms.
&gt; 
&gt; I guess I&apos;m suggesting we retain the current time limit, but check for it
&gt; after first checking for the pending layout.

That is a good point. I replaced the absolute timeout since I think it can lead to difference in behavior between devices. I will try measuring performance with your suggested change.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782031</commentid>
    <comment_count>9</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-04 13:46:04 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Comment on attachment 434910 [details]
&gt; Patch
&gt; 
&gt; I think Antti needs to review this, since he recently established this
&gt; behavior based on extensive testing, and there were lots of tradeoffs
&gt; involved.
&gt; 
&gt; Can you share which page load metric(s) improve when we make this change?
&gt; 

See radar for more information on this.

&gt; I see the logic of not yielding when there is no pending layout (the main
&gt; goal of yielding is to show something new to the user, and if there is no
&gt; pending layout, there is nothing new to show); but why also test
&gt; isVisuallyNonEmpty()? If we have not painted yet, and we have nothing to
&gt; paint now, what is the point of yielding the parser? Wouldn&apos;t it be better
&gt; to keep parsing, in the hopes of finding something new to show to the user?
&gt; 

Yes, that is a good point. I will try measuring performance without the check for isVisuallyNonEmpty().

&gt; Side note: I believe the document-&gt;view()-&gt;isVisuallyNonEmpty() check tests
&gt; for first paint, not first *meaningful* paint. I&apos;m not sure if this
&gt; influences the code at all, but assuming my understanding is correct, let&apos;s
&gt; fix up the ChangeLog.

Ah, that is good to know.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782034</commentid>
    <comment_count>10</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-04 13:58:15 -0700</bug_when>
    <thetext>(In reply to zalan from comment #6)
&gt; isVisuallyNonEmpty() does not really have much to do with _painting_ (it&apos;s a
&gt; legacy term, we should probably change it). It only tells you whether we
&gt; believe we&apos;ve got enough content to present to the user. 
&gt;

Ah, thanks, that is good to know!
 
&gt; &gt;document-&gt;view()-&gt;isVisuallyNonEmpty() &amp;&amp; !document-&gt;isLayoutTimerActive()
&gt; Is this about letting us paint sooner after we established that there&apos;s
&gt; enough content to show (i.e. we are in between (a)figured we&apos;ve got enough
&gt; content to show (b)paint)? -If so, I am a bit confused by the layout timer
&gt; check.

The intention behind this was to yield if there is a pending layout in order to give layout and painting priority. Although, as Geoff pointed out, the check for isVisuallyNonEmpty() might be incorrect, then.


Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782177</commentid>
    <comment_count>11</comment_count>
      <attachid>434910</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-05 05:31:34 -0700</bug_when>
    <thetext>Comment on attachment 434910
Patch

ASi comp PLT is showing 2.5% regression from this patch. No data from intel bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782231</commentid>
    <comment_count>12</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-05 09:13:19 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #11)
&gt; Comment on attachment 434910 [details]
&gt; Patch
&gt; 
&gt; ASi comp PLT is showing 2.5% regression from this patch. No data from intel
&gt; bots.

I will look into if further tuning is possible to avoid this regression while keeping the progression.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782248</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-05 10:03:05 -0700</bug_when>
    <thetext>I&apos;d be interested in an A/B test of just adding

    if (!document-&gt;isLayoutTimerActive())
        return false;

In theory, this might improve Competitive PLT by reducing parser yielding when we have nothing to render. But it might harm PLT5&apos;s domContentLoaded metric.


I&apos;d also be interested in an A/B test of adding

    if (!document-&gt;isLayoutTimerActive())
        return false;

and removing

    if (elapsedTime &lt; elapsedTimeLimit)
        return false;

I believe the check of isVisuallyNonEmpty() is harmful to Competitive PLT (it seems to say &quot;If I have enough content to render, then don&apos;t!&quot;). So maybe excluding that check would improve this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782253</commentid>
    <comment_count>14</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-05 10:09:33 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #13)
&gt; I&apos;d be interested in an A/B test of just adding
&gt; 
&gt;     if (!document-&gt;isLayoutTimerActive())
&gt;         return false;
&gt; 
&gt; In theory, this might improve Competitive PLT by reducing parser yielding
&gt; when we have nothing to render. But it might harm PLT5&apos;s domContentLoaded
&gt; metric.
&gt; 
&gt; 
&gt; I&apos;d also be interested in an A/B test of adding
&gt; 
&gt;     if (!document-&gt;isLayoutTimerActive())
&gt;         return false;
&gt; 
&gt; and removing
&gt; 
&gt;     if (elapsedTime &lt; elapsedTimeLimit)
&gt;         return false;
&gt; 
&gt; I believe the check of isVisuallyNonEmpty() is harmful to Competitive PLT
&gt; (it seems to say &quot;If I have enough content to render, then don&apos;t!&quot;). So
&gt; maybe excluding that check would improve this patch.

Thanks, these are great suggestions :) I will be creating A/B tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783212</commentid>
    <comment_count>15</comment_count>
      <attachid>435271</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-10 10:36:00 -0700</bug_when>
    <thetext>Created attachment 435271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785206</commentid>
    <comment_count>16</comment_count>
      <attachid>435793</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-08-18 13:50:17 -0700</bug_when>
    <thetext>Created attachment 435793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1929812</commentid>
    <comment_count>17</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2023-01-31 11:17:48 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/9394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932022</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-02-08 08:50:25 -0800</bug_when>
    <thetext>Committed 260011@main (6ce95a8a6fc3): &lt;https://commits.webkit.org/260011@main&gt;

Reviewed commits have been landed. Closing PR #9394 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932118</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-02-08 13:24:34 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 251943</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932122</commentid>
    <comment_count>20</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2023-02-08 13:30:46 -0800</bug_when>
    <thetext>Reverted in https://commits.webkit.org/260032@main because it appeared to cause macOS WK1 tests to exit early with timeouts: https://build.webkit.org/results/Apple-Ventura-Release-AppleSilicon-WK1-Tests/260011@main%20(1701)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932133</commentid>
    <comment_count>21</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2023-02-08 13:56:11 -0800</bug_when>
    <thetext>This may have also caused the flakiness seen with fast/text/web-font-load-invisible-during-loading.html
https://results.webkit.org/?suite=layout-tests&amp;test=fast%2Ftext%2Fweb-font-load-invisible-during-loading.html

https://build.webkit.org/results/Apple-Ventura-Release-AppleSilicon-WK2-Tests/260026@main%20(1521)/fast/text/web-font-load-invisible-during-loading-diff.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932158</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2023-02-08 15:20:08 -0800</bug_when>
    <thetext>..and these failures on iOS Simulator:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fimport-maps%2Fbare-specifiers.sub.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fimport-maps%2Fdata-url-specifiers.sub.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fimport-maps%2Fhttp-url-like-specifiers.sub.html&amp;platform=ios</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1932651</commentid>
    <comment_count>23</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2023-02-10 07:31:16 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/9925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1941633</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-03-15 13:02:53 -0700</bug_when>
    <thetext>Committed 261705@main (f17bb5ab82ff): &lt;https://commits.webkit.org/261705@main&gt;

Reviewed commits have been landed. Closing PR #9925 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1941634</commentid>
    <comment_count>25</comment_count>
      <attachid>435793</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2023-03-15 13:05:40 -0700</bug_when>
    <thetext>Comment on attachment 435793
Patch

Clearing review flag, as the bug is resolved now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434910</attachid>
            <date>2021-08-04 09:41:15 -0700</date>
            <delta_ts>2021-08-10 10:35:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228780-20210804094114.patch</filename>
            <type>text/plain</type>
            <size>2167</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDYzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA4LTA0ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBUd2VhayBodG1sIHBhcnNl
ciB5aWVsZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI4NzgwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTUxNzg0Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUd2VhayBodG1sIHBhcnNlciB5
aWVsZGluZyB0byBhdHRlbXB0IHRvIGltcHJvdmUgcGFnZSBsb2FkIHBlcmZvcm1hbmNlIHdpdGgg
cmVzcGVjdCB0byBjZXJ0YWluIHBhZ2UgbG9hZCBtZXRyaWNzLgorICAgICAgICBDdXJyZW50bHks
IHRoZSBwYXJzZXIgd2lsbCBub3QgeWllbGQgdW50aWwgMTZtcyBoYXMgZWxhcHNlZCwgd2hpY2gg
Y2FuIGxlYWQgdG8gZGlmZmVyZW50IGJlaGF2aW9yIG9uIGRpZmZlcmVudAorICAgICAgICBkZXZp
Y2VzLiBJbnN0ZWFkLCB0aGUgcGFyc2VyIGNhbiB5aWVsZCBpZiB0aGVyZSBjdXJyZW50bHkgaXMg
YSBsYXlvdXQgcGVuZGluZyBhZnRlciB0aGUgZmlyc3QgbWVhbmluZ2Z1bCBwYWludAorICAgICAg
ICBtaWxlc3RvbmUgaGFzIGJlZW4gcmVhY2hlZC4gVGhpcyB3aWxsIGxldCBsYXlvdXQgYW5kIHBh
aW50aW5nIGhhdmUgcHJpb3JpdHkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OnNo
b3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KToKKwogMjAyMS0wOC0wNCAgQW5kcmVzIEdv
bnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGFyaWEtc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcyBpbiB0YWJsZSBjZWxscy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCShy
ZXZpc2lvbiAyODA0MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDE2ICsxMTUsMTQgQEAgYm9vbCBI
VE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZgogICAgIGlmIChVTkxJS0VMWShtX2Rv
Y3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHNlc3Npb24u
c3RhcnRUaW1lOwotCi0gICAgY29uc3RleHByIGF1dG8gZWxhcHNlZFRpbWVMaW1pdCA9IDE2X21z
OwogICAgIC8vIFJlcXVpcmUgYXQgbGVhc3Qgc29tZSBuZXcgcGFyc2VkIGNvbnRlbnQgYmVmb3Jl
IHlpZWxkaW5nLgogICAgIGNvbnN0ZXhwciBhdXRvIHRva2VuTGltaXQgPSAyNTY7CiAgICAgLy8g
RG9uJ3QgeWllbGQgb24gdmVyeSBzaG9ydCBpbmxpbmUgc2NyaXB0cy4gVGhpcyBpcyBhbiBpbXBl
cmZlY3Qgd2F5IHRvIHRyeSB0byBndWVzcyB0aGUgZXhlY3V0aW9uIGNvc3QuCiAgICAgY29uc3Rl
eHByIGF1dG8gaW5saW5lU2NyaXB0TGVuZ3RoTGltaXQgPSAxMDI0OwogCi0gICAgaWYgKGVsYXBz
ZWRUaW1lIDwgZWxhcHNlZFRpbWVMaW1pdCkKKyAgICBpZiAoZG9jdW1lbnQtPnZpZXcoKSAmJiBk
b2N1bWVudC0+dmlldygpLT5pc1Zpc3VhbGx5Tm9uRW1wdHkoKSAmJiAhZG9jdW1lbnQtPmlzTGF5
b3V0VGltZXJBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHNlc3Np
b24ucHJvY2Vzc2VkVG9rZW5zIDwgdG9rZW5MaW1pdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435271</attachid>
            <date>2021-08-10 10:36:00 -0700</date>
            <delta_ts>2021-08-18 13:50:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228780-20210810103559.patch</filename>
            <type>text/plain</type>
            <size>2213</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDg0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA4LTEwICBQZXIgQXJu
ZSAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFR3ZWFrIGh0bWwgcGFyc2VyIHlpZWxk
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3
ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxNTE3ODQ3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR3ZWFrIGh0bWwgcGFyc2VyIHlpZWxkaW5n
IHRvIGF0dGVtcHQgdG8gaW1wcm92ZSBwYWdlIGxvYWQgcGVyZm9ybWFuY2Ugd2l0aCByZXNwZWN0
IHRvIGNlcnRhaW4gcGFnZSBsb2FkIG1ldHJpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMg
dGhlIHBhcnNlciBub3QgeWllbGQgaWYgdGhlcmUgaXMgbm8gcGVuZGluZyBsYXlvdXQgaW4gb3Jk
ZXIgdG8gZ2l2ZSBsYXlvdXQgYW5kIHBhaW50aW5nIGhpZ2hlcgorICAgICAgICBwcmlvcml0eS4g
QWRkaXRpb25hbGx5LCB0aGlzIHlpZWxkIGNoYW5nZSBpcyBvbmx5IGFwcGxpZWQgYWZ0ZXIgYSBw
YWludCBoYXMgb2NjdXJlZC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0CisgICAgICAgIHBh
cnNlciB5aWVsZGluZyBhbHJlYWR5IHNlZW1zIHRvIGJlIGhpZ2hseSBvcHRpbXplZCB3aXRoIHJl
Z2FyZHMgdG8gZmlyc3QgcGFpbnQgYW5kIGZpcnN0IG1lYW5pbmdmdWwgcGFpbnQsIHNvCisgICAg
ICAgIGFueSB5aWVsZCBjaGFuZ2UgaW4gdGhpcyB0aW1lIGludGVydmFsIHdvdWxkIGxpa2VseSBi
ZSBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uIEl0IGlzIG9ubHkgYWZ0ZXIgdGhlc2UgZXZlbnRz
CisgICAgICAgIHRoZXJlIHNlZW1zIHRvIGJlIGEgc2xpZ2h0IHJvb20gZm9yIHBlcmZvcm1hbmNl
IGltcHJvdmVtZW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGl0aW5n
IHRlc3RzLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9y
ZUV4ZWN1dGluZ1NjcmlwdCk6CisKIDIwMjEtMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUkVHUkVTU0lPTihyMjc4ODUwKTogbW9kaWZ5
aW5nIGBwbGF5YmFja1JhdGVgIHZpYSBKUyBvbiBhIFRvdWNoQmFyIG1hYyBvbmx5IHNvbWV0aW1l
cyB3b3JrcyBhbmQgYWxzbyBjYXVzZXMgdGhlIGBkZWZhdWx0UGxheWJhY2tSYXRlYCB0byBjaGFu
Z2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJT
Y2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyODA3MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEy
Myw5IEBAIGJvb2wgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWYKICAgICAvLyBE
b24ndCB5aWVsZCBvbiB2ZXJ5IHNob3J0IGlubGluZSBzY3JpcHRzLiBUaGlzIGlzIGFuIGltcGVy
ZmVjdCB3YXkgdG8gdHJ5IHRvIGd1ZXNzIHRoZSBleGVjdXRpb24gY29zdC4KICAgICBjb25zdGV4
cHIgYXV0byBpbmxpbmVTY3JpcHRMZW5ndGhMaW1pdCA9IDEwMjQ7CiAKKyAgICBpZiAoZG9jdW1l
bnQtPnZpZXcoKSAmJiBkb2N1bWVudC0+dmlldygpLT5oYXNFdmVyUGFpbnRlZCgpICYmICFkb2N1
bWVudC0+aXNMYXlvdXRQZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlm
IChlbGFwc2VkVGltZSA8IGVsYXBzZWRUaW1lTGltaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPCB0b2tlbkxpbWl0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435793</attachid>
            <date>2021-08-18 13:50:17 -0700</date>
            <delta_ts>2023-03-15 13:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228780-20210818135016.patch</filename>
            <type>text/plain</type>
            <size>2252</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDc4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA4LTE4ICBQZXIgQXJu
ZSAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFR3ZWFrIGh0bWwgcGFyc2VyIHlpZWxk
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg3
ODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxNTE3ODQ3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR3ZWFrIGh0bWwgcGFyc2VyIHlpZWxkaW5n
IHRvIGF0dGVtcHQgdG8gaW1wcm92ZSBwYWdlIGxvYWQgcGVyZm9ybWFuY2Ugd2l0aCByZXNwZWN0
IHRvIGNlcnRhaW4gcGFnZSBsb2FkIG1ldHJpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMg
dGhlIHBhcnNlciBub3QgeWllbGQgaWYgdGhlcmUgaXMgbm8gcGVuZGluZyBsYXlvdXQgaW4gb3Jk
ZXIgdG8gZ2l2ZSBsYXlvdXQgYW5kIHBhaW50aW5nIGhpZ2hlcgorICAgICAgICBwcmlvcml0eS4g
VGhpcyB5aWVsZCBjaGFuZ2UgaXMgb25seSBhcHBsaWVkIGFmdGVyIGEgcGFpbnQgaGFzIG9jY3Vy
ZWQuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBwYXJzZXIgeWllbGRpbmcKKyAgICAgICAg
YWxyZWFkeSBzZWVtcyB0byBiZSBoaWdobHkgb3B0aW1pemVkIHdpdGggcmVnYXJkcyB0byBmaXJz
dCBwYWludCBhbmQgZmlyc3QgbWVhbmluZ2Z1bCBwYWludCwgc28gYW55IHlpZWxkIGNoYW5nZQor
ICAgICAgICBpbiB0aGlzIHRpbWUgaW50ZXJ2YWwgd291bGQgbGlrZWx5IGJlIGEgcGVyZm9ybWFu
Y2UgcmVncmVzc2lvbi4gSXQgaXMgb25seSBhZnRlciB0aGVzZSBldmVudHMgdGhlcmUgc2VlbXMg
dG8gYmUgYQorICAgICAgICBzbGlnaHQgcm9vbSBmb3IgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQu
IEZpbmFsbHksIGEgdGhpcmQgY29uZGl0aW9uIGlzIGFkZGVkOyBuYW1lbHkgdGhhdCB5aWVsZGlu
ZyBzaG91bGQgb25seSBiZQorICAgICAgICBhdm9pZGVkIGZvciBpbmxpbmUgc2NyaXB0cy4gVGhp
cyBsYXN0IG1vZGlmaWNhdGlvbiB3YXMgZG9uZSBpbiBvcmRlciB0byBhdm9pZCByZWdyZXNzaW9u
cyBpbiBvdGhlciBwYWdlIGxvYWRpbmcKKyAgICAgICAgbWV0cmljcyB3ZSBhcmUgbWVhc3VyaW5n
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGl0aW5nIHRlc3RzLgorCisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1Nj
cmlwdCk6CisKIDIwMjEtMDgtMDkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkdMIDIuMCBkb2Vzbid0IHdvcmsgb24gQTggZGV2aWNlcyAoaVBhZCBtaW5pIDQs
IGlQYWQgQWlyIDIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VyU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMjgwNzg0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw2ICsxMzYsMTEgQEAgYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJl
ZgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGJvb2wgaW5saW5lU2Ny
aXB0ID0gc2NyaXB0RWxlbWVudCAmJiAhc2NyaXB0RWxlbWVudC0+aGFzU291cmNlQXR0cmlidXRl
KCk7CisgICAgYm9vbCBoYXNQYWludGVkID0gZG9jdW1lbnQtPnZpZXcoKSAmJiBkb2N1bWVudC0+
dmlldygpLT5oYXNFdmVyUGFpbnRlZCgpOworICAgIGlmIChoYXNQYWludGVkICYmICFkb2N1bWVu
dC0+aXNMYXlvdXRQZW5kaW5nKCkgJiYgaW5saW5lU2NyaXB0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>