FYI, but the metric CL to count SW-controlled resource fetch from blob URL
SharedWorker has been merged.
https://chromium-review.googlesource.com/c/chromium/src/+/6458031


2025年4月15日(火) 16:50 Yoshisato Yanagisawa <yyanagis...@google.com>:

> I should say that one of the proposed metrics is too cumbersome to plumb,
> and not implemented yet.  However, to replay the LGTM, I prioritize its
> implementation.
>
> 2025年4月15日(火) 3:08 Alex Russell <slightly...@chromium.org>:
>
>> Assuming these proposed metrics land in time to ship, LGTM1
>>
>> On Wednesday, March 12, 2025 at 8:12:47 AM UTC-7 Mike Taylor wrote:
>>
>>> These proposed metrics sound reasonable to us, so long as they capture
>>> all cases where the behavior is changing. But we defer to you and your team
>>> as the experts.
>>> On 3/11/25 3:08 AM, 'Yoshisato Yanagisawa' via blink-dev wrote:
>>>
>>> The UMA and use count is recorded in the following code:
>>>
>>> https://source.chromium.org/chromium/chromium/src/+/main:content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc;l=132;drc=a5bdf0106da2489011a9846f280f29872258a8dd
>>>
>>> The usecount is set if the request URL is blob, and the navigation
>>> handle has the service worker client and the client has a controller.  As
>>> you can see, we record UMA just before the usecount, which records the
>>> number of the blob URL and non-blob URL cases.  Since we can see non
>>> negligible IsBlob true cases, I assumed that the usecount is broken.  Note
>>> that it just says that SharedWorker is created under a page controlled by a
>>> ServiceWorker.  We are not sure if the change brings a visible difference
>>> to the SharedWorker.
>>>
>>> Considering what I have mentioned before, I should have added the
>>> metrics like:
>>>
>>>    - clients.matchAll() or match() look up the SharedWorker where the
>>>    SharedWorker script is a blob URL.
>>>    - SharedWorker fetches other resources while the SharedWorker script
>>>    is a blob URL.
>>>
>>> They should be the case affected by this change.  Is there anything else
>>> I missed?
>>>
>>> 2025年3月11日(火) 4:38 Chris Harrelson <chris...@chromium.org>:
>>>
>>>> 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/CAPNB-6WLWGs7NLckDw5v7XMy1WX6BefKunvNJQJ0wskrGFs0iQ%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6WLWGs7NLckDw5v7XMy1WX6BefKunvNJQJ0wskrGFs0iQ%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-6X-3yXjfn-MLWFXPrze-R4qowfo_%3DAZqpcckJkyH-W55A%40mail.gmail.com.

Reply via email to