<?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>171396</bug_id>
          
          <creation_ts>2017-04-27 14:50:13 -0700</creation_ts>
          <short_desc>Add WebCore::protocolIsJavaScript(StringView)</short_desc>
          <delta_ts>2017-05-01 09:32:46 -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>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>170925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302310</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-04-27 14:50:13 -0700</bug_when>
    <thetext>As suggested by Sam Weinig in bug 170925, comment 2, we should add an overload of WebCore::protocolIsJavaScript() that takes a StringView to avoid the need to perform a type conversion from StringView to String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302322</commentid>
    <comment_count>1</comment_count>
      <attachid>308455</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-04-27 14:58:11 -0700</bug_when>
    <thetext>Created attachment 308455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302789</commentid>
    <comment_count>2</comment_count>
      <attachid>308455</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-28 14:28:41 -0700</bug_when>
    <thetext>Comment on attachment 308455
Patch

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

r=me
I think we should get rid of all instances of protocolIs that take Strings instead of URLs.  They&apos;re probably a marginal performance benefit, but we should really parse URLs rather than maintain a separate code path that looks enough like the URLParser.

&gt; Source/WebCore/platform/URL.h:315
&gt; +bool protocolIsJavaScript(StringView url);

Did you want to use this somewhere?  This patch only changes URL.h and URL.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302803</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-04-28 14:45:12 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; [...]
&gt; I think we should get rid of all instances of protocolIs that take Strings
&gt; instead of URLs.  They&apos;re probably a marginal performance benefit, but we
&gt; should really parse URLs rather than maintain a separate code path that
&gt; looks enough like the URLParser.
&gt; 

We should investigate this. We should do this in the separate bug. 

&gt; &gt; Source/WebCore/platform/URL.h:315
&gt; &gt; +bool protocolIsJavaScript(StringView url);
&gt; 
&gt; Did you want to use this somewhere?  This patch only changes URL.h and
&gt; URL.cpp.

As I mentioned in the ChangeLog entry, I plan to use this function in the patch for bug #170925.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302804</commentid>
    <comment_count>4</comment_count>
      <attachid>308455</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-04-28 14:45:47 -0700</bug_when>
    <thetext>Comment on attachment 308455
Patch

Clearing flags on attachment: 308455

Committed r215949: &lt;http://trac.webkit.org/changeset/215949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302805</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-04-28 14:45:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303246</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-05-01 09:32:46 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; I think we should get rid of all instances of protocolIs that take Strings
&gt; instead of URLs. They&apos;re probably a marginal performance benefit, but we
&gt; should really parse URLs rather than maintain a separate code path that
&gt; looks enough like the URLParser.

I am not sure I agree.

If the performance benefit is tiny, then that’s OK.

Parsing an entire URL to do a properly-case-insensitive prefix check seems like massive overkill to me, so we should be sure a performance benefit is not there before dropping. I think there is at *least* an order of magnitude difference in the costs of the two operations.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308455</attachid>
            <date>2017-04-27 14:58:11 -0700</date>
            <delta_ts>2017-04-28 14:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171396-20170427145811.patch</filename>
            <type>text/plain</type>
            <size>4908</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZiYzZiMDk4NjZmMDRm
