Contact emails [email protected]
Specification https://xhr.spec.whatwg.org/#interface-progressevent Summary ProgressEvent is available in service workers, allowing developers to construct progress events with lengthComputable, loaded, and total attributes. This aligns service workers with other worker contexts and the XMLHttpRequest Standard. Blink component Blink Web Feature ID xhr Motivation Blink exposes ProgressEvent in Window, DedicatedWorker, and SharedWorker contexts, but not in service workers. Exposing it in service workers closes this gap with the XMLHttpRequest Standard and allows code that constructs progress events to be reused across worker contexts. The change reuses the existing implementation without exposing XMLHttpRequest or adding automatic fetch progress events. Draft implementation: https://chromium-review.googlesource.com/c/chromium/src/+/8425503 Initial public proposal No information provided TAG review Not applicable. This change implements an existing standardized exposure requirement already supported by Gecko and WebKit, as documented below. No new API design is introduced. TAG review status Not applicable Goals for experimentation None Risks Interoperability and Compatibility This change aligns service worker exposure of ProgressEvent with the XMLHttpRequest Standard and reuses the existing implementation. Compatibility risk is expected to be low. Adding the global may change feature-detection results or interact with application-defined ProgressEvent polyfills in service workers. Gecko: Shipped/Shipping (https://hg.mozilla.org/releases/mozilla-release/raw-file/FIREFOX_140_0_RELEASE/dom/webidl/ProgressEvent.webidl) Verified in Firefox 140 release sources: ProgressEvent is exposed to Window and Worker, and ServiceWorkerGlobalScope includes the Worker global name. This establishes service worker exposure in a released version; it does not identify the first supported version. ServiceWorker global definition: https://hg.mozilla.org/releases/mozilla-release/raw-file/FIREFOX_140_0_RELEASE/dom/webidl/ServiceWorkerGlobalScope.webidl WebKit: Shipped/Shipping (https://github.com/apple-oss-distributions/WebKit/blob/WebKit-7614.1.25.0.30/Source/WebCore/dom/ProgressEvent.idl) Verified in Apple's published WebKit-7614.1.25.0.30 source distribution: ProgressEvent is exposed to Window and Worker, and ServiceWorkerGlobalScope includes the Worker global name. This is release-source evidence, not a claim about the first supported Safari version. ServiceWorker global definition: https://github.com/apple-oss-distributions/WebKit/blob/WebKit-7614.1.25.0.30/Source/WebCore/workers/service/ServiceWorkerGlobalScope.idl Web developers: No signals Other signals: 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? Low risk is expected. This change adds the existing ProgressEvent interface to service workers without removing existing APIs or changing its behavior in other contexts. Code that detects or defines a ProgressEvent global in service workers may behave differently. The change is guarded by the ProgressEventInServiceWorker base::Feature, which provides a kill switch. Debuggability Manually verified on macOS using the patched Content Shell and its DevTools frontend attached to a service worker. Confirmed the ServiceWorkerGlobalScope context, successful ProgressEvent construction, expandable object inspection, and the expected lengthComputable, loaded, total, and isTrusted values. Autocomplete works for ProgressEvent and its attributes. No DevTools crash or disconnect occurred during these checks. No dedicated DevTools UI changes are needed for this exposure change. Chrome DevTools for agents was not separately tested. Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)? Yes The change uses platform-independent Blink bindings and the existing ProgressEvent implementation, with no platform-specific restrictions. Support is intended for Windows, macOS, Linux, ChromeOS, Android, and Android WebView in service worker contexts Is this feature fully tested by web-platform-tests? Yes The exposure change is covered by extending the existing xhr/progressevent-constructor.any.js WPT to ServiceWorker, alongside Window, DedicatedWorker, and SharedWorker. The tests cover construction, default values, EventInit options, inherited Event attributes, numeric values, and value conversion. Local runs passed. Blink's default and virtual/stable service worker interface-listing tests additionally cover the exposed interface surface. The expanded WPT is included in the CL: https://chromium-review.googlesource.com/c/chromium/src/+/8425503 Flag name on about://flags No information provided Finch feature name ProgressEventInServiceWorker Rollout plan Will ship enabled for all users Requires code in //chrome? False Tracking bug https://issues.chromium.org/issues/332663431 Measurement No dedicated UseCounter is added by this change. Service-worker-specific adoption is not currently measured. Availability expectation Expected to be available in service workers on Blink platforms that support service workers. Adoption expectation Expected to benefit applications and libraries that construct progress events in service workers or share such code across worker contexts. No quantitative adoption estimate is available. Adoption plan Communicate the change through the Blink intent process, upstream the expanded Web Platform Tests, and update browser compatibility documentation to reflect service worker support. Non-OSS dependencies Does the feature depend on any code or APIs outside the Chromium open source repository and its open-source dependencies to function? None. This change reuses Blink's existing ProgressEvent implementation and introduces no additional dependencies. Estimated milestones Shipping on desktop 157 Shipping on Android 157 Shipping on WebView 157 Anticipated spec changes Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (eg links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (eg, changing to naming or structure of the API in a non-backward-compatible way). None anticipated for this change. The XMLHttpRequest Standard already exposes ProgressEvent to Window and Worker. This change implements the existing exposure requirement in service workers. Link to entry on the Chrome Platform Status https://chromestatus.com/feature/5069584943153152?gate=6152298232414208 Links to previous Intent discussions Intent to Prototype: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6ab51ccd.c518491a.183cfe.046f.GAE%40google.com This intent message was generated by Chrome Platform Status. -- 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 [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6abe5be6.b816ca50.7065.0669.GAE%40google.com.
