WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
179822
[Service Workers] Implement "Notify Controller Change" algorithm
https://bugs.webkit.org/show_bug.cgi?id=179822
Summary
[Service Workers] Implement "Notify Controller Change" algorithm
Chris Dumez
Reported
2017-11-17 09:03:00 PST
Implement "Notify Controller Change" algorithm: -
https://w3c.github.io/ServiceWorker/#notify-controller-change
Attachments
WIP Patch
(11.46 KB, patch)
2017-11-17 10:18 PST
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Patch
(17.74 KB, patch)
2017-11-17 10:47 PST
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Patch
(19.58 KB, patch)
2017-11-17 18:25 PST
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Patch
(19.53 KB, patch)
2017-11-17 18:28 PST
,
Chris Dumez
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Chris Dumez
Comment 1
2017-11-17 10:18:47 PST
Created
attachment 327193
[details]
WIP Patch
Chris Dumez
Comment 2
2017-11-17 10:47:00 PST
Created
attachment 327194
[details]
Patch
youenn fablet
Comment 3
2017-11-17 16:22:21 PST
Comment on
attachment 327194
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=327194&action=review
> Source/WebCore/workers/service/ServiceWorkerContainer.cpp:419 > + scriptExecutionContext()->postTask([this, protectedThis = makeRef(*this)](ScriptExecutionContext&) mutable {
I know the spec is written this way but It seems a bit weird to post a task here for dispatching an event. It does not seem observable to dispatch the event directly without the post task, at least in the current context it is used. Might be safer to stick to the spec though, not sure...
> Source/WebCore/workers/service/ServiceWorkerContainer.cpp:424 > + dispatchEvent(controllerChangeEvent);
do we need controllerChangeEvent variable?
> Source/WebCore/workers/service/server/SWClientConnection.cpp:168 > +void SWClientConnection::notifyClientsOfControllerChange(const HashSet<uint64_t>& scriptExecutionContexts, const ServiceWorkerData& newController)
newController can probably be an r value.
> Source/WebCore/workers/service/server/SWClientConnection.cpp:177 > + client->setActiveServiceWorker(ServiceWorker::getOrCreate(*client, ServiceWorkerData { newController }));
Maybe we should assert that client has an active service worker. Not sure whether we could also assert that we are actually changing from worker.
> Source/WebCore/workers/service/server/SWServerJobQueue.cpp:235 > + // - Set clientâs active worker to registrationâs active worker.
I see client^as here.
> LayoutTests/http/tests/workers/service/controller-change.html:38 > + let frame = await withFrame(scopeURL);
In sw-test-pre.js, there is an interceptedFrame function that could be reused to replace register and withFrame.
Chris Dumez
Comment 4
2017-11-17 18:25:26 PST
Created
attachment 327293
[details]
Patch
Chris Dumez
Comment 5
2017-11-17 18:28:57 PST
Created
attachment 327294
[details]
Patch
Chris Dumez
Comment 6
2017-11-17 19:42:23 PST
Comment on
attachment 327294
[details]
Patch Clearing flags on attachment: 327294 Committed
r225011
: <
https://trac.webkit.org/changeset/225011
>
Chris Dumez
Comment 7
2017-11-17 19:42:25 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 8
2017-11-17 19:43:26 PST
<
rdar://problem/35629134
>
Matt Lewis
Comment 9
2017-11-27 12:41:16 PST
This change has cause the test: imported/w3c/web-platform-tests/service-workers/service-worker/claim-affect-other-registration.https.html to start crashing
https://build.webkit.org/results/Apple%20iOS%2011%20Simulator%20Debug%20WK2%20(Tests)/r225170%20(1241)/results.html
https://build.webkit.org/builders/Apple%20iOS%2011%20Simulator%20Debug%20WK2%20(Tests)/builds/1241
See bug:
https://bugs.webkit.org/show_bug.cgi?id=180049
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug