<?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>154636</bug_id>
          
          <creation_ts>2016-02-24 00:10:55 -0800</creation_ts>
          <short_desc>A function named canTakeNextToken executing blocking scripts is misleading</short_desc>
          <delta_ts>2016-02-24 12:25:55 -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>Page Loading</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167730</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 00:10:55 -0800</bug_when>
    <thetext>A function named &quot;canTakeNextToken&quot; shouldn&apos;t implicitly execute blocking scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167736</commentid>
    <comment_count>1</comment_count>
      <attachid>272104</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 00:34:53 -0800</bug_when>
    <thetext>Created attachment 272104
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167790</commentid>
    <comment_count>2</comment_count>
      <attachid>272104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-24 08:27:37 -0800</bug_when>
    <thetext>Comment on attachment 272104
Cleanup

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        HTMLDocumentParser::canTakeNextToken shouldn&apos;t execute blocking scripts

Why no new test case?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:222
&gt; +        // happen instead  is that assigning window.location causes the parser to stop parsing cleanly.

Extra space here between &quot;instead&quot; and &quot;is&quot;.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.h:104
&gt; +        // monotonicallyIncreasingTime() can be expensive. By delaying, we avoided calling
&gt; +        // monotonicallyIncreasingTime() when constructing non-yielding PumpSessions.
&gt; +        if (!session.startTime)
&gt; +            session.startTime = monotonicallyIncreasingTime();
&gt; +
&gt; +        session.processedTokens = 1;
&gt; +        session.didSeeScript = false;
&gt; +
&gt; +        double elapsedTime = monotonicallyIncreasingTime() - session.startTime;
&gt; +        return elapsedTime &gt; m_parserTimeLimit;

Would be nice to refactor this so it only calls monotonicallyIncreasingTime() *once* the first time it’s called. Instead of calling it twice and subtracting the values. Maybe like this:

    if (!session.startTime) {
        session.startTime = monotonicallyIncreasingTime();
        return false;
    }
    return monotonicallyIncreasingTime() - session.startTime &gt; m_parserTimeLimit;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167866</commentid>
    <comment_count>3</comment_count>
      <attachid>272104</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 12:18:20 -0800</bug_when>
    <thetext>Comment on attachment 272104
Cleanup

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        HTMLDocumentParser::canTakeNextToken shouldn&apos;t execute blocking scripts
&gt; 
&gt; Why no new test case?

Sorry, maybe this bug title is misleading.
This patch is pure refactoring and there should be no behavioral change.
I&apos;ve renamed the bug and clarified it in the change log.

&gt;&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:222
&gt;&gt; +        // happen instead  is that assigning window.location causes the parser to stop parsing cleanly.
&gt; 
&gt; Extra space here between &quot;instead&quot; and &quot;is&quot;.

Removed.

&gt;&gt; Source/WebCore/html/parser/HTMLParserScheduler.h:104
&gt;&gt; +        return elapsedTime &gt; m_parserTimeLimit;
&gt; 
&gt; Would be nice to refactor this so it only calls monotonicallyIncreasingTime() *once* the first time it’s called. Instead of calling it twice and subtracting the values. Maybe like this:
&gt; 
&gt;     if (!session.startTime) {
&gt;         session.startTime = monotonicallyIncreasingTime();
&gt;         return false;
&gt;     }
&gt;     return monotonicallyIncreasingTime() - session.startTime &gt; m_parserTimeLimit;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167879</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-24 12:25:55 -0800</bug_when>
    <thetext>Committed r197040: &lt;http://trac.webkit.org/changeset/197040&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272104</attachid>
            <date>2016-02-24 00:34:53 -0800</date>
            <delta_ts>2016-02-24 08:27:37 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-154636-20160224003436.patch</filename>
            <type>text/plain</type>
            <size>13343</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE2LTAyLTI0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6
