<?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>202548</bug_id>
          
          <creation_ts>2019-10-03 16:29:09 -0700</creation_ts>
          <short_desc>FontFaceSet&apos;s ready promise is not always resolved</short_desc>
          <delta_ts>2019-10-10 12:53:02 -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>Text</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=202476</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576637</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 16:29:09 -0700</bug_when>
    <thetext>When we do layout on an element, FontRanges::glyphDataForCharacter() will cause the first available font to start loading, but will continue looking at subsequent fonts to see if there&apos;s a good one we can render while the load is happening. When looking for a fallback font, it calls FontRanges::Range::font() with a ExternalResourceDownloadPolicy set to Forbid. This is fine, except that a side effect of calling this function is that the CSSFontFace marks itself as Loading, which means document.fonts.ready is deferred. Then, the load finishes, and the subsequent CSSFontFace is never actually used, meaning it never exits the Loading state, which means document.fonts.ready never fires.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576638</commentid>
    <comment_count>1</comment_count>
      <attachid>380167</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 16:29:39 -0700</bug_when>
    <thetext>Created attachment 380167
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576639</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 16:30:32 -0700</bug_when>
    <thetext>This was discovered during Chris&apos;s investigation of https://bugs.webkit.org/show_bug.cgi?id=202476.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576640</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 16:33:14 -0700</bug_when>
    <thetext>The fix for this is likely in CSSFontFace::pump() where it setStatus(Status::Loading) right before source-&gt;load().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576647</commentid>
    <comment_count>4</comment_count>
      <attachid>380169</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 17:00:13 -0700</bug_when>
    <thetext>Created attachment 380169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576870</commentid>
    <comment_count>5</comment_count>
      <attachid>380169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 08:36:04 -0700</bug_when>
    <thetext>Comment on attachment 380169
Patch

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

&gt; Source/WebCore/css/CSSFontFace.cpp:740
&gt; +                if (policy == ExternalResourceDownloadPolicy::Allow &amp;&amp; m_status == Status::Pending)

I have one concern.

Imagine the case where this is a local font and this local font ends up being successful and Policy is ExternalResourceDownloadPolicy::Forbid. Previously, we would do:
1. Status update: Pending -&gt; Loading
2. Call load()
3. Then below, source-&gt;status() returns Success
4. Status update: Loading -&gt; Success (See switch below).

After your change:
1. Call load() without status update, so we are Pending
2. Then below, source-&gt;status() returns Success
3. Status update: Pending -&gt; Loading

Now we&apos;re stuck in Loading state even though our source successfully loaded, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576871</commentid>
    <comment_count>6</comment_count>
      <attachid>380169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 08:39:07 -0700</bug_when>
    <thetext>Comment on attachment 380169
Patch

cq- to make sure this does not inadvertently committed before answering my comment. If my comment is inaccurate, feel free to override and cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578789</commentid>
    <comment_count>7</comment_count>
      <attachid>380169</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-10 12:38:52 -0700</bug_when>
    <thetext>Comment on attachment 380169
Patch

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

&gt;&gt; Source/WebCore/css/CSSFontFace.cpp:740
&gt;&gt; +                if (policy == ExternalResourceDownloadPolicy::Allow &amp;&amp; m_status == Status::Pending)
&gt; 
&gt; I have one concern.
&gt; 
&gt; Imagine the case where this is a local font and this local font ends up being successful and Policy is ExternalResourceDownloadPolicy::Forbid. Previously, we would do:
&gt; 1. Status update: Pending -&gt; Loading
&gt; 2. Call load()
&gt; 3. Then below, source-&gt;status() returns Success
&gt; 4. Status update: Loading -&gt; Success (See switch below).
&gt; 
&gt; After your change:
&gt; 1. Call load() without status update, so we are Pending
&gt; 2. Then below, source-&gt;status() returns Success
&gt; 3. Status update: Pending -&gt; Loading
&gt; 
&gt; Now we&apos;re stuck in Loading state even though our source successfully loaded, right?

