Hi Eli,

The implementation is not fully in line with the spec.
Though hosts are not percent encoded by the browser. The browser will
percent decode host strings. Thus 'test%22.com' is a valid host string.
If all the browsers are spec compliant when parsing the hosts. I believe
simply setting url.host and checking for errors will work. (This is not the
case now)

Jiacheng Guo

On Tue, Mar 14, 2023 at 3:05 PM Eli Grey <m...@eligrey.com> wrote:

> I've updated my isValidHost() util to support this change. Could someone
> please have another look and let me know if my implementation now aligns
> well with the spec?
>
>
>
> On Monday, March 13, 2023 at 6:26:18 PM UTC-7 dom...@chromium.org wrote:
>
>> On Mon, Mar 13, 2023 at 6:46 PM Philip Jägenstedt <foo...@chromium.org>
>> wrote:
>>
>>> To simplify and keep this moving, I've filed
>>> https://github.com/mozilla/standards-positions/issues/759 as an
>>> umbrella issue for anything URL in Interop 2023.
>>>
>>> My view is that we can't improve our risk assessment of this by much
>>> with metrics, because we can't distinguish between harmless and serious
>>> breakage. Instead what we should do is take some comfort in the fact that
>>> the behavior is already shipping in Safari, try to ship it and revert at
>>> the first sign of trouble to evaluate. In other words, I'll happily LGTM
>>> this, but I'll send this round of feedback first, in case Yoav disagrees
>>> with that.
>>>
>>> Some additional replies inline:
>>>
>>> On Mon, Mar 13, 2023 at 5:30 AM Yoav Weiss <yoav...@chromium.org> wrote:
>>>
>>>> Thanks for working on interop! :)
>>>>
>>>
>>> Indeed, I'm very grateful and happy to see this work!
>>>
>>> Can you please explain what would be the impact of this change and
>>>> provide examples of cases that are currently working and would stop working
>>>> after this change is landed?
>>>> Web developers are asking questions on this thread, and it'd be good to
>>>> have an explainer that answers such questions.
>>>>
>>>
>>> I've replied to Eli.
>>>
>>> More generally, since this is a change in the nitty gritty details, my
>>> concrete advice for web developers would be to test what Safari currently
>>> does and assume that's what Chrome is going to start doing. If one doesn't
>>> have access to Safari, then https://www.browserstack.com/screenshots
>>> can be used for one-off tests, as long as the test result appears on the
>>> page.
>>>
>>> The other difference to Safari that's easy to test for is when
>>> exceptions are thrown. `new URL('https://example|.com')` returns a URL
>>> escaped as "https://example%7C.com"; in Chrome, but throws TypeError in
>>> Safari.
>>>
>>
>> Developers can also use the whatwg-url Node.js package
>> <https://github.com/jsdom/whatwg-url>, including the live URL viewer
>> <https://jsdom.github.io/whatwg-url/>. It is kept 1:1 with the URL
>> Standard and so reflects the behavior that all browsers will be aiming
>> toward as part of Interop 2023 (and that Safari is already compliant with).
>> Examples:
>>
>>    - Parsing https://example|.com
>>    
>> <https://jsdom.github.io/whatwg-url/#url=aHR0cHM6Ly9leGFtcGxlfC5jb20=&base=YWJvdXQ6Ymxhbms=>
>>    - Testing Eli's isValidHost usage of the host setter
>>    <https://runkit.com/embed/lwn8l7w4yyj5>
>>
>>
>>
>>>
>>> Do we have use counters for content that would start throwing once this
>>>> change lands?
>>>>
>>>
>>> I'll let Jiacheng answer, but if the answer is no, I'm skeptical that
>>> adding use counters will meaningfully help us judge the risk of this.
>>> Breaking it down:
>>>
>>>    - Many invalid URLs already throw exceptions, which may be caught.
>>>    Knowing that new exceptions will be thrown in X% of page views will not
>>>    help know how often those are caught and the web app still behaves
>>>    correctly.
>>>    - Changes in serialization are akin to changing a return value. We
>>>    can't instrument the downstream effects of that and determine if the
>>>    difference led to a different outcome.
>>>
>>> Can you provide a link to the tests?
>>>>
>>>
>>>
>>> https://wpt.fyi/results/url?label=experimental&label=master&product=chrome&product=firefox&product=safari&aligned&view=interop&q=label%3Ainterop-2023-url
>>>
>>> There's no way to link to exactly the subtests that will be affected,
>>> but "Parsing: <http://example example.com> against <http://other.com/>"
>>> in url-constructor.any.html is one of them.
>>>
>>> Best regards,
>>> Philip
>>>
>>> --
>>>
>> You received this message because you are subscribed to the Google Groups
>>> "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to blink-dev+...@chromium.org.
>>>
>> To view this discussion on the web visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYdKrtMS10VJxvzKntoXMBOEaA1doTYqpQ1W4%2BX1q40-bg%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYdKrtMS10VJxvzKntoXMBOEaA1doTYqpQ1W4%2BX1q40-bg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJQw1Ny1_d6OPsvR6ua9v8CqgZN90T6EzW%2BeSA1hdMqpxjYSsw%40mail.gmail.com.

Reply via email to