That's great! Please let us know when data starts coming in :) On Thursday, April 17, 2025 at 5:53:15 AM UTC+2 Yoshisato Yanagisawa wrote:
> 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/3e999171-4fbe-4feb-bbc5-596038eca769n%40chromium.org.