Were you able to manually
verify the SharedWorkerScriptUnderServiceWorkerControlIsBlob use counter
hits with a test page? If so, I suppose it's possible no one is using this
combination of features? Do you know of any site at all that does so?

On Wed, Mar 5, 2025 at 5:32 PM 'Yoshisato Yanagisawa' via blink-dev <
blink-dev@chromium.org> wrote:

> Sorry for not working on this for a long time.
> Considering what I am seeing with other statistics, I am assuming the use
> count is wrong.
> Last Dec, I started to do analysis on
> https://chromestatus.com/metrics/feature/timeline/popularity/5, however
> it is really cumbersome to find a SharedWorker script in obfuscated
> JavaScript and the analysis did not go well.
> As far as I understand, SharedWorker behavior change may happen:
> 1. if SharedWorker `fetch()`, and the request is intercepted by the
> ServiceWorker.
> 2. or if the ServiceWorker tries to look up the SharedWorker as its
> client, and postMessage().
>
> I did not follow the 1 case, but as far as I checked 50 sites from the
> beginning listed with
> https://chromestatus.com/metrics/feature/timeline/popularity/5, I could
> not find the case like 2.
> Therefore, I assume the risk is quite low.
>
> If the risk matters, I can also do the deprecation study.
>
>
> 2025年3月5日(水) 23:14 Daniel Bratell <bratel...@gmail.com>:
>
>> I assume it's this use counter:
>> https://chromestatus.com/metrics/feature/timeline/popularity/5203
>> (SharedWorkerScriptUnderServiceWorkerControlIsBlob). It doesn't seem to
>> have picked up any usage, which is either good or bad...
>>
>> yyanagisawa, do you know which it is?
>>
>> /Daniel
>> On 2024-11-26 10:00, Domenic Denicola wrote:
>>
>>
>>
>> On Tue, Nov 26, 2024 at 4:20 PM Yoshisato Yanagisawa <
>> yyanagis...@google.com> wrote:
>>
>>> Thanks for the response,
>>> Let me reply inline.
>>>
>>> 2024年11月19日(火) 15:56 Domenic Denicola <dome...@chromium.org>:
>>>
>>>>
>>>>
>>>> On Tue, Nov 19, 2024 at 2:15 PM Yoshisato Yanagisawa <
>>>> yyanagis...@google.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> 2024年11月18日(月) 17:02 Domenic Denicola <dome...@chromium.org>:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Friday, November 15, 2024 at 9:14:09 AM UTC+9 Chromestatus wrote:
>>>>>>
>>>>>> Contact emails yyanagis...@google.com
>>>>>>
>>>>>> Explainer None
>>>>>>
>>>>>> Specification https://w3c.github.io/ServiceWorker/#control-and-
>>>>>> use-worker-client
>>>>>>
>>>>>> Summary
>>>>>>
>>>>>> According to https://w3c.github.io/ServiceWorker/#control-and-
>>>>>> use-worker-client, workers should inherit controllers for the blob
>>>>>> URL. However, existing code allows only dedicated workers to inherit the
>>>>>> controller, and shared workers do not inherit the controller. This is the
>>>>>> fix to make Chromium behavior adjust to the specification. An enterprise
>>>>>> policy SharedWorkerBlobURLFixEnabled is available to control this 
>>>>>> feature.
>>>>>>
>>>>>>
>>>>>> Blink component Blink>Workers
>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EWorkers>
>>>>>>
>>>>>> TAG review None
>>>>>>
>>>>>> TAG review status Not applicable
>>>>>>
>>>>>> Risks
>>>>>>
>>>>>>
>>>>>> Interoperability and Compatibility
>>>>>>
>>>>>> This is a change to make the Chromium behavior aligned with the
>>>>>> specification, there should not be an interoperability issue. However,
>>>>>> there is a compatibility issue from the past Chromium. If a blob URL is
>>>>>> used for a SharedWorker script and a controller for the URL is mattered,
>>>>>> there is a behavior change because this change makes a controller
>>>>>> inherited. An enterprise policy was added to allow enterprise customers 
>>>>>> to
>>>>>> preserve the past Chromium behavior.
>>>>>>
>>>>>> Do you have any metrics on how many page loads this change might
>>>>>> impact? An enterprise policy seems like a good idea, but if the number of
>>>>>> page loads is high, we might want to consider a deprecation trial or
>>>>>> similar mechanism.
>>>>>>
>>>>>>
>>>>>
>>>>> Yes.  The I2S was proposed as the web facing change PSA (
>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/hClP93e4MLk/m/SGXfxOZfAQAJ)
>>>>> before, and I gave up to go with the PSA due to the amount of the case 
>>>>> that
>>>>> the blob URL is used as a SharedWorker script URL is too large.
>>>>> I revisited the metrics and saw 10-40% SharedWorker script URLs are
>>>>> blob URL depending on platform.
>>>>> Is it better to go with a deprecation trial?
>>>>>
>>>>
>>>> 10-40% is very high, so yes, we need to consider ways to find an upper
>>>> limit on the danger.
>>>>
>>>> My guess is that most pages will not have their behavior changed,
>>>> because, for example, their service worker JavaScript ignores non-https:
>>>> fetches. The fact that these pages probably work fine in Safari is also
>>>> helpful evidence.
>>>>
>>>> I would suggest two strategies:
>>>>
>>>>    - Use UKM or HTTP Archive to examine the top-N sites that trigger
>>>>    this UseCounter (maybe N = 20 or so is good). Confirm via code 
>>>> inspection
>>>>    or running with the flag flipped or similar techniques that there is no
>>>>    compat impact. Publish this data for the API owners to see.
>>>>
>>>>
>>> Sure.
>>> https://chromium-review.googlesource.com/c/chromium/src/+/6049677 to
>>> add UKM and UseCounter.
>>> Let's see the statistics after it is shipped.
>>>
>>
>> Oh, my suggestion was to get data sooner, by using the existing use
>> counter with HTTP archive analysis
>> <https://www.chromium.org/blink/platform-predictability/compat-tools/>.
>> Then you don't have to wait for any code to roll out to stable.
>>
>>>
>>>>    - Also do a deprecation trial to allow opting in to the old
>>>>    behavior. The UKM/HTTP archive analysis can increase our confidence that
>>>>    the breakage is low (like, if 0 or 1 out of 20 pages are broken, then 
>>>> the
>>>>    breakage is probably <1%). But it cannot give us enough precision to be
>>>>    confident, so having the escape hatch of the deprecation trial seems
>>>>    important.
>>>>
>>>> Just let me confirm if my understanding is correct.
>>> Does the deprecation trial mean the origin trial to preserve the legacy
>>> behavior?
>>> We enable the flag by default while starting the origin trial.  The site
>>> with the origin trial token can preserve the legacy behavior, right?
>>>
>>
>> Yes, that's the idea! See this link
>> <https://www.chromium.org/blink/launching-features/#deprecation-trial>.
>> I guess the wording there is a bit confusing since you aren't "removing" a
>> feature, but instead changing how an existing feature works. I think it
>> should not matter much though. It is still closer to a deprecation trial
>> than an origin trial. For example, you do not need to write a specification
>> for the behavior that the trial enables, like you would with an origin
>> trial.
>>
>>
>>>
>>>
>>>> I'm sorry that this adds so much process for what is basically a bug
>>>> fix. It is possible there would be other ways to avoid it, for example by
>>>> creating a more precise use counter that detects "changed behavior". (But,
>>>> it is hard to imagine how to write the code for such a use counter... maybe
>>>> something about comparing response bytes??) However my guess is that the
>>>> time and effort of writing that precise use counter is probably more than
>>>> the effort in setting up a deprecation trial. So my advice is to pursue the
>>>> above approach.
>>>>
>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> *Gecko*: No signal
>>>>>>
>>>>>>
>>>>>> Can you ask Gecko for signals? I am especially curious why they
>>>>>> haven't updated to match the specification.
>>>>>>
>>>>>>
>>>>>
>>>>> Sure.  I have filed the mozilla's standard position for it.
>>>>> https://github.com/mozilla/standards-positions/issues/1113
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> *WebKit*: Shipped/Shipping
>>>>>>
>>>>>> *Web developers*: No signals
>>>>>>
>>>>>> *Other signals*:
>>>>>>
>>>>>> Ergonomics
>>>>>>
>>>>>> n/a
>>>>>>
>>>>>>
>>>>>> Security
>>>>>>
>>>>>> Since this is adjusting Chromium behavior to specification, there
>>>>>> should not be a security risk from a specification perspective. From the
>>>>>> implementation perspective, this change simply inherits existing
>>>>>> controller. There should not be any additional security risks with this
>>>>>> change.
>>>>>>
>>>>>>
>>>>>> 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?
>>>>>>
>>>>>> Since SharedWorker is not supported on Android yet, there is no risk
>>>>>> on Android WebView.
>>>>>>
>>>>>>
>>>>>> Debuggability
>>>>>>
>>>>>> n/a
>>>>>>
>>>>>>
>>>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? No
>>>>>>
>>>>>> Since SharedWorker is not supported in Android yet, the feature also
>>>>>> does not affect to Android.
>>>>>>
>>>>>>
>>>>>> 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/service-workers/service-
>>>>>> worker/local-url-inherit-controller.https.html Same-origin blob URL
>>>>>> sharedworker should inherit service worker controller. Same-origin blob 
>>>>>> URL
>>>>>> sharedworker should intercept fetch(). The tests ensure a
>>>>>> ServiceWorkerController is inherited. Due to crbug.com/40364838,
>>>>>> Chromium does not pass the former test.
>>>>>>
>>>>>>
>>>>>> Flag name on about://flags None
>>>>>>
>>>>>> Finch feature name SharedWorkerBlobURLFix
>>>>>>
>>>>>> Requires code in //chrome? False
>>>>>>
>>>>>> Tracking bug https://crbug.com/324939068
>>>>>>
>>>>>> Estimated milestones Shipping on desktop 133
>>>>>>
>>>>>> 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/5137897664806912?gate=5147843735322624
>>>>>>
>>>>>> This intent message was generated by Chrome Platform Status
>>>>>> <https://chromestatus.com>.
>>>>>>
>>>>>> --
>> 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/CAM0wra9fn%2B7i8%3DOh72j43C7nVeG4%3D850zaqZShgiaAhhTVBCpA%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra9fn%2B7i8%3DOh72j43C7nVeG4%3D850zaqZShgiaAhhTVBCpA%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 visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6XY_%3DTj%3DWyi%3Dhh%3D-wny5beHqNAT7G_ObTR4eof-duXNdQ%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6XY_%3DTj%3DWyi%3Dhh%3D-wny5beHqNAT7G_ObTR4eof-duXNdQ%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 visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw889%3DMJw2zna%3D7nRo7NAZXgHL4n8%2ByufEXj4VX214tzOQ%40mail.gmail.com.

Reply via email to