An update, Mozilla has confirmed at 
https://github.com/web-platform-tests/interop/issues/855 that the apple.com 
issue no longer repro and they not aware of any other current or recent 
site breakages related to this. They have also 
closed https://bugzilla.mozilla.org/show_bug.cgi?id=1912873.

On Monday, February 24, 2025 at 1:03:59 PM UTC-8 Mike Taylor wrote:

> Thanks - it is indeed confusing to follow all the various points in this 
> thread (sorry if I made it more so).
> On 2/24/25 4:00 PM, 'Liang Zhao' via blink-dev wrote:
>
> There seems to be something that requires clarification. This feature only 
> tries to change behavior for CSP blocked worker. "new worker" could also be 
> blocked due to other reasons like cross origin, and we are not trying to 
> change behavior of that scenario. 
> Among the sites that were broken, only apple.com was due to CSP blocked 
> worker. Other sites were due to cross origin worker url.
> https://bugzilla.mozilla.org/show_bug.cgi?id=1471805 and related code 
> change (https://phabricator.services.mozilla.com/D188592) that is still 
> open is for the cross origin case. There was an attempt to also address CSP 
> blocked worker in the same change, but that has not happened. From the code 
> review comment, it seems that it is not easy for Mozilla to also handle CSP 
> case.
>
> Appreciate the advice on telemetry data collection, will collect a usage 
> count when "new worker" is blocked by CSP.
>
> On Monday, February 24, 2025 at 7:27:50 AM UTC-8 Mike Taylor wrote:
>
> Hey Liang,
>
> Thank you very much for chasing down some answers!
>
> The situation is still a little tricky to evaluate, perhaps because there 
> are conflicting statements across a number of Bugzilla bugs and GitHub 
> issues. 
>
> Here's a summary of my understanding:
>
> WebKit states concerns about webcompat (which I share, based on the number 
> of bug reports Firefox has seen): 
> https://github.com/web-platform-tests/interop/issues/855#issuecomment-2612231865
>
> Interop 2025 accepted the proposal, so presumably Firefox agrees (and you 
> already stated as much). But 
> https://bugzilla.mozilla.org/show_bug.cgi?id=1471805 (the patch for Gecko 
> to match Blink/WebKit) is still open with no updates pointing to Interop 
> 2025 or similar.
>
> On the breakage we're aware of:
>
> https://bugzilla.mozilla.org/show_bug.cgi?id=1912873 is still open (it 
> should probably be closed as incomplete because the site was updated to 
> remove the problematic video in question - unclear if Apple actually fixed 
> the CSP issue?)
>
> https://github.com/webcompat/web-bugs/issues/100874#issuecomment-1615265834 
> talks about chase.com breakage, due to an embedded Google Map expecting 
> the error. I tried to load that site to verify today, but it seems like it 
> no longer exists. There's also a different site called "exploretock.com" 
> which was broken in Firefox, maybe fixed now?
>
> If anyone from Mozilla is reading, it would be cool if someone went and 
> cleaned up a bunch of bugs so the situation was less confusing.
>
> (some comments below)
> On 2/21/25 1:29 PM, 'Liang Zhao' via blink-dev wrote:
>
> An update for the question on Mozilla coordination. Mozilla has not 
> changed their behavior and does not plan to do so. They actually filed an 
> interop issue at https://github.com/web-platform-tests/interop/issues/855, 
> which was discussed at interop 2025. My understanding of that discussion is 
> that Chrome and Safari should change the behavior to align with spec, and 
> revert to current behavior if we have to due to site compat. 
> There are actually other cases where Mozilla fire error event while Chrome 
> and Safari throw exception, like not same origin worker url. Most of the 
> cases in 
> https://github.com/web-platform-tests/wpt/issues/41745#issuecomment-2377512723
> , https://github.com/webcompat/web-bugs/issues/100874 and 
> https://bugzilla.mozilla.org/show_bug.cgi?id=1927467 are for those cases. 
> We are not trying to change behavior for those cases with this feature. The 
> support.apple.com issue is related to CSP blocked worker. The site has 
> been updated and doesn't have the issue any more.
>
> On Wednesday, January 22, 2025 at 1:20:52 AM UTC-8 Mike Taylor wrote:
>
> In 
> https://github.com/web-platform-tests/wpt/issues/41745#issuecomment-2377512723
>  
> - there's discussion of breakage on support.apple.com with this behavior, 
> and Firefox developers mentions moving their behavior to align with 
> Safari/Webkit given this breakage. The Bugzilla issue links to 
> https://github.com/webcompat/web-bugs/issues/100874 and 
> https://bugzilla.mozilla.org/show_bug.cgi?id=1927467. 
>
> Have you coordinated with Mozilla on this?
> On 1/21/25 7:50 PM, 'Liang Zhao' via blink-dev wrote:
>
>
>
> On Monday, January 20, 2025 at 4:48:38 AM UTC-8 Mike Taylor wrote:
>
> I'd still like to better understand the compat risk here - I suspect it's 
> low, but I would not be surprised if there is code attempting to handle the 
> difference between Chrome/Safari & Firefox with UA sniffing (which means it 
> may break after this change).
>
> Have you tried to look at any usage in the wild, to get a sense of how 
> sites are dealing with CSP blocking a worker today?
>
>  The expected way to handle CSP blocking is to update CSP policy to allow 
> the worker. Normally, a site’s own content security policy should not block 
> its own workers. If a worker is blocked, the worker would not run and part 
> of the site would be broken. The developer should update the site’s CSP 
> policy to allow the worker. DevTools console message would clearly state 
> that the worker is blocked by the site’s own CSP and CSP reporting feature 
> allows site to detect the blocking of workers in the wild. Whether a worker 
> runs should be more important to a site than the behavior when the worker 
> is blocked. If a site cares about the blocking, it is expected that the 
> site either updates its CSP to allow the worker, or removes the worker 
> related code if the worker should not run. This is the main reason of my 
> assessment of low compat risk. It is a behavior change when an error of a 
> site's configuration has already caused bigger issue to the site.
>
> I hear you, but if we change the behavior my concern is about the user's 
> experience. Waiting for devs to notice and fix the breakage is not ideal. 
>
> I thought about collecting telemetry data and decided not to. We could 
> collect counts of worker being blocked by CSP, but it would be hard to 
> collect data on how a site might handle the blocking, like whether a site 
> sniffs UA string and behaves differently, has a try-catch or has code to 
> handle error event later if we don’t throw exception in constructor. As it 
> is expected that it could happen that CSP blocks some workers, like during 
> testing of a site, a raw count of the blocking would not help much on 
> measuring the impact of this behavior change.
>
> Having some kind of telemetry would help here, even if imperfect. If we 
> know at least 3 sites were broken in Firefox for years (apple.com, 
> dining.chase.com, exploretock.com), it seems safe to assume there is more 
> we don't know about.
>
>
> Will add telemetry data collection to collect a usage count when "new 
> worker" is blocked by CSP.
>  
>
> On 1/17/25 7:27 PM, Liang Zhao (REDMOND) wrote:
>
> Got positive signal from Safari.
>
>  
>
> On Wednesday, January 15, 2025 at 5:25:48 PM UTC+1 Chris Harrelson wrote:
>
> Please also fill out the various reviews in your chromestatus entry 
> (privacy, security, enterprise, debuggability, testing). 
>
>  
>
>  
>
>  
>
> On Tue, Jan 14, 2025 at 2:43 PM 'Liang Zhao (REDMOND)' via blink-dev <
> blin...@chromium.org> wrote:
>
>  
>
>  
>
> *From:* Mike Taylor <mike...@chromium.org> 
> *Sent:* Tuesday, January 14, 2025 7:10 AM
> *To:* Liang Zhao (REDMOND) <liang...@microsoft.com>; blin...@chromium.org
> *Cc:* hiro...@chromium.org; mk...@chromium.org
> *Subject:* [EXTERNAL] Re: [blink-dev] Intent to Ship: Fire error event 
> instead of throwing for CSP blocked worker
>
>  
>
> You don't often get email from mike...@chromium.org. Learn why this is 
> important <https://aka.ms/LearnAboutSenderIdentification> 
>
> On 1/13/25 5:19 PM, 'Liang Zhao (REDMOND)' via blink-dev wrote:
>
> *Contact emails*
>
> lz...@microsoft.com
>
> *Explainer*
>
> None
>
>  
>
> I think an explainer (or even an inline text explaining the change, 
> providing an example, etc) would have significantly helped folks understand 
> what it is that you're trying to ship.
>
> Could you write something to that effect?
>
>  
>
> When the url is blocked by Content Security Policy, script code “new 
> Worker(url)” and “new SharedWorker(url)” currently throws exception. 
> According to spec, the CSP check is done as part of fetch which happens 
> asynchronously and the constructor should not throw. Instead an error event 
> should fire after the object is returned.
>
> This feature aligns Chromium behavior with spec.
>
>  
>
>  
>
> *Specification*
>
> https://fetch.spec.whatwg.org/#concept-main-fetch
>
> This points at a relatively long algorithm. Can you point out the specific 
> steps that are relevant here? 
>
>  
>
> Step 7 of the linked “main fetch” section. Updated the spec link in 
> chromestatus to https://www.w3.org/TR/CSP3/#fetch-integration, which is a 
> better place to understand that CSP check is part of fetch instead of 
> details of how fetch is done in the fetch spec.
>
>
>
> *Summary*
>
> When blocked by CSP, Chromium currently throws SecurityError from 
> constructor. Spec requires CSP to be checked as part of fetch and fires 
> error event asynchronously. This aims to make Chromium spec conformant, 
> which is not throwing during constructor and fires error event 
> asynchronously.
>
> Which constructor?
>
> The constructor of Worker and SharedWorker objects. Also updated the 
> chromestatus so that it is clear.
>
> An example demonstrating where developers need to catch those exceptions 
> now would be helpful IMO. 
>
>  
>
> Before the change if developer wants to handle the worker being blocked 
> failure, the code would be something like this:
>
>     try {
>
>       var worker = new Worker(url);
>
>       …
>
>     } catch (e) {
>
>      // error handling code
>
>     } 
>
> After the change, the code would be something like this:
>
>     var worker = new Worker(url);
>
>     worker.addEventListener('error', function(event) {
>
>         // error handling code
>
>         });
>
> …
>
>
>
> *Blink component*
>
> Blink>SecurityFeature>ContentSecurityPolicy 
> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESecurityFeature%3EContentSecurityPolicy%22>
>
> *TAG review*
>
> None
>
> *TAG review status*
>
> Not applicable
>
> *Risks*
>
>
>
> *Interoperability and Compatibility*
>
> Are you able to expand on the compatibility implications for this change, 
> i.e., do we know if Firefox has any site breakage as a result of their 
> behavior? What scenarios might surprise developers who are relying on 
> Chrome's current behavior, etc?
>
>  
>
> We are not aware of any site breakage for Firefox due to its behavior. If 
> a site has a worker that is blocked by CSP and has code after "new 
> Worker()", those code currently does not run in Chrome or Safari, but runs 
> in Firefox. After the change, those code would run in Chrome.
>
> Also, if sites are doing something as a result of catching a CSP failure 
> exception, that would stop working (unless they shift to start listening to 
> the relevant event), right?
>
>  
>
> That is correct. If a site has code that runs upon catching SecurityError 
> exception during new Worker()/SharedWorker(), those code would not run. 
> Instead. if the site has error event listener, that event listener will run.
>
>  
>
> Currently Firefox works as spec-ed while Safari works the same as Chrome. 
> With the wrong test code in WPT tests, Firefox is failing the tests: 
> https://wpt.fyi/results/content-security-policy/worker-src/dedicated-worker-src-child-fallback-blocked.sub.html?label=experimental&label=master&aligned
>  
> https://wpt.fyi/results/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub.html?label=experimental&label=master&aligned
>  
> After updating Chrome code and WPT tests, Firefox passes the tests while 
> Safari fails the tests. 
>
> Can you explain what you mean by wrong test code?
>
> The current WPT test code expects exception to throw, which is not what’s 
> required by the spec. The test code has a TODO comment states that the test 
> code is wrong with a link to https://crbug.com/663298,
>
>
>
> *Gecko*: Shipped/Shipping
>
> *WebKit*: No signal
>
> Have we asked for a signal from WebKit folks?
>
>  
>
> Filed an issue at https://github.com/WebKit/standards-positions/issues/451
> .
>
>  
>
> Positive signal from 
> https://github.com/WebKit/standards-positions/issues/451: “As such I 
> suggest we mark this as position: support one week from now.”
>
>
> *Web developers*: No signals
>
> *Other signals*: This changes the behavior the same as Firefox.
>
> *WebView application risks*
>
> *Does this intent deprecate or change behavior of existing APIs, such that 
> it has potentially high risk for Android WebView-based applications?*
>
>
>
> *Debuggability*
>
> When worker is blocked by CSP, there is DevTools message logged about the 
> blocking by CSP. This behavior is not changed.
>
>
>
> *Will this feature be supported on all six Blink platforms (Windows, Mac, 
> Linux, ChromeOS, Android, and Android WebView)?*
>
> Yes
>
> *Is this feature fully tested by web-platform-tests 
> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
>
> Yes
>
>
> https://wpt.fyi/results/content-security-policy/worker-src/dedicated-worker-src-child-fallback-blocked.sub.html?label=experimental&label=master&aligned
>  
> https://wpt.fyi/results/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub.html?label=experimental&label=master&aligned
>  
> Note that the test code currently has the wrong expectation and will be 
> updated as part of this feature work.
>
>
>
> *Flag name on about://flags*
>
> None
>
> *Finch feature name*
>
> None
>
> *Non-finch justification*
>
> This is a simple change of behavior for uncommon scenario where worker is 
> blocked by CSP, and the changed behavior is the same as Firefox and spec 
> aligned. It is unlikely that a site depends on the current behavior of 
> throwing exception for blocked worker.
>
> Can we back up "it is unlikely" with some data? Absent that, I would 
> strongly suggest we put this behind a flag.
>
> Changed the plan to put this new behavior behind 
> NoThrowForCSPBlockedWorker feature flag. Also updated the chromestatus.
>
>
>
> *Requires code in //chrome?*
>
> False
>
> *Tracking bug*
>
> https://issues.chromium.org/issues/41285169
>
> *Estimated milestones*
>
> Shipping on desktop
>
> 134
>
> DevTrial on desktop
>
> 134
>
> Shipping on Android
>
> 134
>
> DevTrial on Android
>
> 134
>
> Shipping on WebView
>
> 134
>
>
>
> *Anticipated spec changes*
>
> *Open questions about a feature may be a source of future web compat or 
> interop issues. Please list open issues (e.g. links to known github issues 
> in the project for the feature specification) whose resolution may 
> introduce web compat/interop risk (e.g., changing to naming or structure of 
> the API in a non-backward-compatible way).*
>
> None
>
> *Link to entry on the Chrome Platform Status*
>
> https://chromestatus.com/feature/5177205656911872?gate=5108732671033344
>
> -- 
> 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 visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CO1PR00MB2285E0FC0FEC6768415E9F979E1F2%40CO1PR00MB2285.namprd00.prod.outlook.com
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CO1PR00MB2285E0FC0FEC6768415E9F979E1F2%40CO1PR00MB2285.namprd00.prod.outlook.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+...@chromium.org.
>
> To view this discussion visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/BY1PR00MB2289751B22915D40E547832F9E182%40BY1PR00MB2289.namprd00.prod.outlook.com
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/BY1PR00MB2289751B22915D40E547832F9E182%40BY1PR00MB2289.namprd00.prod.outlook.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+...@chromium.org.
>
> To view this discussion visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e2cc3be3-3e77-4e9c-9ab0-e0325e3ef292n%40chromium.org
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e2cc3be3-3e77-4e9c-9ab0-e0325e3ef292n%40chromium.org?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+...@chromium.org.
>
> To view this discussion visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/909c58a5-94d2-4a26-9daf-efb9b72bf3efn%40chromium.org
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/909c58a5-94d2-4a26-9daf-efb9b72bf3efn%40chromium.org?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+...@chromium.org.
>
> To view this discussion visit 
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/15aa5f37-cb14-4acc-bc93-92bb17fb1c53n%40chromium.org
>  
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/15aa5f37-cb14-4acc-bc93-92bb17fb1c53n%40chromium.org?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 visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6acff529-0767-4f35-8cb4-6becb9701f9dn%40chromium.org.

Reply via email to