<?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>232874</bug_id>
          
          <creation_ts>2021-11-09 03:05:39 -0800</creation_ts>
          <short_desc>Refactor consumeWillChange()</short_desc>
          <delta_ts>2021-11-09 05:09:21 -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>CSS</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813052</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-09 03:05:39 -0800</bug_when>
    <thetext>See bug 232868 comment 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813054</commentid>
    <comment_count>1</comment_count>
      <attachid>443671</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-09 03:14:53 -0800</bug_when>
    <thetext>Created attachment 443671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813057</commentid>
    <comment_count>2</comment_count>
      <attachid>443672</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-09 03:21:38 -0800</bug_when>
    <thetext>Created attachment 443672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813073</commentid>
    <comment_count>3</comment_count>
      <attachid>443672</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-09 04:06:09 -0800</bug_when>
    <thetext>Comment on attachment 443672
Patch

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

&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:-502
&gt;      // Every comma-separated list of identifiers is a valid will-change value,
&gt;      // unless the list includes an explicitly disallowed identifier.
&gt; -    while (true) {
&gt; -        if (range.peek().type() != IdentToken)
&gt; +    while (!range.atEnd()) {
&gt; +        switch (range.peek().id()) {
&gt; +        case CSSValueNone:
&gt; +        case CSSValueAll:
&gt; +        case CSSValueAuto:
&gt;              return nullptr;
&gt; -        CSSPropertyID propertyID = cssPropertyID(range.peek().value());
&gt; -        if (propertyID != CSSPropertyInvalid) {
&gt; -            // Now &quot;all&quot; is used by both CSSValue and CSSPropertyValue.
&gt; -            // Need to return nullptr when currentValue is CSSPropertyAll.
&gt; -            if (propertyID == CSSPropertyWillChange || propertyID == CSSPropertyAll)
&gt; -                return nullptr;
&gt; -            values-&gt;append(CSSValuePool::singleton().createIdentifierValue(propertyID));
&gt; -            range.consumeIncludingWhitespace();
&gt; -        } else {

It is not clear to me how this is better. The primary purpose of this loop is to consume property identifiers which the old code made clear.

After your change the loop looks like it is about CSSValues and property IDs are a buried special case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813086</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-09 04:51:47 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 443672 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443672&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:-502
&gt; &gt;      // Every comma-separated list of identifiers is a valid will-change value,
&gt; &gt;      // unless the list includes an explicitly disallowed identifier.
&gt; &gt; -    while (true) {
&gt; &gt; -        if (range.peek().type() != IdentToken)
&gt; &gt; +    while (!range.atEnd()) {
&gt; &gt; +        switch (range.peek().id()) {
&gt; &gt; +        case CSSValueNone:
&gt; &gt; +        case CSSValueAll:
&gt; &gt; +        case CSSValueAuto:
&gt; &gt;              return nullptr;
&gt; &gt; -        CSSPropertyID propertyID = cssPropertyID(range.peek().value());
&gt; &gt; -        if (propertyID != CSSPropertyInvalid) {
&gt; &gt; -            // Now &quot;all&quot; is used by both CSSValue and CSSPropertyValue.
&gt; &gt; -            // Need to return nullptr when currentValue is CSSPropertyAll.
&gt; &gt; -            if (propertyID == CSSPropertyWillChange || propertyID == CSSPropertyAll)
&gt; &gt; -                return nullptr;
&gt; &gt; -            values-&gt;append(CSSValuePool::singleton().createIdentifierValue(propertyID));
&gt; &gt; -            range.consumeIncludingWhitespace();
&gt; &gt; -        } else {
&gt; 
&gt; It is not clear to me how this is better. The primary purpose of this loop
&gt; is to consume property identifiers which the old code made clear.
&gt; 
&gt; After your change the loop looks like it is about CSSValues and property IDs
&gt; are a buried special case.

This is how the spec defines things, defines values first, and property IDs are just a special cases of &lt;custom-ident&gt;, so to me this is actually easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813087</commentid>
    <comment_count>5</comment_count>
      <attachid>443672</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-09 04:57:27 -0800</bug_when>
    <thetext>Comment on attachment 443672
Patch

Ok then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813091</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-09 05:08:29 -0800</bug_when>
    <thetext>Committed r285492 (244016@main): &lt;https://commits.webkit.org/244016@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813092</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-09 05:09:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85198621&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443671</attachid>
            <date>2021-11-09 03:14:53 -0800</date>
            <delta_ts>2021-11-09 03:21:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232874-20211109111452.patch</filename>
            <type>text/plain</type>
            <size>3558</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRjNWY0ZjQ5NTc1ZWIz
NzZiYTA2ZTJkNTRhYmFjN2RkZjM1NWM5Mi4uZDdjZWFkYjU1MmIxZWIxYmQ2Mjk4ZDFhMTk1NmU1
N2VmZGNiNzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTA5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgY29uc3VtZVdpbGxD
aGFuZ2UoKSB0byBtYWtlIGJldHRlciB1c2Ugb2YgY29uc3VtZUN1c3RvbUlkZW50KCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbnN1bWVDdXN0b21J
ZGVudCgpIGFscmVhZHkgcmVqZWN0cyBmb3Igbm9uLWlkZW50IHR5cGVzIGFuZCByZXNlcnZlZCBr
ZXl3b3Jkcy4KKyAgICAgICAgTWFrZSB1c2Ugb2YgdGhhdCB0byBtYWtlIHRoZSBmdW5jdGlvbiBt
b3JlIHJlYWRhYmxlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lV2lsbENoYW5nZSk6CisKIDIwMjEtMTEtMDkg
IFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXNWYWxpZEN1c3Rv
bUlkZW50aWZpZXIgaW4gY29uc3VtZVdpbGxDaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYjdmMDcwYWY0NTRhNDdkN2NkY2Ux
MTA1NjM2ZjVhNTdjNGU3MWNlMi4uZWE5MTU5YTVkMGM3MGMxOGJiMGE2YzI5Yjc5ZGJkYTZjYWNl
MWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKQEAgLTQ4OSwzNCArNDg5LDMwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVXaWxsQ2hhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIC8vIEV2ZXJ5IGNv
bW1hLXNlcGFyYXRlZCBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIGEgdmFsaWQgd2lsbC1jaGFuZ2Ug
dmFsdWUsCiAgICAgLy8gdW5sZXNzIHRoZSBsaXN0IGluY2x1ZGVzIGFuIGV4cGxpY2l0bHkgZGlz
YWxsb3dlZCBpZGVudGlmaWVyLgogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHN3aXRjaCAocmFuZ2UucGVl
aygpLmlkKCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVBbGw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5
SUQocmFuZ2UucGVlaygpLnZhbHVlKCkpOwotICAgICAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQ
cm9wZXJ0eUludmFsaWQpIHsKLSAgICAgICAgICAgIC8vIE5vdyAiYWxsIiBpcyB1c2VkIGJ5IGJv
dGggQ1NTVmFsdWUgYW5kIENTU1Byb3BlcnR5VmFsdWUuCi0gICAgICAgICAgICAvLyBOZWVkIHRv
IHJldHVybiBudWxscHRyIHdoZW4gY3VycmVudFZhbHVlIGlzIENTU1Byb3BlcnR5QWxsLgotICAg
ICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaWxsQ2hhbmdlIHx8IHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlBbGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShwcm9wZXJ0eUlEKSk7Ci0gICAgICAgICAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
YXV0byBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwotICAgICAgICAgICAgc3dpdGNoIChpZCkgewot
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVl
QWxsOgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVDb250ZW50czoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uOgorICAgICAg
ICAgICAgdmFsdWVzLT5hcHBlbmQoY29uc3VtZUlkZW50KHJhbmdlKS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChyYW5nZS5wZWVrKCkudmFsdWUo
KSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2Up
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBjYXNlIENTU1Zh
bHVlQ29udGVudHM6Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsUG9zaXRpb246Ci0g
ICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoY29uc3VtZUlkZW50KHJhbmdlKS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52
YWxpZCkgeworICAgICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHByb3BlcnR5SUQpKTsKKyAgICAgICAgICAg
ICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpZiAoIWlzVmFs
aWRDdXN0b21JZGVudGlmaWVyKGlkKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byBjdXN0b21JZGVudCA9IGNv
bnN1bWVDdXN0b21JZGVudChyYW5nZSkpIHsKICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgcHJv
cGVydGllcyB3ZSBkb24ndCByZWNvZ25pemUsIGJ1dCB0aGF0IGFyZSBsZWdhbCwgYXMgc3RyaW5n
cy4KLSAgICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjb25zdW1lQ3VzdG9tSWRlbnQocmFu
Z2UpLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKGN1
c3RvbUlkZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAocmFuZ2UuYXRFbmQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443672</attachid>
            <date>2021-11-09 03:21:38 -0800</date>
            <delta_ts>2021-11-09 04:57:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232874-20211109112137.patch</filename>
            <type>text/plain</type>
            <size>3888</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRjNWY0ZjQ5NTc1ZWIz
NzZiYTA2ZTJkNTRhYmFjN2RkZjM1NWM5Mi4uZDdjZWFkYjU1MmIxZWIxYmQ2Mjk4ZDFhMTk1NmU1
N2VmZGNiNzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTA5ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgY29uc3VtZVdpbGxD
aGFuZ2UoKSB0byBtYWtlIGJldHRlciB1c2Ugb2YgY29uc3VtZUN1c3RvbUlkZW50KCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbnN1bWVDdXN0b21J
ZGVudCgpIGFscmVhZHkgcmVqZWN0cyBmb3Igbm9uLWlkZW50IHR5cGVzIGFuZCByZXNlcnZlZCBr
ZXl3b3Jkcy4KKyAgICAgICAgTWFrZSB1c2Ugb2YgdGhhdCB0byBtYWtlIHRoZSBmdW5jdGlvbiBt
b3JlIHJlYWRhYmxlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lV2lsbENoYW5nZSk6CisKIDIwMjEtMTEtMDkg
IFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgaXNWYWxpZEN1c3Rv
bUlkZW50aWZpZXIgaW4gY29uc3VtZVdpbGxDaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYjdmMDcwYWY0NTRhNDdkN2NkY2Ux
MTA1NjM2ZjVhNTdjNGU3MWNlMi4uZTIzMmM4NDlkMGIyOTMxMTkzNWQxNTQzMWFlZWViYzE3NTc5
NmUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKQEAgLTQ4OCw0MCArNDg4LDM1IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVXaWxsQ2hhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
ICAgICAvLyBFdmVyeSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpZGVudGlmaWVycyBpcyBhIHZh
bGlkIHdpbGwtY2hhbmdlIHZhbHVlLAogICAgIC8vIHVubGVzcyB0aGUgbGlzdCBpbmNsdWRlcyBh
biBleHBsaWNpdGx5IGRpc2FsbG93ZWQgaWRlbnRpZmllci4KLSAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgIHdoaWxl
ICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBzd2l0Y2ggKHJhbmdlLnBlZWsoKS5pZCgpKSB7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICBjYXNlIENTU1ZhbHVlQWxsOgor
ICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHJhbmdlLnBl
ZWsoKS52YWx1ZSgpKTsKLSAgICAgICAgaWYgKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZh
bGlkKSB7Ci0gICAgICAgICAgICAvLyBOb3cgImFsbCIgaXMgdXNlZCBieSBib3RoIENTU1ZhbHVl
IGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgotICAgICAgICAgICAgLy8gTmVlZCB0byByZXR1cm4gbnVs
bHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBpcyBDU1NQcm9wZXJ0eUFsbC4KLSAgICAgICAgICAgIGlm
IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2lsbENoYW5nZSB8fCBwcm9wZXJ0eUlEID09IENT
U1Byb3BlcnR5QWxsKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAg
ICAgdmFsdWVzLT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUocHJvcGVydHlJRCkpOwotICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBy
YW5nZS5wZWVrKCkuaWQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbDoKLSAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICBjYXNlIENTU1ZhbHVlQ29udGVudHM6
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbjoKKyAgICAgICAgICAgIHZhbHVl
cy0+YXBwZW5kKGNvbnN1bWVJZGVudChyYW5nZSkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocmFuZ2UucGVlaygpLnZhbHVlKCkpOworICAgICAg
ICAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaWxsQ2hhbmdlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbnRlbnRz
OgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uOgotICAgICAgICAgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKGNvbnN1bWVJZGVudChyYW5nZSkucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgICAgICAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQpIHsKKyAg
ICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShwcm9wZXJ0eUlEKSk7CisgICAgICAgICAgICAgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ3VzdG9tSWRl
bnRpZmllcihpZCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8gY3VzdG9tSWRlbnQgPSBjb25zdW1lQ3VzdG9t
SWRlbnQocmFuZ2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHByb3BlcnRpZXMgd2Ug
ZG9uJ3QgcmVjb2duaXplLCBidXQgdGhhdCBhcmUgbGVnYWwsIGFzIHN0cmluZ3MuCi0gICAgICAg
ICAgICAgICAgdmFsdWVzLT5hcHBlbmQoY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZChjdXN0b21JZGVudC5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJh
bmdlLmF0RW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKCFjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgLy8gVGhpcyBpcyBhIGNvbW1h
IHNlcGFyYXRlZCBsaXN0CisgICAgICAgIGlmICghcmFuZ2UuYXRFbmQoKSAmJiAhY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAK
</data>
<flag name="review"
          id="468448"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>