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/ddcb8bce-7858-4246-9494-e8426f98ccb4n%40chromium.org.