ZWM0OTBkZmI5MjNlYzg2NTQ0NzNmZmEzYy4uZTM0NDU2NTVmNTI1Y2MzYmUzNWYxNGFkNzE2YTlj
Y2E3ZDY3YzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE3LTA0LTI3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViQ29yZTo6cHJv
dG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBvdmVybG9hZCBvZiBXZWJDb3JlOjpwcm90b2Nv
bElzSmF2YVNjcmlwdCgpIHRoYXQgdGFrZXMgYSBTdHJpbmdWaWV3IHRvCisgICAgICAgIGF2b2lk
IHRoZSBuZWVkIGZvciBhIGNhbGxlciB0byBhbGxvY2F0ZSBhIG5ldyBTdHJpbmcgb2JqZWN0IHdo
ZW4gY29udmVydGluZworICAgICAgICBmcm9tIGEgU3RyaW5nVmlldyB0byBhIFN0cmluZy4gV2Ug
YXJlIG5vdCB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHkgYXQgdGhlIG1vbWVudCwKKyAgICAgICAg
YnV0IHdlIHdpbGwgaW4gdGhlIHBhdGNoIGZvciA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDkyNT4uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBoYXMgY2hh
bmdlZC4gU28sIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6IFJl
bW92ZSBhbiBvdXRkYXRlZCBjb21tZW50IGFib3V0IHByb3RvY29sSXMoU3RyaW5nVmlldywgY29u
c3QgY2hhciopLgorICAgICAgICBUaGlzIG92ZXJsb2FkIHdhcyByZW1vdmVkIGluIHIyMTI1MDgu
CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbElzSW50ZXJuYWwpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnByb3RvY29sSXMpOiBJbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBXZWJDb3JlOjpw
cm90b2NvbElzSW50ZXJuYWwoKS4KKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cHJvdG9jb2xJcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHJvdG9jb2xJc0phdmFTY3JpcHQpOiBBZGRlZDsg
b3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFN0cmluZ1ZpZXcuCisgICAgICAgIChXZWJDb3JlOjptaW1l
VHlwZUZyb21EYXRhVVJMKTogTW9kaWZpZWQgdG8gdXNlIFdlYkNvcmU6OnByb3RvY29sSXNJbnRl
cm5hbCgpLgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5oOgorCiAyMDE3LTA0LTI3ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmZvcm1pbmcgZGF0
YSBpbnRlcmFjdGlvbiB3aXRoIHBsYWluIHRleHQgaW50byBhIGNvbnRlbnRlZGl0YWJsZSBkb2Vz
IG5vdCBpbnNlcnQgYW55IGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IGIyNjll
MGE5ZTlmMzVkZGMzMTc1OGMzZTY5OTg5NWQwYzliNDI5NjMuLmE0YmRlZjlkNjA0ODY2NDFkMGY3
MWVlMzNiY2VkMTdlODkyODkwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtMzQxLDEx
ICszNDEsNiBAQCBzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNo
YXIqIGRlc3QpCiAgICAgfQogfQogCi1pbmxpbmUgYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIHJldHVybiBXZWJD
b3JlOjpwcm90b2NvbElzKHN0cmluZywgcHJvdG9jb2wpOwotfQotCiB2b2lkIFVSTDo6aW52YWxp
ZGF0ZSgpCiB7CiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CkBAIC0xMDcwLDE5ICsxMDY1LDE5IEBA
IHZvaWQgVVJMOjpjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QK
ICAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwogfQogCi0vLyBGSVhNRTog
V2h5IGlzIHRoaXMgZGlmZmVyZW50IHRoYW4gcHJvdG9jb2xJcyhTdHJpbmdWaWV3LCBjb25zdCBj
aGFyKik/Ci1ib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHBy
b3RvY29sKQordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+Citib29sIHByb3RvY29sSXNJ
bnRlcm5hbChjb25zdCBTdHJpbmdDbGFzcyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKIHsK
ICAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2Jq
ZWN0LgogICAgIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KHByb3RvY29sKSwgc3RybGVuKHByb3RvY29sKSkpOwogICAgIGJvb2wg
aXNMZWFkaW5nID0gdHJ1ZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBqID0gMDsgdXJsW2ld
OyArK2kpIHsKLSAgICAgICAgLy8gc2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wg
Y2hhcmFjdGVycy4KKyAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRy
b2wgY2hhcmFjdGVycy4KICAgICAgICAgaWYgKGlzTGVhZGluZyAmJiBzaG91bGRUcmltRnJvbVVS
TCh1cmxbaV0pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlzTGVhZGluZyA9IGZh
bHNlOwogCi0gICAgICAgIC8vIHNraXAgYW55IHRhYnMgYW5kIG5ld2xpbmVzLgorICAgICAgICAv
LyBTa2lwIGFueSB0YWJzIGFuZCBuZXdsaW5lcy4KICAgICAgICAgaWYgKGlzVGFiTmV3bGluZSh1
cmxbaV0pKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwOTMsMTAgKzEwODgsMjAgQEAg
Ym9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
IAogICAgICAgICArK2o7CiAgICAgfQotCisgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQor
eworICAgIHJldHVybiBwcm90b2NvbElzSW50ZXJuYWwodXJsLCBwcm90b2NvbCk7Cit9CisKK2lu
bGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hh
ciogcHJvdG9jb2wpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByb3RvY29sSXNJbnRlcm5hbChz
dHJpbmcsIHByb3RvY29sKTsKK30KKwogYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKIHsKICAgICAvLyBSRkMzOTg2OiBBTFBIQSAqKCBBTFBIQSAvIERJR0lUIC8g
IisiIC8gIi0iIC8gIi4iICkKQEAgLTExNDEsNyArMTE0NiwxMiBAQCBib29sIFVSTDo6aXNMb2Nh
bEZpbGUoKSBjb25zdAogCiBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYg
dXJsKQogewotICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsKKyAgICBy
ZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKK30KKworYm9vbCBw
cm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9j
b2xJc0ludGVybmFsKHVybCwgImphdmFzY3JpcHQiKTsKIH0KIAogYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTI3Miw3ICsxMjgyLDcgQEAgYm9vbCBw
b3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIAogU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNTRVJUKHByb3RvY29sSXModXJsLCAiZGF0YSIp
KTsKKyAgICBBU1NFUlQocHJvdG9jb2xJc0ludGVybmFsKHVybCwgImRhdGEiKSk7CiAKICAgICAv
LyBGSVhNRTogV2hhdCdzIHRoZSByaWdodCBiZWhhdmlvciB3aGVuIHRoZSBVUkwgaGFzIGEgY29t
bWEgZmlyc3QsIGJ1dCBhIHNlbWljb2xvbiBsYXRlcj8KICAgICAvLyBDdXJyZW50bHkgdGhpcyBj
b2RlIHdpbGwgYnJlYWsgYXQgdGhlIHNlbWljb2xvbiBpbiB0aGF0IGNhc2UuIE5vdCBzdXJlIHRo
YXQncyBjb3JyZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCA2ZTYxNjE2MDgyNTY0OGZlNjc3
ZWRiMTJiNmFmMjU5ZTY5MWZmYzdiLi44MWIzMDkzM2M2ZjEzZWUwNTFkZjY1Y2I4MDE5YzY1NTE3
YzVlMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMzEyLDYgKzMxMiw3IEBAIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IFVSTCYgYmxhbmtVUkwoKTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXRUJDT1JF
X0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKK2Jv
b2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOwogV0VCQ09SRV9FWFBPUlQg
Ym9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKIAogc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3Rv
Y29sKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>