The next two lines after the Pending -&gt; Loading transition is

            if (m_status == Status::Loading || m_status == Status::TimedOut)
                setStatus(Status::Success);

We just set the status to Loading, so we take this &quot;if&quot; branch and set the status to success.

I&apos;ll add a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578792</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-10 12:42:25 -0700</bug_when>
    <thetext>Committed r250983: &lt;https://trac.webkit.org/changeset/250983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578793</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-10 12:43:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/56165070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578797</commentid>
    <comment_count>10</comment_count>
      <attachid>380169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-10 12:53:02 -0700</bug_when>
    <thetext>Comment on attachment 380169
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSFontFace.cpp:740
&gt;&gt;&gt; +                if (policy == ExternalResourceDownloadPolicy::Allow &amp;&amp; m_status == Status::Pending)
&gt;&gt; 
&gt;&gt; I have one concern.
&gt;&gt; 
&gt;&gt; Imagine the case where this is a local font and this local font ends up being successful and Policy is ExternalResourceDownloadPolicy::Forbid. Previously, we would do:
&gt;&gt; 1. Status update: Pending -&gt; Loading
&gt;&gt; 2. Call load()
&gt;&gt; 3. Then below, source-&gt;status() returns Success
&gt;&gt; 4. Status update: Loading -&gt; Success (See switch below).
&gt;&gt; 
&gt;&gt; After your change:
&gt;&gt; 1. Call load() without status update, so we are Pending
&gt;&gt; 2. Then below, source-&gt;status() returns Success
&gt;&gt; 3. Status update: Pending -&gt; Loading
&gt;&gt; 
&gt;&gt; Now we&apos;re stuck in Loading state even though our source successfully loaded, right?
&gt; 
&gt; The next two lines after the Pending -&gt; Loading transition is
&gt; 
&gt;             if (m_status == Status::Loading || m_status == Status::TimedOut)
&gt;                 setStatus(Status::Success);
&gt; 
&gt; We just set the status to Loading, so we take this &quot;if&quot; branch and set the status to success.
&gt; 
&gt; I&apos;ll add a test.

Oh, duh. Sorry about the noise.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380167</attachid>
            <date>2019-10-03 16:29:39 -0700</date>
            <delta_ts>2019-10-03 17:00:12 -0700</delta_ts>
            <desc>Test</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>1721</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250ZmFjZXNldC1yZWFkeS1ub3Qt
ZmlyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnRmYWNlc2V0LXJl
YWR5LW5vdC1maXJlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjE2Njc0N2ZhMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ZvbnRmYWNlc2V0LXJlYWR5LW5vdC1maXJlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw5IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgcmVhZHkgcHJvbWlzZSBpcyByZXNvbHZl
ZCBldmVuIHdoZW4gd2UgaW50ZXJyb2dhdGUgYW4gQGZvbnQtZmFjZSBibG9jayB0byBzZWUgaWYg
aXQgY2FuIGJlIHVzZWQgYXMgYW4gaW50ZXJzdGl0aWFsIGZvbnQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK0hlbGxvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udGZh
Y2VzZXQtcmVhZHktbm90LWZpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udGZh
Y2VzZXQtcmVhZHktbm90LWZpcmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmJjMzIyYjNhNDA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ZvbnRmYWNlc2V0LXJlYWR5LW5vdC1maXJlZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK0Bmb250LWZhY2Ugewor
ICAgIGZvbnQtZmFtaWx5OiAiV2ViRm9udCI7CisgICAgZm9udC13ZWlnaHQ6IDQwMDsKKyAgICBz
cmM6IHVybCgiLi4vLi4vcmVzb3VyY2VzL0FoZW0ub3RmIik7Cit9CitAZm9udC1mYWNlIHsKKyAg
ICBmb250LWZhbWlseTogIldlYkZvbnQiOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAgc3Jj
OiBsb2NhbCgiYXNkZmFzZGYiKSwgdXJsKCIuLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30K
Kzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0iZm9udDog
NDhweCAnV2ViRm9udCcsICdIZWx2ZXRpY2EnOyI+SGVsbG88L2Rpdj4KKzxzY3JpcHQ+Cit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhlIHJlYWR5IHByb21pc2UgaXMgcmVzb2x2ZWQgZXZlbiB3aGVuIHdlIGludGVycm9nYXRl
IGFuIEBmb250LWZhY2UgYmxvY2sgdG8gc2VlIGlmIGl0IGNhbiBiZSB1c2VkIGFzIGFuIGludGVy
c3RpdGlhbCBmb250LiIpOworbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKK3RhcmdldC5vZmZzZXRXaWR0aDsKK2RvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380169</attachid>
            <date>2019-10-03 17:00:13 -0700</date>
            <delta_ts>2019-10-10 12:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202548-20191003170012.patch</filename>
            <type>text/plain</type>
            <size>6000</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk1N2RiZWEwNDMzOWMy
