[webkit-changes] [WebKit/WebKit] 48880e: Implement nested Dedicated Workers

Chris Dumez noreply at github.com
Sat Sep 17 17:31:39 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 48880e342359f100878b1b87373e706db7dfe540
      https://github.com/WebKit/WebKit/commit/48880e342359f100878b1b87373e706db7dfe540
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2022-09-17 (Sat, 17 Sep 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/opt-in/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/opt-in/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/unset/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/unset/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/opt-in/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/opt-in/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/unset/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/unset/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-classic.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-module.https-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/nested-worker-success.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/web-locks/query.tentative.https.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webmessaging/MessageEvent-trusted.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webmessaging/message-channels/worker-post-after-close.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webmessaging/message-channels/worker.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/websockets/Create-on-worker-shutdown.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/baseurl/alpha/worker-in-worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/constructors/Worker/expected-self-properties.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/dedicated-worker-in-data-url-context.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_close_from_parent_worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_close_self.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_importScripts.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_sync_xhr.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_terminate_from_document-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/workers/semantics/multiple-workers/exposure.any.worker-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt
    M LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.worker-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.worker-expected.txt
    A LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import.any.worker-expected.txt
    M LayoutTests/platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt
    A LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/worker-classic.https-expected.txt
    A LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/worker-module.https-expected.txt
    A LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/worker-classic.https-expected.txt
    A LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/worker-module.https-expected.txt
    M Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.cpp
    M Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.cpp
    M Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/DocumentInlines.h
    M Source/WebCore/dom/ScriptExecutionContext.cpp
    M Source/WebCore/dom/ScriptExecutionContext.h
    M Source/WebCore/dom/XMLDocument.h
    M Source/WebCore/html/FTPDirectoryDocument.h
    M Source/WebCore/html/HTMLDocument.cpp
    M Source/WebCore/html/HTMLDocument.h
    M Source/WebCore/html/ImageDocument.h
    M Source/WebCore/html/MediaDocument.h
    M Source/WebCore/html/ModelDocument.h
    M Source/WebCore/html/PDFDocument.h
    M Source/WebCore/html/PluginDocument.h
    M Source/WebCore/html/TextDocument.h
    M Source/WebCore/loader/SinkDocument.h
    M Source/WebCore/svg/SVGDocument.h
    M Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp
    M Source/WebCore/workers/Worker.cpp
    M Source/WebCore/workers/Worker.h
    M Source/WebCore/workers/Worker.idl
    M Source/WebCore/workers/WorkerGlobalScope.cpp
    M Source/WebCore/workers/WorkerGlobalScope.h
    M Source/WebCore/workers/WorkerLoaderProxy.h
    M Source/WebCore/workers/WorkerMessagingProxy.cpp
    M Source/WebCore/workers/WorkerMessagingProxy.h
    M Source/WebCore/workers/WorkerOrWorkletThread.cpp
    M Source/WebCore/workers/WorkerOrWorkletThread.h
    M Source/WebCore/workers/service/SWClientConnection.cpp
    M Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp
    M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
    M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h
    M Source/WebCore/workers/shared/SharedWorkerGlobalScope.cpp
    M Source/WebCore/workers/shared/SharedWorkerGlobalScope.h
    M Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.cpp
    M Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.h
    M Source/WebCore/worklets/PaintWorkletGlobalScope.cpp

  Log Message:
  -----------
  Implement nested Dedicated Workers
https://bugs.webkit.org/show_bug.cgi?id=22723
<rdar://6425810>

Reviewed by Darin Adler.

Add support for nested dedicated workers. Blink and Gecko already support this.

Also fix an issue where ScriptExecutionContext were added too early to the ScriptExecutionContextMap.
This was marking calls to postTaskTo() unsafe since it would call the virtual postTask() function
on a ScriptExecutionContext that had potentially not finished construction. This was causing flaky
test crashes.

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/opt-in/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/opt-in/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/unset/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-classic.http-rp/unset/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/opt-in/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/opt-in/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/unset/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/mixed-content/gen/worker-module.http-rp/unset/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-classic.http-rp/upgrade/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-classic.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/upgrade-insecure-requests/gen/worker-module.http-rp/upgrade/worker-module.https-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/nested-worker-success.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/web-locks/query.tentative.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webmessaging/MessageEvent-trusted.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webmessaging/message-channels/worker-post-after-close.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webmessaging/message-channels/worker.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/websockets/Create-on-worker-shutdown.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/baseurl/alpha/worker-in-worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/constructors/Worker/expected-self-properties.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/dedicated-worker-in-data-url-context.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_close_from_parent_worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_close_self.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_importScripts.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_sync_xhr.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/nested_worker_terminate_from_document-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/semantics/interface-objects/001.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/workers/semantics/multiple-workers/exposure.any.worker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.worker-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.worker-expected.txt: Added.
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/workers/modules/dedicated-worker-import.any.worker-expected.txt: Added.
* LayoutTests/platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.worker-expected.txt:
* Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.cpp:
(WebCore::AudioWorkletMessagingProxy::loaderContextIdentifier const):
* Source/WebCore/Modules/webaudio/AudioWorkletMessagingProxy.h:
* Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::~DedicatedWorkerGlobalScope):
* Source/WebCore/workers/Worker.cpp:
(WebCore::Worker::networkStateChanged):
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::~Worker):
(WebCore::Worker::forEachWorker):
(WebCore::Worker::notifyNetworkStateChange): Deleted.
(WebCore::Worker::byIdentifier): Deleted.
* Source/WebCore/workers/Worker.h:
* Source/WebCore/workers/Worker.idl:
* Source/WebCore/workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
* Source/WebCore/workers/WorkerLoaderProxy.h:
* Source/WebCore/workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
(WebCore::WorkerMessagingProxy::~WorkerMessagingProxy):
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postTaskToWorkerObject):
(WebCore::WorkerMessagingProxy::postMessageToWorkerGlobalScope):
(WebCore::WorkerMessagingProxy::loaderContextIdentifier const):
(WebCore::WorkerMessagingProxy::postTaskToLoader):
(WebCore::WorkerMessagingProxy::createCacheStorageConnection):
(WebCore::WorkerMessagingProxy::storageConnection):
(WebCore::WorkerMessagingProxy::createRTCDataChannelRemoteHandlerConnection):
(WebCore::WorkerMessagingProxy::postExceptionToWorkerObject):
(WebCore::WorkerMessagingProxy::workerObjectDestroyed):
(WebCore::WorkerMessagingProxy::workerGlobalScopeDestroyed):
(WebCore::WorkerMessagingProxy::workerGlobalScopeClosed):
(WebCore::WorkerMessagingProxy::workerGlobalScopeDestroyedInternal):
(WebCore::WorkerMessagingProxy::confirmMessageFromWorkerObject):
(WebCore::WorkerMessagingProxy::reportPendingActivity):
* Source/WebCore/workers/WorkerMessagingProxy.h:
* Source/WebCore/workers/WorkerOrWorkletThread.cpp:
(WebCore::WorkerOrWorkletThread::workerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::destroyWorkerGlobalScope):
(WebCore::WorkerOrWorkletThread::stop):
(WebCore::WorkerOrWorkletThread::addChildThread):
(WebCore::WorkerOrWorkletThread::removeChildThread):
* Source/WebCore/workers/WorkerOrWorkletThread.h:
* Source/WebCore/workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::postMessageToServiceWorkerClient):
(WebCore::SWClientConnection::notifyClientsOfControllerChange):
* Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::~ServiceWorkerGlobalScope):
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::loaderContextIdentifier const):
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h:
* Source/WebCore/workers/shared/SharedWorkerGlobalScope.cpp:
(WebCore::SharedWorkerGlobalScope::~SharedWorkerGlobalScope):
* Source/WebCore/workers/shared/SharedWorkerGlobalScope.h:
* Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.cpp:
(WebCore::SharedWorkerThreadProxy::loaderContextIdentifier const):
* Source/WebCore/workers/shared/context/SharedWorkerThreadProxy.h:

Canonical link: https://commits.webkit.org/254597@main




More information about the webkit-changes mailing list