<?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>61209</bug_id>
          
          <creation_ts>2011-05-20 12:49:38 -0700</creation_ts>
          <short_desc>Factor CORS request preparation out of DocumentThreadableLoader</short_desc>
          <delta_ts>2011-05-21 19:26:51 -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>New Bugs</component>
          <version>528+ (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>
          
          <blocked>61015</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>kbr</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>407282</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-20 12:49:38 -0700</bug_when>
    <thetext>Factor CORS request preparation out of DocumentThreadableLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407284</commentid>
    <comment_count>1</comment_count>
      <attachid>94262</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-20 12:52:00 -0700</bug_when>
    <thetext>Created attachment 94262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407303</commentid>
    <comment_count>2</comment_count>
      <attachid>94262</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-20 13:48:59 -0700</bug_when>
    <thetext>Comment on attachment 94262
Patch

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

&gt; Source/WebCore/loader/CrossOriginAccessControl.cpp:99
&gt; +void updateRequestForAccessControl(ResourceRequest&amp; request, SecurityOrigin* securityOrigin, bool allowCredentials)

I wish we had a more descriptive name for this function.

&gt; Source/WebCore/loader/CrossOriginAccessControl.h:30
&gt; +#include &quot;ResourceRequest.h&quot;

Can&apos;t this be a forward declaration?

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:112
&gt; +    // Cross-origin requests are only defined for HTTP. We would catch this
&gt; +    // when checking response headers later, but there is no reason to send a
&gt; +    // request that&apos;s guaranteed to be denied.

I don&apos;t think that there is a reason to make lines this short - we don&apos;t have any kind of 80-character limit, and value vertical space. There is a much longer code line below!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407304</commentid>
    <comment_count>3</comment_count>
      <attachid>94262</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-20 13:50:08 -0700</bug_when>
    <thetext>Comment on attachment 94262
Patch

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

&gt; Source/WebCore/loader/CrossOriginAccessControl.h:45
&gt; +ResourceRequest createAccessControlPreflightRequest(const ResourceRequest&amp;, SecurityOrigin*, bool allowCredentials);

Would be nice to avoid copying the value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407306</commentid>
    <comment_count>4</comment_count>
      <attachid>94262</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-20 13:53:55 -0700</bug_when>
    <thetext>Comment on attachment 94262
Patch

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

&gt;&gt; Source/WebCore/loader/CrossOriginAccessControl.h:30
&gt;&gt; +#include &quot;ResourceRequest.h&quot;
&gt; 
&gt; Can&apos;t this be a forward declaration?

Not with the copy below.

&gt;&gt; Source/WebCore/loader/CrossOriginAccessControl.h:45
&gt;&gt; +ResourceRequest createAccessControlPreflightRequest(const ResourceRequest&amp;, SecurityOrigin*, bool allowCredentials);
&gt; 
&gt; Would be nice to avoid copying the value.

Yeah, the one caller wanted to make a copy anyway.  I could make it not a copy by using the heap, but that&apos;s probably a net loss.

&gt;&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:112
&gt;&gt; +    // request that&apos;s guaranteed to be denied.
&gt; 
&gt; I don&apos;t think that there is a reason to make lines this short - we don&apos;t have any kind of 80-character limit, and value vertical space. There is a much longer code line below!

Ok.  I just couldn&apos;t read the comment so I re-flowed it using gold-q.  I&apos;ll revert this part of the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407311</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-20 13:58:39 -0700</bug_when>
    <thetext>Committed r86980: &lt;http://trac.webkit.org/changeset/86980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407577</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-21 16:40:39 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/loader/CrossOriginAccessControl.h:30
&gt; &gt;&gt; +#include &quot;ResourceRequest.h&quot;
&gt; &gt; 
&gt; &gt; Can&apos;t this be a forward declaration?
&gt; 
&gt; Not with the copy below.

What copy are you referring to? It looks like it could be forward declared to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407589</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-21 19:26:51 -0700</bug_when>
    <thetext>ResourceRequest createAccessControlPreflightRequest(const ResourceRequest&amp;, SecurityOrigin*, bool allowCredentials);

^^^ The return is by copying.

I could be wrong though.  I&apos;ll try forward declaring it next time I have a build.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94262</attachid>
            <date>2011-05-20 12:52:00 -0700</date>
            <delta_ts>2011-05-20 13:53:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61209-20110520125158.patch</filename>
            <type>text/plain</type>
            <size>9392</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2OTc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUtMjAgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGYWN0b3IgQ09SUyByZXF1ZXN0IHByZXBhcmF0aW9uIG91dCBvZiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxMjA5CisKKyAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
IGhhcyB0d28gam9iczoKKworICAgICAgICAxKSBQcm94eSBsb2FkcyBiZXR3ZWVuIHRocmVhZHMu
CisgICAgICAgIDIpIFJ1biB0aGUgQ09SUyBzdGF0ZSBtYWNoaW5lLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYmVnaW5zIHRoZSB3b3JrIG9mIHNlcGFyYXRpbmcgdGhvc2UgY29uY2VybnMsIGFsbG93
aW5nIENPUlMKKyAgICAgICAgdG8gYmUgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGxvYWRpbmcgcGlw
ZWxpbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGlzCisgICAgICAgIHBhdGNoIG1vdmVzIGtub3dsZWRn
ZSBvZiBob3cgdG8gcHJlcGFyZSBDT1JTIHJlcXVlc3RzIG91dCBvZgorICAgICAgICBEb2N1bWVu
dFRocmVhZGFibGVMb2Rlci4KKworICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1
ZXN0SGVhZGVyV2hpdGVsaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlcXVlc3RGb3JB
Y2Nlc3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1h
a2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodCk6CisKIDIwMTEtMDUtMjAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCShyZXZp
c2lvbiA4Njk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0MywxMCBAQCBib29sIGlzT25BY2Nl
c3NDb250cm9sU2ltcGxlUmVxdWVzdE1ldGhvCiAKIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1w
bGVSZXF1ZXN0SGVhZGVyV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImFjY2VwdCIpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJhY2NlcHQtbGFuZ3VhZ2UiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAiY29udGVudC1sYW5ndWFnZSIpKQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAiYWNjZXB0IikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
ImFjY2VwdC1sYW5ndWFnZSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJj
b250ZW50LWxhbmd1YWdlIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIm9y
aWdpbiIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFByZWZsaWdodCBpcyByZXF1
aXJlZCBmb3IgTUlNRSB0eXBlcyB0aGF0IGNhbiBub3QgYmUgc2VudCB2aWEgZm9ybSBzdWJtaXNz
aW9uLgpAQCAtOTMsNiArOTYsNDIgQEAgYm9vbCBpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVh
ZGVyV2hpdAogICAgIHJldHVybiBhbGxvd2VkQ3Jvc3NPcmlnaW5SZXNwb25zZUhlYWRlcnMtPmNv
bnRhaW5zKG5hbWUpOwogfQogCit2b2lkIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBi
b29sIGFsbG93Q3JlZGVudGlhbHMpCit7CisgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygp
OworICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKGFsbG93Q3JlZGVudGlhbHMpOworICAgIHJl
cXVlc3Quc2V0SFRUUE9yaWdpbihzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7Cit9CisKK1Jl
c291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Ym9vbCBhbGxvd0NyZWRlbnRpYWxzKQoreworICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRS
ZXF1ZXN0KHJlcXVlc3QudXJsKCkpOworICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9s
KHByZWZsaWdodFJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luLCBhbGxvd0NyZWRlbnRpYWxzKTsKKyAg
ICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBNZXRob2QoIk9QVElPTlMiKTsKKyAgICBwcmVmbGln
aHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRo
b2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CisgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlv
cml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOworCisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVx
dWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOworCisgICAgaWYg
KHJlcXVlc3RIZWFkZXJGaWVsZHMuc2l6ZSgpID4gMCkgeworICAgICAgICBWZWN0b3I8VUNoYXI+
IGhlYWRlckJ1ZmZlcjsKKyAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSByZXF1ZXN0SGVhZGVyRmllbGRzLmJlZ2luKCk7CisgICAgICAgIGFwcGVuZChoZWFkZXJCdWZm
ZXIsIGl0LT5maXJzdCk7CisgICAgICAgICsraXQ7CisKKyAgICAgICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlckZpZWxkcy5lbmQoKTsKKyAgICAgICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVu
ZCgnLCcpOworICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgYXBwZW5kKGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKKyAgICAgICAgfQorCisgICAgICAg
IHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1SZXF1
ZXN0LUhlYWRlcnMiLCBTdHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOworICAgIH0KKworICAg
IHJldHVybiBwcmVmbGlnaHRSZXF1ZXN0OworfQorCiBib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBpbmNsdWRlQ3JlZGVu
dGlhbHMsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU3RyaW5nJiBlcnJvckRlc2Ny
aXB0aW9uKQogewogICAgIC8vIEEgd2lsZGNhcmQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu
IGNhbiBub3QgYmUgdXNlZCBpZiBjcmVkZW50aWFscyBhcmUgdG8gYmUgc2VudCwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgJKHJl
dmlzaW9uIDg2OTY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsMjQgQEAKICNpZm5kZWYgQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sX2gKICNkZWZpbmUgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
X2gKIAorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci0g
ICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLSAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLQot
ICAgIGJvb2wgaXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKLSAgICBib29sIGlzT25BY2Nlc3NDb250cm9s
U2ltcGxlUmVxdWVzdE1ldGhvZFdoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGlz
T25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdEhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xS
ZXNwb25zZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKK2NsYXNzIEhUVFBIZWFkZXJN
YXA7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2Jv
b2wgaXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1
ZXN0TWV0aG9kV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYpOworYm9vbCBpc09uQWNjZXNzQ29udHJv
bFNpbXBsZVJlcXVlc3RIZWFkZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKK2Jvb2wgaXNPbkFjY2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRl
bGlzdChjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU2VjdXJp
dHlPcmlnaW4qLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pOwordm9pZCB1cGRhdGVSZXF1ZXN0
Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiosIGJvb2wg
YWxsb3dDcmVkZW50aWFscyk7CitSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlPcmlnaW4qLCBi
b29sIGFsbG93Q3JlZGVudGlhbHMpOworCitib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFNlY3VyaXR5
T3JpZ2luKiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gODY5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksOCAr
ODksNyBAQCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkCiAgICAgQVNT
RVJUKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gVXNlQWNjZXNzQ29udHJv
bCk7CiAKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBjcm9zc09yaWdpblJlcXVlc3QgPSBh
ZG9wdFB0cihuZXcgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsKLSAgICBjcm9zc09yaWdpblJl
cXVlc3QtPnJlbW92ZUNyZWRlbnRpYWxzKCk7Ci0gICAgY3Jvc3NPcmlnaW5SZXF1ZXN0LT5zZXRB
bGxvd0Nvb2tpZXMobV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpOworICAgIHVwZGF0ZVJlcXVl
c3RGb3JBY2Nlc3NDb250cm9sKCpjcm9zc09yaWdpblJlcXVlc3QsIG1fZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKTsKIAogICAgIGlmICghbV9v
cHRpb25zLmZvcmNlUHJlZmxpZ2h0ICYmIGlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0
KGNyb3NzT3JpZ2luUmVxdWVzdC0+aHR0cE1ldGhvZCgpLCBjcm9zc09yaWdpblJlcXVlc3QtPmh0
dHBIZWFkZXJGaWVsZHMoKSkpCiAgICAgICAgIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3QoKmNyb3NzT3JpZ2luUmVxdWVzdCk7CkBAIC0xMDgsNDggKzEwNywyMSBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsCiB7CiAgICAgQVNTRVJUKGlzU2ltcGxl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QuaHR0cE1ldGhvZCgpLCByZXF1ZXN0Lmh0
dHBIZWFkZXJGaWVsZHMoKSkpOwogCi0gICAgLy8gQ3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIGFyZSBv
bmx5IGRlZmluZWQgZm9yIEhUVFAuIFdlIHdvdWxkIGNhdGNoIHRoaXMgd2hlbiBjaGVja2luZyBy
ZXNwb25zZSBoZWFkZXJzIGxhdGVyLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNlbmQgYSBy
ZXF1ZXN0IHRoYXQncyBndWFyYW50ZWVkIHRvIGJlIGRlbmllZC4KKyAgICAvLyBDcm9zcy1vcmln
aW4gcmVxdWVzdHMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgSFRUUC4gV2Ugd291bGQgY2F0Y2ggdGhp
cworICAgIC8vIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2UgaGVhZGVycyBsYXRlciwgYnV0IHRoZXJl
IGlzIG5vIHJlYXNvbiB0byBzZW5kIGEKKyAgICAvLyByZXF1ZXN0IHRoYXQncyBndWFyYW50ZWVk
IHRvIGJlIGRlbmllZC4KKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgYWxsb3dpbmcgc2ltcGxlIENP
UlMgcmVxdWVzdHMgdG8gbm9uLUhUVFAgVVJMcy4KICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJv
dG9jb2xJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCksICJDcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVFRQLiIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBw
YXNzZWQgcmVxdWVzdCBzbyB0aGF0IHdlIGNhbiBtb2RpZnkgc29tZSBkZXRhaWxzLgotICAgIFJl
c291cmNlUmVxdWVzdCBjcm9zc09yaWdpblJlcXVlc3QocmVxdWVzdCk7Ci0gICAgY3Jvc3NPcmln
aW5SZXF1ZXN0LnNldEhUVFBPcmlnaW4obV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSk7Ci0KLSAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdpblJlcXVlc3QsIERvU2VjdXJp
dHlDaGVjayk7CisgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0eUNoZWNrKTsKIH0K
IAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3RXaXRoUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKLSAgICBw
cmVmbGlnaHRSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7Ci0gICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQT3JpZ2luKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkp
OwotICAgIHByZWZsaWdodFJlcXVlc3Quc2V0QWxsb3dDb29raWVzKG1fb3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzKTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBNZXRob2QoIk9QVElPTlMi
KTsKLSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRy
b2wtUmVxdWVzdC1NZXRob2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0KLSAgICBjb25zdCBI
VFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVyRmllbGRzID0gcmVxdWVzdC5odHRwSGVhZGVyRmll
bGRzKCk7Ci0KLSAgICBpZiAocmVxdWVzdEhlYWRlckZpZWxkcy5zaXplKCkgPiAwKSB7Ci0gICAg
ICAgIFZlY3RvcjxVQ2hhcj4gaGVhZGVyQnVmZmVyOwotICAgICAgICBIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJGaWVsZHMuYmVnaW4oKTsKLSAgICAgICAg
YXBwZW5kKGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKLSAgICAgICAgKytpdDsKLQotICAgICAg
ICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVyRmllbGRz
LmVuZCgpOwotICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBo
ZWFkZXJCdWZmZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5k
KCcgJyk7Ci0gICAgICAgICAgICBhcHBlbmQoaGVhZGVyQnVmZmVyLCBpdC0+Zmlyc3QpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkFj
Y2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIFN0cmluZzo6YWRvcHQoaGVhZGVyQnVmZmVy
KSk7Ci0gICAgfQotCi0gICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0LnBy
aW9yaXR5KCkpOwotCisgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBtX2RvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7CiAgICAgbG9hZFJlcXVl
c3QocHJlZmxpZ2h0UmVxdWVzdCwgRG9TZWN1cml0eUNoZWNrKTsKIH0KIAo=
</data>
<flag name="review"
          id="87548"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>