ZTJiY2E0NmE3OWE2YzNjMjNiMjIwOWI0ZC4uMTc3MWMxNTI3ZTU3N2RmZWIxZGYzMDQ4ZmZmZDgx
M2ZhYjdkMWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTEwLTAzICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udEZhY2VT
ZXQncyByZWFkeSBwcm9taXNlIGlzIG5vdCBhbHdheXMgcmVzb2x2ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gd2UgZG8gbGF5b3V0IG9uIGFu
IGVsZW1lbnQsIEZvbnRSYW5nZXM6OmdseXBoRGF0YUZvckNoYXJhY3RlcigpIHdpbGwgY2F1c2Ug
dGhlIGZpcnN0CisgICAgICAgIGF2YWlsYWJsZSBmb250IHRvIHN0YXJ0IGxvYWRpbmcsIGJ1dCB3
aWxsIGNvbnRpbnVlIGxvb2tpbmcgYXQgc3Vic2VxdWVudCBmb250cyB0byBzZWUgaWYKKyAgICAg
ICAgdGhlcmUncyBhIGdvb2Qgb25lIHdlIGNhbiByZW5kZXIgd2hpbGUgdGhlIGxvYWQgaXMgaGFw
cGVuaW5nLiBXaGVuIGxvb2tpbmcgZm9yIGEgZmFsbGJhY2sKKyAgICAgICAgZm9udCwgaXQgY2Fs
bHMgRm9udFJhbmdlczo6UmFuZ2U6OmZvbnQoKSB3aXRoIGEgRXh0ZXJuYWxSZXNvdXJjZURvd25s
b2FkUG9saWN5IHNldCB0bworICAgICAgICBGb3JiaWQuIFRoaXMgaXMgZmluZSwgZXhjZXB0IHRo
YXQgYSBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgdGhhdCB0aGUKKyAg
ICAgICAgQ1NTRm9udEZhY2UgbWFya3MgaXRzZWxmIGFzIExvYWRpbmcsIHdoaWNoIG1lYW5zIGRv
Y3VtZW50LmZvbnRzLnJlYWR5IGlzIGRlZmVycmVkLiBUaGVuLAorICAgICAgICB0aGUgbG9hZCBm
aW5pc2hlcywgYW5kIHRoZSBzdWJzZXF1ZW50IENTU0ZvbnRGYWNlIGlzIG5ldmVyIGFjdHVhbGx5
IHVzZWQsIG1lYW5pbmcgaXQgbmV2ZXIKKyAgICAgICAgZXhpdHMgdGhlIExvYWRpbmcgc3RhdGUs
IHdoaWNoIG1lYW5zIGRvY3VtZW50LmZvbnRzLnJlYWR5IG5ldmVyIGZpcmVzLgorCisgICAgICAg
IFRoZSBzb2x1dGlvbiB0byB0aGlzIGlzIHRvIGp1c3Qgb25seSBhbGxvdyB0aGUgZm9udCB0byBl
bnRlciB0aGUgTG9hZGluZyBzdGF0ZSBpZiBpdCdzIG5vdAorICAgICAgICBvbmUgb2YgdGhlc2Ug
InN1YnNlcXVlbnQiIGZvbnRzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9mb250ZmFjZXNl
dC1yZWFkeS1ub3QtZmlyZWQuaHRtbAorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpwdW1wKToKKwogMjAxOS0xMC0wMiAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4
IHRoZSBXaW5kb3dzIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA2NDZj
MTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3MjY3YmNkLi44ZDIxYjNhYjcxOWMxZDJiZjEw
NDk4MWFkZDA1ZDQ3OWFiMjY2MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAg
LTczNyw3ICs3MzcsNyBAQCBzaXplX3QgQ1NTRm9udEZhY2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJj
ZURvd25sb2FkUG9saWN5IHBvbGljeSkKICAgICAgICAgICAgIC8vIGJ1dCBpdCBzZWVtcyB0aGF0
IHRoaXMgYmVoYXZpb3IgaXMgYSByZXF1aXJlbWVudCBvZiB0aGUgZGVzaWduIG9mIEZvbnRSYW5n
ZXMuIEZJWE1FOiBQZXJoYXBzIHJldGhpbmsKICAgICAgICAgICAgIC8vIHRoaXMgZGVzaWduLgog
ICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6
OkFsbG93IHx8ICFzb3VyY2UtPnJlcXVpcmVzRXh0ZXJuYWxSZXNvdXJjZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fc3RhdHVzID09IFN0YXR1czo6UGVuZGluZykKKyAgICAgICAgICAgICAg
ICBpZiAocG9saWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgJiYg
bV9zdGF0dXMgPT0gU3RhdHVzOjpQZW5kaW5nKQogICAgICAgICAgICAgICAgICAgICBzZXRTdGF0
dXMoU3RhdHVzOjpMb2FkaW5nKTsKICAgICAgICAgICAgICAgICBzb3VyY2UtPmxvYWQobV9mb250
U2VsZWN0b3IuZ2V0KCkpOwogICAgICAgICAgICAgfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIHNpemVf
dCBDU1NGb250RmFjZTo6cHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3kgcG9saWN5
KQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIGNhc2UgQ1NTRm9udEZhY2VTb3VyY2U6
OlN0YXR1czo6TG9hZGluZzoKICAgICAgICAgICAgIEFTU0VSVChtX3N0YXR1cyA9PSBTdGF0dXM6
OlBlbmRpbmcgfHwgbV9zdGF0dXMgPT0gU3RhdHVzOjpMb2FkaW5nIHx8IG1fc3RhdHVzID09IFN0
YXR1czo6VGltZWRPdXQgfHwgbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlKTsKLSAgICAgICAg
ICAgIGlmIChtX3N0YXR1cyA9PSBTdGF0dXM6OlBlbmRpbmcpCisgICAgICAgICAgICBpZiAocG9s
aWN5ID09IEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeTo6QWxsb3cgJiYgbV9zdGF0dXMg
PT0gU3RhdHVzOjpQZW5kaW5nKQogICAgICAgICAgICAgICAgIHNldFN0YXR1cyhTdGF0dXM6Okxv
YWRpbmcpOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIGNhc2UgQ1NTRm9udEZhY2VT
b3VyY2U6OlN0YXR1czo6U3VjY2VzczoKQEAgLTc2MCw3ICs3NjAsNyBAQCBzaXplX3QgQ1NTRm9u
dEZhY2U6OnB1bXAoRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5IHBvbGljeSkKICAgICAg
ICAgICAgICAgICBzZXRTdGF0dXMoU3RhdHVzOjpTdWNjZXNzKTsKICAgICAgICAgICAgIHJldHVy
biBpOwogICAgICAgICBjYXNlIENTU0ZvbnRGYWNlU291cmNlOjpTdGF0dXM6OkZhaWx1cmU6Ci0g
ICAgICAgICAgICBpZiAobV9zdGF0dXMgPT0gU3RhdHVzOjpQZW5kaW5nKQorICAgICAgICAgICAg
aWYgKHBvbGljeSA9PSBFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQb2xpY3k6OkFsbG93ICYmIG1f
c3RhdHVzID09IFN0YXR1czo6UGVuZGluZykKICAgICAgICAgICAgICAgICBzZXRTdGF0dXMoU3Rh
dHVzOjpMb2FkaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTg0
YTkyZmM4YjMxZjg1ZDc2ZDlkOTUxNjllYWZiNDk4N2MyM2U2Ny4uOTE4ZTcyYjdlNzVhOGMwOWM5
OTg2MDZhMTBjYTFiZGEyYTMzZGE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTAz
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9u
dEZhY2VTZXQncyByZWFkeSBwcm9taXNlIGlzIG5vdCBhbHdheXMgcmVzb2x2ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU0OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC90ZXh0L2ZvbnRm
YWNlc2V0LXJlYWR5LW5vdC1maXJlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvdGV4dC9mb250ZmFjZXNldC1yZWFkeS1ub3QtZmlyZWQuaHRtbDogQWRkZWQuCisKIDIwMTkt
MTAtMDIgIE1pZ3VlbCBHb21leiAgPG1hZ29tZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBVbnJldmlld2VkIGdhcmRlbmluZzogYWRkIG5ldyBleHBlY3RhdGlvbnMgYWZ0ZXIgcjI1MDYw
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnRmYWNlc2V0LXJlYWR5LW5v
dC1maXJlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udGZhY2VzZXQt
cmVhZHktbm90LWZpcmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjY3NDdmYTM1NjczZjAx
YTQ0YTE3MDIxOGU1NmUxMWYxNTYxMWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ZvbnRmYWNlc2V0LXJlYWR5LW5vdC1maXJlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw5IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgcmVhZHkgcHJvbWlzZSBpcyByZXNv
bHZlZCBldmVuIHdoZW4gd2UgaW50ZXJyb2dhdGUgYW4gQGZvbnQtZmFjZSBibG9jayB0byBzZWUg
aWYgaXQgY2FuIGJlIHVzZWQgYXMgYW4gaW50ZXJzdGl0aWFsIGZvbnQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK0hlbGxvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9u
dGZhY2VzZXQtcmVhZHktbm90LWZpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9u
dGZhY2VzZXQtcmVhZHktbm90LWZpcmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMzMjJiM2E0MDk2NGYw
MmU1MDllZDg3MjY5OWNiNmQ1MmU0ZGVjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC9mb250ZmFjZXNldC1yZWFkeS1ub3QtZmlyZWQuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitAZm9udC1mYWNl
IHsKKyAgICBmb250LWZhbWlseTogIldlYkZvbnQiOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7Cisg
ICAgc3JjOiB1cmwoIi4uLy4uL3Jlc291cmNlcy9BaGVtLm90ZiIpOworfQorQGZvbnQtZmFjZSB7
CisgICAgZm9udC1mYW1pbHk6ICJXZWJGb250IjsKKyAgICBmb250LXdlaWdodDogNTAwOworICAg
IHNyYzogbG9jYWwoImFzZGZhc2RmIiksIHVybCgiLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmIik7
Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdldCIgc3R5bGU9ImZv
bnQ6IDQ4cHggJ1dlYkZvbnQnLCAnSGVsdmV0aWNhJzsiPkhlbGxvPC9kaXY+Cis8c2NyaXB0Pgor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtl
cyBzdXJlIHRoZSByZWFkeSBwcm9taXNlIGlzIHJlc29sdmVkIGV2ZW4gd2hlbiB3ZSBpbnRlcnJv
Z2F0ZSBhbiBAZm9udC1mYWNlIGJsb2NrIHRvIHNlZSBpZiBpdCBjYW4gYmUgdXNlZCBhcyBhbiBp
bnRlcnN0aXRpYWwgZm9udC4iKTsKK2xldCB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7Cit0YXJnZXQub2Zmc2V0V2lkdGg7Citkb2N1bWVudC5mb250cy5yZWFkeS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="395899"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>