Y2FuVGFrZU5leHRUb2tlbiBzaG91bGRuJ3QgZXhlY3V0ZSBibG9ja2luZyBzY3JpcHRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ2MzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZWQgY2FuVGFr
ZU5leHRUb2tlbiBpbnRvIHB1bXBUb2tlbml6ZXIgYW5kIGV4dHJhY3RlZCBwdW1wVG9rZW5pemVy
TG9vcCBvdXQgb2YgcHVtcFRva2VuaXplci4KKworICAgICAgICBJbmxpbmVkIG1fcGFyc2VyQ2h1
bmtTaXplIGluIEhUTUxQYXJzZXJTY2hlZHVsZXIgaW50byBjaGVja0ZvcllpZWxkQmVmb3JlVG9r
ZW4sIGFuZCByZW1vdmVkIG5lZWRzWWllbGQKKyAgICAgICAgZnJvbSBQdW1wU2Vzc2lvbiBpbiBm
YXZvciBvZiBtYWtpbmcgY2hlY2tGb3JZaWVsZEJlZm9yZVRva2VuIGFuZCBjaGVja0ZvcllpZWxk
QmVmb3JlU2NyaXB0IHJldHVybiBhIGJvb2wuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2Vy
OjpjYW5UYWtlTmV4dFRva2VuKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1
bWVudFBhcnNlcjo6cHVtcFRva2VuaXplckxvb3ApOiBFeHRyYWN0ZWQgZnJvbSBwdW1wVG9rZW5p
emVyLiBXZSBkb24ndCBoYXZlIHRvIGNoZWNrCisgICAgICAgIGlzU3RvcHBlZCgpIGF0IHRoZSBi
ZWdpbm5pbmcgc2luY2UgcHVtcFRva2VuaXplciBhc3NlcnRzIHRoYXQuIFJldHVybiB0cnVlIHdo
ZW4gc2Vzc2lvbi5uZWVkc1lpZWxkIHdvdWxkCisgICAgICAgIGhhdmUgYmVlbiBzZXQgdG8gdHJ1
ZSBpbiB0aGUgb2xkIGNvZGUgYW5kIHJldHVybiBmYWxzZSBlbHNld2hlcmUgKGZvciBzdG9wcGlu
ZyBvciBpbmNvbXBsZXRlIHRva2VuKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQdW1wU2Vzc2lvbjo6UHVtcFNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6SFRNTFBhcnNlclNjaGVkdWxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1
dGluZ1NjcmlwdCk6IFJlbmFtZWQgZnJvbSBjaGVja0ZvcllpZWxkQmVmb3JlU2NyaXB0LgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OnNob3VsZFlpZWxkQmVmb3JlVG9rZW4pOiBSZW5hbWVk
IGZyb20gY2hlY2tGb3JZaWVsZEJlZm9yZVRva2VuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBh
cnNlclNjaGVkdWxlcjo6aXNTY2hlZHVsZWRGb3JSZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcnNlclNjaGVkdWxlcjo6Y2hlY2tGb3JZaWVsZCk6IEV4dHJhY3RlZCBmcm9tIGNoZWNr
Rm9yWWllbGRCZWZvcmVUb2tlbi4gUmVzZXQKKyAgICAgICAgcHJvY2Vzc2VkVG9rZW5zIHRvIDEg
aW5zdGVhZCBvZiBzZXR0aW5nIGl0IHRvIDAgaGVyZSBhbmQgaW5jcmVtZW50aW5nIGl0IGxhdGVy
IGFzIGRvbmUgaW4gdGhlIG9sZCBjb2RlLgorCiAyMDE2LTAyLTI0ICBBZGFtIEJlcmdrdmlzdCAg
PGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBXZWJSVEM6IEFkZCBhZGRS
ZWNlaXZlcigpIGZ1bmN0aW9uIHRvIFBlZXJDb25uZWN0aW9uQmFja2VuZENsaWVudCBpbnRlcmZh
Y2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAkocmV2aXNpb24gMTk2OTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDM4ICsxOTYs
NiBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhCiAgICAgfQogfQog
Ci1ib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6Y2FuVGFrZU5leHRUb2tlbihTeW5jaHJvbm91c01v
ZGUgbW9kZSwgUHVtcFNlc3Npb24mIHNlc3Npb24pCi17Ci0gICAgaWYgKGlzU3RvcHBlZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7
Ci0gICAgICAgIGlmIChtb2RlID09IEFsbG93WWllbGQpCi0gICAgICAgICAgICBtX3BhcnNlclNj
aGVkdWxlci0+Y2hlY2tGb3JZaWVsZEJlZm9yZVNjcmlwdChzZXNzaW9uKTsKLQotICAgICAgICAv
LyBJZiB3ZSBkb24ndCBydW4gdGhlIHNjcmlwdCwgd2UgY2Fubm90IGFsbG93IHRoZSBuZXh0IHRv
a2VuIHRvIGJlIHRha2VuLgotICAgICAgICBpZiAoc2Vzc2lvbi5uZWVkc1lpZWxkKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIElmIHdlJ3JlIHBhdXNlZCB3YWl0aW5n
IGZvciBhIHNjcmlwdCwgd2UgdHJ5IHRvIGV4ZWN1dGUgc2NyaXB0cyBiZWZvcmUgY29udGludWlu
Zy4KLSAgICAgICAgcnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCk7Ci0gICAgICAgIGlm
IChpc1dhaXRpbmdGb3JTY3JpcHRzKCkgfHwgaXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEl0J3Mgd3JvbmcgZm9yIHRoZSBIVE1M
RG9jdW1lbnRQYXJzZXIgdG8gcmVhY2ggYmFjayB0byB0aGUgRnJhbWUsIGJ1dCB0aGlzIGFwcHJv
YWNoIGlzCi0gICAgLy8gaG93IHRoZSBwYXJzZXIgaGFzIGFsd2F5cyBoYW5kbGVkIHN0b3BwaW5n
IHdoZW4gdGhlIHBhZ2UgYXNzaWducyB3aW5kb3cubG9jYXRpb24uIFdoYXQgc2hvdWxkCi0gICAg
Ly8gaGFwcGVuIGluc3RlYWQgIGlzIHRoYXQgYXNzaWduaW5nIHdpbmRvdy5sb2NhdGlvbiBjYXVz
ZXMgdGhlIHBhcnNlciB0byBzdG9wIHBhcnNpbmcgY2xlYW5seS4KLSAgICAvLyBUaGUgcHJvYmxl
bSBpcyB3ZSdyZSBub3QgcHJlcGFyZWQgdG8gZG8gdGhhdCBhdCBldmVyeSBwb2ludCB3aGVyZSB3
ZSBydW4gSmF2YVNjcmlwdC4KLSAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgZG9jdW1l
bnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVy
KCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChtb2RlID09IEFsbG93WWllbGQpCi0gICAgICAgIG1fcGFyc2VyU2NoZWR1bGVyLT5jaGVj
a0ZvcllpZWxkQmVmb3JlVG9rZW4oc2Vzc2lvbik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
RG9jdW1lbnQqIEhUTUxEb2N1bWVudFBhcnNlcjo6Y29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkK
IHsKICAgICAvLyBUaGUgcGFyc2luZyBzZXNzaW9uIHNob3VsZCBpbnRlcmFjdCB3aXRoIHRoZSBk
b2N1bWVudCBvbmx5IHdoZW4gcGFyc2luZwpAQCAtMjM3LDI3ICsyMDUsMzYgQEAgRG9jdW1lbnQq
IEhUTUxEb2N1bWVudFBhcnNlcjo6Y29udGV4dEZvcgogICAgIHJldHVybiBkb2N1bWVudCgpOwog
fQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01v
ZGUgbW9kZSkKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyTG9vcChTeW5j
aHJvbm91c01vZGUgbW9kZSwgYm9vbCBwYXJzaW5nRnJhZ21lbnQsIFB1bXBTZXNzaW9uJiBzZXNz
aW9uKQogewotICAgIEFTU0VSVCghaXNTdG9wcGVkKCkpOwotICAgIEFTU0VSVCghaXNTY2hlZHVs
ZWRGb3JSZXN1bWUoKSk7Ci0KLSAgICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gY2hlY2sgdGhh
dCB0aGlzIG9iamVjdCBpcyBib3RoIGF0dGFjaGVkIHRvIHRoZSBEb2N1bWVudCBhbmQgcHJvdGVj
dGVkIGJ5IHNvbWV0aGluZy4KLSAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKKyAgICBkbyB7
CisgICAgICAgIGlmIChVTkxJS0VMWShpc1dhaXRpbmdGb3JTY3JpcHRzKCkpKSB7CisgICAgICAg
ICAgICBpZiAobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2NoZWR1bGVyLT5zaG91bGRZ
aWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChzZXNzaW9uKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpOwor
ICAgICAgICAgICAgLy8gSWYgd2UncmUgcGF1c2VkIHdhaXRpbmcgZm9yIGEgc2NyaXB0LCB3ZSB0
cnkgdG8gZXhlY3V0ZSBzY3JpcHRzIGJlZm9yZSBjb250aW51aW5nLgorICAgICAgICAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSB8fCBpc1N0b3BwZWQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAotICAgIFB1bXBTZXNzaW9uIHNlc3Npb24obV9wdW1w
U2Vzc2lvbk5lc3RpbmdMZXZlbCwgY29udGV4dEZvclBhcnNpbmdTZXNzaW9uKCkpOworICAgICAg
ICAvLyBGSVhNRTogSXQncyB3cm9uZyBmb3IgdGhlIEhUTUxEb2N1bWVudFBhcnNlciB0byByZWFj
aCBiYWNrIHRvIHRoZSBGcmFtZSwgYnV0IHRoaXMgYXBwcm9hY2ggaXMKKyAgICAgICAgLy8gaG93
IHRoZSBwYXJzZXIgaGFzIGFsd2F5cyBoYW5kbGVkIHN0b3BwaW5nIHdoZW4gdGhlIHBhZ2UgYXNz
aWducyB3aW5kb3cubG9jYXRpb24uIFdoYXQgc2hvdWxkCisgICAgICAgIC8vIGhhcHBlbiBpbnN0
ZWFkICBpcyB0aGF0IGFzc2lnbmluZyB3aW5kb3cubG9jYXRpb24gY2F1c2VzIHRoZSBwYXJzZXIg
dG8gc3RvcCBwYXJzaW5nIGNsZWFubHkuCisgICAgICAgIC8vIFRoZSBwcm9ibGVtIGlzIHdlJ3Jl
IG5vdCBwcmVwYXJlZCB0byBkbyB0aGF0IGF0IGV2ZXJ5IHBvaW50IHdoZXJlIHdlIHJ1biBKYXZh
U2NyaXB0LgorICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNpbmdGcmFnbWVudCAmJiBkb2N1bWVu
dCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIo
KS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX3hzc0F1ZGl0b3IuaW5pdChkb2N1bWVudCgpLCAmbV94c3NBdWRpdG9yRGVsZWdhdGUp
OworICAgICAgICBpZiAoVU5MSUtFTFkobW9kZSA9PSBBbGxvd1lpZWxkICYmIG1fcGFyc2VyU2No
ZWR1bGVyLT5zaG91bGRZaWVsZEJlZm9yZVRva2VuKHNlc3Npb24pKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgd2hpbGUgKGNhblRha2VOZXh0VG9rZW4obW9kZSwgc2Vzc2lvbikg
JiYgIXNlc3Npb24ubmVlZHNZaWVsZCkgewotICAgICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50
KCkpCisgICAgICAgIGlmICghcGFyc2luZ0ZyYWdtZW50KQogICAgICAgICAgICAgbV9zb3VyY2VU
cmFja2VyLnN0YXJ0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyKTsKIAogICAg
ICAgICBhdXRvIHRva2VuID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgp
KTsKICAgICAgICAgaWYgKCF0b2tlbikKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSkgeworICAg
ICAgICBpZiAoIXBhcnNpbmdGcmFnbWVudCkgewogICAgICAgICAgICAgbV9zb3VyY2VUcmFja2Vy
LmVuZFRva2VuKG1faW5wdXQuY3VycmVudCgpLCBtX3Rva2VuaXplcik7CiAKICAgICAgICAgICAg
IC8vIFdlIGRvIG5vdCBYU1MgZmlsdGVyIGlubmVySFRNTCwgd2hpY2ggbWVhbnMgd2UgKGludGVu
dGlvbmFsbHkpIGZhaWwKQEAgLTI2Nyw3ICsyNDQsMjQgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnB1bXBUb2tlbml6ZXIoUwogICAgICAgICB9CiAKICAgICAgICAgY29uc3RydWN0VHJlZUZy
b21IVE1MVG9rZW4odG9rZW4pOwotICAgIH0KKyAgICB9IHdoaWxlICghaXNTdG9wcGVkKCkpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRv
a2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKK3sKKyAgICBBU1NFUlQoIWlzU3RvcHBlZCgp
KTsKKyAgICBBU1NFUlQoIWlzU2NoZWR1bGVkRm9yUmVzdW1lKCkpOworCisgICAgLy8gVGhpcyBp
cyBhbiBhdHRlbXB0IHRvIGNoZWNrIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0
byB0aGUgRG9jdW1lbnQgYW5kIHByb3RlY3RlZCBieSBzb21ldGhpbmcuCisgICAgQVNTRVJUKHJl
ZkNvdW50KCkgPj0gMik7CisKKyAgICBQdW1wU2Vzc2lvbiBzZXNzaW9uKG1fcHVtcFNlc3Npb25O
ZXN0aW5nTGV2ZWwsIGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsKKworICAgIG1feHNzQXVk
aXRvci5pbml0KGRvY3VtZW50KCksICZtX3hzc0F1ZGl0b3JEZWxlZ2F0ZSk7CisKKyAgICBib29s
IHNob3VsZFJlc3VtZSA9IHB1bXBUb2tlbml6ZXJMb29wKG1vZGUsIGlzUGFyc2luZ0ZyYWdtZW50
KCksIHNlc3Npb24pOwogCiAgICAgLy8gRW5zdXJlIHdlIGhhdmVuJ3QgYmVlbiB0b3RhbGx5IGRl
cmVmJ2VkIGFmdGVyIHB1bXBpbmcuIEFueSBjYWxsZXIgb2YgdGhpcwogICAgIC8vIGZ1bmN0aW9u
IHNob3VsZCBiZSBob2xkaW5nIGEgUmVmUHRyIHRvIHRoaXMgdG8gZW5zdXJlIHdlIHdlcmVuJ3Qg
ZGVsZXRlZC4KQEAgLTI3Niw3ICsyNzAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVt
cFRva2VuaXplcihTCiAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc2Vzc2lvbi5uZWVkc1lpZWxkKQorICAgIGlmIChzaG91bGRSZXN1bWUpCiAgICAgICAg
IG1fcGFyc2VyU2NoZWR1bGVyLT5zY2hlZHVsZUZvclJlc3VtZSgpOwogCiAgICAgaWYgKGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDE5Njk5OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsOCArMTAyLDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogY29udGV4dEZvclBhcnNpbmdT
ZXNzaW9uKCk7CiAKICAgICBlbnVtIFN5bmNocm9ub3VzTW9kZSB7IEFsbG93WWllbGQsIEZvcmNl
U3luY2hyb25vdXMgfTsKLSAgICBib29sIGNhblRha2VOZXh0VG9rZW4oU3luY2hyb25vdXNNb2Rl
LCBQdW1wU2Vzc2lvbiYpOwogICAgIHZvaWQgcHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUp
OworICAgIGJvb2wgcHVtcFRva2VuaXplckxvb3AoU3luY2hyb25vdXNNb2RlLCBib29sIHBhcnNp
bmdGcmFnbWVudCwgUHVtcFNlc3Npb24mKTsKICAgICB2b2lkIHB1bXBUb2tlbml6ZXJJZlBvc3Np
YmxlKFN5bmNocm9ub3VzTW9kZSk7CiAgICAgdm9pZCBjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tl
bihIVE1MVG9rZW5pemVyOjpUb2tlblB0ciYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTk2OTk5
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiw2IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCi0vLyBkZWZhdWx0UGFyc2VyQ2h1bmtTaXpl
IGlzIHVzZWQgdG8gZGVmaW5lIGhvdyBtYW55IHRva2VucyB0aGUgcGFyc2VyIHdpbGwKLS8vIHBy
b2Nlc3MgYmVmb3JlIGNoZWNraW5nIGFnYWluc3QgcGFyc2VyVGltZUxpbWl0IGFuZCBwb3NzaWJs
eSB5aWVsZGluZy4KLS8vIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gcHJl
dmVudCBjaGVja2luZyBhZnRlciBldmVyeSB0b2tlbi4KLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVs
dFBhcnNlckNodW5rU2l6ZSA9IDQwOTY7Ci0KIC8vIGRlZmF1bHRQYXJzZXJUaW1lTGltaXQgaXMg
dGhlIHNlY29uZHMgdGhlIHBhcnNlciB3aWxsIHJ1biBpbiBvbmUgd3JpdGUoKSBjYWxsCiAvLyBi
ZWZvcmUgeWllbGRpbmcuIElubGluZSA8c2NyaXB0PiBleGVjdXRpb24gY2FuIGNhdXNlIGl0IHRv
IGV4Y2VlZCB0aGUgbGltaXQuCiAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0aGlzIHZhbHVlIHRv
IGJlIDAuMi4KQEAgLTc1LDcgKzcwLDYgQEAgUHVtcFNlc3Npb246OlB1bXBTZXNzaW9uKHVuc2ln
bmVkJiBuZXN0aQogICAgIC8vIEF0IHRoYXQgdGltZSB3ZSdsbCBpbml0aWFsaXplIHN0YXJ0VGlt
ZS4KICAgICAsIHByb2Nlc3NlZFRva2VucyhJTlRfTUFYKQogICAgICwgc3RhcnRUaW1lKDApCi0g
ICAgLCBuZWVkc1lpZWxkKGZhbHNlKQogICAgICwgZGlkU2VlU2NyaXB0KGZhbHNlKQogewogfQpA
QCAtODcsNyArODEsNiBAQCBQdW1wU2Vzc2lvbjo6flB1bXBTZXNzaW9uKCkKIEhUTUxQYXJzZXJT
Y2hlZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIoSFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIp
CiAgICAgOiBtX3BhcnNlcihwYXJzZXIpCiAgICAgLCBtX3BhcnNlclRpbWVMaW1pdChwYXJzZXJU
aW1lTGltaXQobV9wYXJzZXIuZG9jdW1lbnQoKS0+cGFnZSgpKSkKLSAgICAsIG1fcGFyc2VyQ2h1
bmtTaXplKGRlZmF1bHRQYXJzZXJDaHVua1NpemUpCiAgICAgLCBtX2NvbnRpbnVlTmV4dENodW5r
VGltZXIoKnRoaXMsICZIVE1MUGFyc2VyU2NoZWR1bGVyOjpjb250aW51ZU5leHRDaHVua1RpbWVy
RmlyZWQpCiAgICAgLCBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyKGZhbHNlKQogI2lmICFB
U1NFUlRfRElTQUJMRUQKQEAgLTExNCwxNSArMTA3LDE0IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVk
dWxlcjo6Y29udGludWVOZXh0Q2gKICAgICBtX3BhcnNlci5yZXN1bWVQYXJzaW5nQWZ0ZXJZaWVs
ZCgpOwogfQogCi12b2lkIEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNoZWNrRm9yWWllbGRCZWZvcmVT
Y3JpcHQoUHVtcFNlc3Npb24mIHNlc3Npb24pCitib29sIEhUTUxQYXJzZXJTY2hlZHVsZXI6OnNo
b3VsZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogewog
ICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHBhaW50ZWQgYmVmb3JlIGFuZCBhIGxheW91dCBpcyBwZW5k
aW5nLCB5aWVsZCBwcmlvciB0byBydW5uaW5nCiAgICAgLy8gc2NyaXB0cyB0byBnaXZlIHRoZSBw
YWdlIGEgY2hhbmNlIHRvIHBhaW50IGVhcmxpZXIuCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9wYXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYWludCA9IGRvY3VtZW50
LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7Ci0gICAgaWYg
KG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVudC0+aXNMYXlvdXRUaW1lckFjdGl2ZSgpKQotICAg
ICAgICBzZXNzaW9uLm5lZWRzWWllbGQgPSB0cnVlOwogICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0
ID0gdHJ1ZTsKKyAgICByZXR1cm4gbmVlZHNGaXJzdFBhaW50ICYmIGRvY3VtZW50LT5pc0xheW91
dFRpbWVyQWN0aXZlKCk7CiB9CiAKIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2NoZWR1bGVG
b3JSZXN1bWUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNj
aGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJTY2hlZHVsZXIuaAkocmV2aXNpb24gMTk2OTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw5ICs1
NCw4IEBAIHB1YmxpYzoKICAgICBQdW1wU2Vzc2lvbih1bnNpZ25lZCYgbmVzdGluZ0xldmVsLCBE
b2N1bWVudCopOwogICAgIH5QdW1wU2Vzc2lvbigpOwogCi0gICAgaW50IHByb2Nlc3NlZFRva2Vu
czsKKyAgICB1bnNpZ25lZCBwcm9jZXNzZWRUb2tlbnM7CiAgICAgZG91YmxlIHN0YXJ0VGltZTsK
LSAgICBib29sIG5lZWRzWWllbGQ7CiAgICAgYm9vbCBkaWRTZWVTY3JpcHQ7CiB9OwogCkBAIC02
NiwyOSArNjUsMTkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEhUTUxQYXJzZXJTY2hlZHVsZXIo
SFRNTERvY3VtZW50UGFyc2VyJik7CiAgICAgfkhUTUxQYXJzZXJTY2hlZHVsZXIoKTsKIAotICAg
IC8vIElubGluZSBhcyB0aGlzIGlzIGNhbGxlZCBhZnRlciBldmVyeSB0b2tlbiBpbiB0aGUgcGFy
c2VyLgotICAgIHZvaWQgY2hlY2tGb3JZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNz
aW9uKQorICAgIGJvb2wgc2hvdWxkWWllbGRCZWZvcmVUb2tlbihQdW1wU2Vzc2lvbiYgc2Vzc2lv
bikKICAgICB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoV2ViVGhyZWFkU2hvdWxk
WWllbGQoKSkKLSAgICAgICAgICAgIHNlc3Npb24ubmVlZHNZaWVsZCA9IHRydWU7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICBpZiAoc2Vzc2lvbi5wcm9jZXNzZWRU
b2tlbnMgPiBtX3BhcnNlckNodW5rU2l6ZSB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkgewotICAg
ICAgICAgICAgLy8gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgY2FuIGJlIGV4cGVuc2l2
ZS4gQnkgZGVsYXlpbmcsIHdlIGF2b2lkZWQgY2FsbGluZwotICAgICAgICAgICAgLy8gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgd2hlbiBjb25zdHJ1Y3Rpbmcgbm9uLXlpZWxkaW5nIFB1
bXBTZXNzaW9ucy4KLSAgICAgICAgICAgIGlmICghc2Vzc2lvbi5zdGFydFRpbWUpCi0gICAgICAg
ICAgICAgICAgc2Vzc2lvbi5zdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKLQotICAgICAgICAgICAgc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPSAwOwotICAgICAgICAg
ICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSBmYWxzZTsKLQotICAgICAgICAgICAgZG91YmxlIGVs
YXBzZWRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzZXNzaW9uLnN0YXJ0
VGltZTsKLSAgICAgICAgICAgIGlmIChlbGFwc2VkVGltZSA+IG1fcGFyc2VyVGltZUxpbWl0KQot
ICAgICAgICAgICAgICAgIHNlc3Npb24ubmVlZHNZaWVsZCA9IHRydWU7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5zID4gbnVtYmVyT2ZUb2tl
bnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlkU2VlU2NyaXB0KSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOworCiAgICAgICAgICsrc2Vzc2lv
bi5wcm9jZXNzZWRUb2tlbnM7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgdm9p
ZCBjaGVja0ZvcllpZWxkQmVmb3JlU2NyaXB0KFB1bXBTZXNzaW9uJik7CisgICAgYm9vbCBzaG91
bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBz
Y2hlZHVsZUZvclJlc3VtZSgpOwogICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25z
dCB7IHJldHVybiBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29udGludWVOZXh0
Q2h1bmtUaW1lci5pc0FjdGl2ZSgpOyB9CkBAIC05NywxMiArODYsMjcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzdW1lKCk7CiAKIHByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mVG9rZW5zQmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCA9IDQwOTY7IC8vIFBlcmZvcm1hbmNl
IG9wdGltaXphdGlvbgorCiAgICAgdm9pZCBjb250aW51ZU5leHRDaHVua1RpbWVyRmlyZWQoKTsK
IAorICAgIGJvb2wgY2hlY2tGb3JZaWVsZChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKKyAgICB7Cisg
ICAgICAgIC8vIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGNhbiBiZSBleHBlbnNpdmUu
IEJ5IGRlbGF5aW5nLCB3ZSBhdm9pZGVkIGNhbGxpbmcKKyAgICAgICAgLy8gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgd2hlbiBjb25zdHJ1Y3Rpbmcgbm9uLXlpZWxkaW5nIFB1bXBTZXNz
aW9ucy4KKyAgICAgICAgaWYgKCFzZXNzaW9uLnN0YXJ0VGltZSkKKyAgICAgICAgICAgIHNlc3Np
b24uc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICAgICAg
c2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPSAxOworICAgICAgICBzZXNzaW9uLmRpZFNlZVNjcmlw
dCA9IGZhbHNlOworCisgICAgICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpIC0gc2Vzc2lvbi5zdGFydFRpbWU7CisgICAgICAgIHJldHVybiBlbGFw
c2VkVGltZSA+IG1fcGFyc2VyVGltZUxpbWl0OworICAgIH0KKwogICAgIEhUTUxEb2N1bWVudFBh
cnNlciYgbV9wYXJzZXI7CiAKICAgICBkb3VibGUgbV9wYXJzZXJUaW1lTGltaXQ7Ci0gICAgaW50
IG1fcGFyc2VyQ2h1bmtTaXplOwogICAgIFRpbWVyIG1fY29udGludWVOZXh0Q2h1bmtUaW1lcjsK
ICAgICBib29sIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXI7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAo=
</data>
<flag name="review"
          id="296904"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>