[wpt-sync] Sync PR 21620 - Service workers continue to control clients after Clear-Site-Data
Categories
(Core :: DOM: Service Workers, task, P4)
Tracking
()
Tracking | Status | |
---|---|---|
firefox75 | --- | fixed |
People
(Reporter: mozilla.org, Unassigned)
References
()
Details
(Whiteboard: [wptsync downstream])
Sync web-platform-tests PR 21620 into mozilla-central (this bug is closed when the sync is complete).
PR: https://github.com/web-platform-tests/wpt/pull/21620
Details from upstream follow.
Steve Becker <stevebe@microsoft.com> wrote:
Service workers continue to control clients after Clear-Site-Data
Adds an immediate flag to unregister jobs for service worker
registrations. When set, the immediate flag enables unregister jobs to
run the "Clear Registration" algorithm immediately without waiting for
the active worker's controllees to unload. After an immediate clear,
the registration's controllees become uncontrolled. The controllees
receive the 'controllerchange' event when the
navigator.serviceWorker.controller is set to null.This change updates ServiceWorkerContextCore::DeleteForOrigin() to set
the immediate unregister job flag to true. All other callers set the
immediate flag to false. The storage quota manager uses
ServiceWorkerContextCore::DeleteForOrigin() when clearing data for the
origin. In addition to evicting origins to free up storage quota, this
code path is used by scenarios like the Clear-Site-Data network
header and the "clear browsing data" privacy UI setting.The change adds a new function to the ServiceWorkerRegistration class,
DeleteAndClearImmediately(), which is used by ServiceWorkerUnregisterJob
when the immediate flag is true. DeleteAndClearImmediately() is very
similar to the existing function, ClearWhenReady(), but it does not wait
to clear the registration when the active worker has controllees.ServiceWorkerContextCore::DeleteForOrigin() is also updated to call
DeleteAndClearImmediately() on the origin's uninstalling registrations.
Registrations stuck in the uninstalling state are waiting for the active
worker's controllees to unload. ServiceWorkerContextCore::DeleteForOrigin()
must stop waiting and clear the registration immediately.
GetUninstallingRegistrationsForOrigin() is added to the
ServiceWorkerRegistry to enable ServiceWorkerContextCore:: DeleteForOrigin()
to find the uninstalling registrations it needs to clear.For testing, the change adds a new unit test that sets the immediate flag to
true in ServiceWorkerJobTest. The change also adds a new service worker WPT
test, unregister-immediately.https.html. The new WPT test uses the
Clear-Site-Data network header to unregister service workers with the
immediate flag set to true. The WPT test adds a test case for each service
worker state. For example, one test case uses Clear-Site-Data to clear a
registration with a service worker in the 'parsing' state. Other test
cases cover the other service worker states like 'installing',
'installed', 'activating' and 'activated'. Additional test cases
verify controllee state, which includes verifying what happens to
pending fetch events when the controller clears.Bug: 1014114
Change-Id: I3baee1117e6dbd349ec4c98c796d4e1b2bddde96Reviewed-on: https://chromium-review.googlesource.com/2040533
WPT-Export-Revision: eb43c35dc126839e4567dd586b50e33d32cbcbba
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 1•4 years ago
|
||
Pushed to try (stability) https://treeherder.mozilla.org/#/jobs?repo=try&revision=a86f46f61a5217ccb08fa4150e918ea8c94e7d5a
Assignee | ||
Comment 2•4 years ago
|
||
CI Results
Ran 13 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI
Total 48 tests
Status Summary
Firefox
PASS : 5[GitHub] 44[Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-asan-opt, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt]
FAIL : 1
TIMEOUT: 6[Gecko-android-em-7.0-x86_64-debug-geckoview, Gecko-android-em-7.0-x86_64-opt-geckoview, Gecko-linux1804-64-asan-opt, Gecko-linux1804-64-debug, Gecko-linux1804-64-opt, Gecko-linux1804-64-qr-debug, Gecko-linux1804-64-qr-opt, Gecko-windows10-64-debug, Gecko-windows10-64-opt, Gecko-windows10-64-qr-debug, Gecko-windows10-64-qr-opt, Gecko-windows7-32-debug, Gecko-windows7-32-opt] 8[GitHub]
NOTRUN : 4
Chrome
OK : 1
PASS : 11
FAIL : 1
TIMEOUT: 6
NOTRUN : 1
Safari
PASS : 3
FAIL : 3
TIMEOUT: 8
NOTRUN : 4
Links
Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base
Details
New Tests That Don't Pass
/service-workers/service-worker/unregister-immediately-before-installed.https.html: TIMEOUT (Chrome: OK, Safari: TIMEOUT)
Clear-Site-Data must abort service worker registration.: TIMEOUT (Chrome: PASS, Safari: TIMEOUT)
Clear-Site-Data must unregister a registration with a worker in the "installing" state.: NOTRUN (Chrome: PASS, Safari: NOTRUN)
/clear-site-data/storage.https.html: SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview
, Gecko-android-em-7.0-x86_64-opt-geckoview
, Gecko-linux1804-64-asan-opt
, Gecko-linux1804-64-debug
, Gecko-linux1804-64-opt
, Gecko-linux1804-64-qr-debug
, Gecko-linux1804-64-qr-opt
, Gecko-windows10-64-debug
, Gecko-windows10-64-opt
, Gecko-windows10-64-qr-debug
, Gecko-windows10-64-qr-opt
, Gecko-windows7-32-debug
, Gecko-windows7-32-opt
], TIMEOUT [GitHub
] (Chrome: TIMEOUT, Safari: TIMEOUT)
Service worker no longer responds to requests: FAIL (Chrome: FAIL, Safari: FAIL)
controllerchange event fires and client no longer has controller: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)
/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)
Clear-Site-Data must fail pending subresource fetch events.: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)
/service-workers/service-worker/unregister-immediately.https.html: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)
Clear-Site-Data must unregister an activated registration with controlled clients.: NOTRUN (Chrome: TIMEOUT, Safari: NOTRUN)
Clear-Site-Data must unregister an activated registration with an update waiting.: NOTRUN (Chrome: PASS, Safari: NOTRUN)
Clear-Site-Data must unregister a registration with a worker in the "activating" state.: TIMEOUT (Chrome: PASS, Safari: TIMEOUT)
Clear-Site-Data must clear an unregistered registration waiting for controlled clients to unload.: NOTRUN (Chrome: NOTRUN, Safari: NOTRUN)
Tests Disabled in Gecko Infrastructure
/clear-site-data/storage.https.html: SKIP [Gecko-android-em-7.0-x86_64-debug-geckoview
, Gecko-android-em-7.0-x86_64-opt-geckoview
, Gecko-linux1804-64-asan-opt
, Gecko-linux1804-64-debug
, Gecko-linux1804-64-opt
, Gecko-linux1804-64-qr-debug
, Gecko-linux1804-64-qr-opt
, Gecko-windows10-64-debug
, Gecko-windows10-64-opt
, Gecko-windows10-64-qr-debug
, Gecko-windows10-64-qr-opt
, Gecko-windows7-32-debug
, Gecko-windows7-32-opt
], TIMEOUT [GitHub
] (Chrome: TIMEOUT, Safari: TIMEOUT)
Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/31ea829480a6 [wpt PR 21620] - Clear-Site-Data must uncontrol affected service worker clients, a=testonly https://hg.mozilla.org/integration/autoland/rev/37f89f8f5224 [wpt PR 21620] - Update wpt metadata, a=testonly
Comment 4•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/31ea829480a6
https://hg.mozilla.org/mozilla-central/rev/37f89f8f5224
Description
•