<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add Link header support for preload."
   href="https://bugs.webkit.org/show_bug.cgi?id=165521#c21">Comment # 21</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Add Link header support for preload."
   href="https://bugs.webkit.org/show_bug.cgi?id=165521">bug 165521</a>
              from <span class="vcard"><a class="email" href="mailto:achristensen&#64;apple.com" title="Alex Christensen &lt;achristensen&#64;apple.com&gt;"> <span class="fn">Alex Christensen</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=165521#c17">comment #17</a>)
<span class="quote">&gt; &gt;&gt; Source/WebCore/loader/LinkHeader.cpp:122
&gt; &gt;&gt; +    ASSERT(position &lt;= end);
&gt; &gt; 
&gt; &gt; This assertion should be at every function that has a position and an end.
&gt; &gt; It seems like an iterator type would be better than raw pointers in this whole patch.  StringView.h has code point and code unit iterators.
&gt; 
&gt; Good point regarding the assertion. Added everywhere else.
&gt; 
&gt; Regarding switching to StringView's iterators I tried to convert the logic
&gt; to that, but it seems to be missing some concepts needed here (skipWhile,
&gt; skipExactly and/or getting an iterator for a position in the middle of a
&gt; StringView).
&gt; For now I kept it using pointers, but if we want to go the iterator route,
&gt; it'd require adding a new iterator type (e.g. ParserStringView) which will
&gt; include the required concepts. Let me know if you think this is the route we
&gt; should take and if so, where should such a class be located.</span >
Yeah, it's probably not worth adding another iterator type just for this.
<span class="quote">&gt; &gt;&gt; Source/WebCore/loader/LinkHeader.cpp:274
&gt; &gt;&gt; +    else if (name == LinkParameterAnchor)
&gt; &gt; 
&gt; &gt; It looks like a switch would be better here.
&gt; 
&gt; switched</span >
lol
<span class="quote">&gt; &gt;&gt; LayoutTests/http/tests/preload/resources/download_resources_from_header.php:2
&gt; &gt;&gt; +header(&quot;Link: &lt;../resources/dummy.js&gt;; rel=preload; as=script&quot;, false);
&gt; &gt; 
&gt; &gt; Can we put a complete absolute URL here?  We should add a test with a URL that looks like <a href="http://localhost:8000/preload/resources/something.html">http://localhost:8000/preload/resources/something.html</a> on a page with CSP that doesn't allow loading from localhost.  We should also add a test with an invalid URL like <a href="http://host:invalidport/">http://host:invalidport/</a> just to see what happens.  It's hard to make a URL fail to parse when only giving the path.  A fragment-only URL might also be interesting. Also a lowercase &quot;link&quot;, a missing colon, no &lt;&gt; or URL, &lt;&gt; but no characters inside it, and a missing space after the colon.  Also what about emojis, invalid surrogate pairs, and null characters in the middle of the URL?
&gt; 
&gt; Added tests for CSP blocked, invalid port, fragment-only, lower-case link,
&gt; missing colon, missing spaces, missing URL, etc.
&gt; (Invalid port passes the isPreloaded() test, but I'm guessing that it's
&gt; being blocked further down the stack)
&gt; 
&gt; I'm not sure how to add emojis, invalid surrogate pairs and null chars in
&gt; PHP... Any examples you can point me to?</span >
Now that I think about it, HTTP headers can only contain 8-bit values, so we can't have 16-bit characters in an HTTP header.

EWS failure looks unrelated.  I'll re-review this soon.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>