Title: [287066] trunk/Source/WebCore
Revision
287066
Author
grao...@webkit.org
Date
2021-12-15 01:16:02 -0800 (Wed, 15 Dec 2021)

Log Message

ActiveDOMObject::suspendIfNeeded() should not be called within constructors
https://bugs.webkit.org/show_bug.cgi?id=233945

Reviewed by Chris Dumez and Darin Adler.

* Modules/applepay/ApplePaySession.cpp:
(WebCore::ApplePaySession::create):
* Modules/applepay/ApplePaySetup.cpp:
(WebCore::ApplePaySetup::create):
(WebCore::ApplePaySetup::ApplePaySetup):
* Modules/applepay/ApplePaySetupWebCore.h:
(WebCore::ApplePaySetup::create): Deleted.
* Modules/cache/DOMCache.cpp:
(WebCore::DOMCache::create):
(WebCore::DOMCache::DOMCache):
* Modules/cache/DOMCache.h:
* Modules/cache/DOMCacheStorage.cpp:
(WebCore::DOMCacheStorage::create):
(WebCore::DOMCacheStorage::DOMCacheStorage):
* Modules/cache/DOMCacheStorage.h:
(WebCore::DOMCacheStorage::create): Deleted.
* Modules/entriesapi/FileSystemDirectoryReader.cpp:
(WebCore::FileSystemDirectoryReader::create):
(WebCore::FileSystemDirectoryReader::FileSystemDirectoryReader):
* Modules/entriesapi/FileSystemDirectoryReader.h:
* Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:
(WebCore::FileSystemSyncAccessHandle::create):
(WebCore::FileSystemSyncAccessHandle::FileSystemSyncAccessHandle):
* Modules/geolocation/Geolocation.cpp:
(WebCore::Geolocation::create):
* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::create):
(WebCore::MediaStream::MediaStream):
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::create):
* Modules/remoteplayback/RemotePlayback.cpp:
(WebCore::RemotePlayback::create):
(WebCore::RemotePlayback::RemotePlayback):
* Modules/webaudio/ScriptProcessorNode.cpp:
(WebCore::ScriptProcessorNode::create):
(WebCore::ScriptProcessorNode::ScriptProcessorNode):
* Modules/webxr/WebXRSession.cpp:
(WebCore::WebXRSession::create):
(WebCore::WebXRSession::WebXRSession):
* Modules/webxr/WebXRSystem.cpp:
(WebCore::WebXRSystem::create):
(WebCore::WebXRSystem::WebXRSystem):
* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::create):
(WebCore::m_version):
* css/CSSFontSelector.h:
* dom/MessagePort.cpp:
(WebCore::MessagePort::create):
(WebCore::MessagePort::MessagePort):
* workers/WorkerAnimationController.cpp:
(WebCore::WorkerAnimationController::create):
(WebCore::WorkerAnimationController::WorkerAnimationController):
* workers/service/ServiceWorker.cpp:
(WebCore::ServiceWorker::getOrCreate):
(WebCore::ServiceWorker::ServiceWorker):
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::getOrCreate):
(WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287065 => 287066)


--- trunk/Source/WebCore/ChangeLog	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/ChangeLog	2021-12-15 09:16:02 UTC (rev 287066)
@@ -1,3 +1,69 @@
+2021-12-15  Antoine Quint  <grao...@webkit.org>
+
+        ActiveDOMObject::suspendIfNeeded() should not be called within constructors
+        https://bugs.webkit.org/show_bug.cgi?id=233945
+
+        Reviewed by Chris Dumez and Darin Adler.
+
+        * Modules/applepay/ApplePaySession.cpp:
+        (WebCore::ApplePaySession::create):
+        * Modules/applepay/ApplePaySetup.cpp:
+        (WebCore::ApplePaySetup::create):
+        (WebCore::ApplePaySetup::ApplePaySetup):
+        * Modules/applepay/ApplePaySetupWebCore.h:
+        (WebCore::ApplePaySetup::create): Deleted.
+        * Modules/cache/DOMCache.cpp:
+        (WebCore::DOMCache::create):
+        (WebCore::DOMCache::DOMCache):
+        * Modules/cache/DOMCache.h:
+        * Modules/cache/DOMCacheStorage.cpp:
+        (WebCore::DOMCacheStorage::create):
+        (WebCore::DOMCacheStorage::DOMCacheStorage):
+        * Modules/cache/DOMCacheStorage.h:
+        (WebCore::DOMCacheStorage::create): Deleted.
+        * Modules/entriesapi/FileSystemDirectoryReader.cpp:
+        (WebCore::FileSystemDirectoryReader::create):
+        (WebCore::FileSystemDirectoryReader::FileSystemDirectoryReader):
+        * Modules/entriesapi/FileSystemDirectoryReader.h:
+        * Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:
+        (WebCore::FileSystemSyncAccessHandle::create):
+        (WebCore::FileSystemSyncAccessHandle::FileSystemSyncAccessHandle):
+        * Modules/geolocation/Geolocation.cpp:
+        (WebCore::Geolocation::create):
+        * Modules/mediastream/MediaStream.cpp:
+        (WebCore::MediaStream::create):
+        (WebCore::MediaStream::MediaStream):
+        * Modules/paymentrequest/PaymentRequest.cpp:
+        (WebCore::PaymentRequest::create):
+        * Modules/remoteplayback/RemotePlayback.cpp:
+        (WebCore::RemotePlayback::create):
+        (WebCore::RemotePlayback::RemotePlayback):
+        * Modules/webaudio/ScriptProcessorNode.cpp:
+        (WebCore::ScriptProcessorNode::create):
+        (WebCore::ScriptProcessorNode::ScriptProcessorNode):
+        * Modules/webxr/WebXRSession.cpp:
+        (WebCore::WebXRSession::create):
+        (WebCore::WebXRSession::WebXRSession):
+        * Modules/webxr/WebXRSystem.cpp:
+        (WebCore::WebXRSystem::create):
+        (WebCore::WebXRSystem::WebXRSystem):
+        * css/CSSFontSelector.cpp:
+        (WebCore::CSSFontSelector::create):
+        (WebCore::m_version):
+        * css/CSSFontSelector.h:
+        * dom/MessagePort.cpp:
+        (WebCore::MessagePort::create):
+        (WebCore::MessagePort::MessagePort):
+        * workers/WorkerAnimationController.cpp:
+        (WebCore::WorkerAnimationController::create):
+        (WebCore::WorkerAnimationController::WorkerAnimationController):
+        * workers/service/ServiceWorker.cpp:
+        (WebCore::ServiceWorker::getOrCreate):
+        (WebCore::ServiceWorker::ServiceWorker):
+        * workers/service/ServiceWorkerRegistration.cpp:
+        (WebCore::ServiceWorkerRegistration::getOrCreate):
+        (WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):
+
 2021-12-15  Diego Pino Garcia  <dp...@igalia.com>
 
         [GTK][WPE] Build fix for Debian Stable after r287015

Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -333,7 +333,9 @@
     if (convertedPaymentRequest.hasException())
         return convertedPaymentRequest.releaseException();
 
-    return adoptRef(*new ApplePaySession(document, version, convertedPaymentRequest.releaseReturnValue()));
+    auto session = adoptRef(*new ApplePaySession(document, version, convertedPaymentRequest.releaseReturnValue()));
+    session->suspendIfNeeded();
+    return session;
 }
 
 ApplePaySession::ApplePaySession(Document& document, unsigned version, ApplePaySessionPaymentRequest&& paymentRequest)
@@ -342,7 +344,6 @@
     , m_version { version }
 {
     ASSERT(document.page()->paymentCoordinator().supportsVersion(document, version));
-    suspendIfNeeded();
 }
 
 ApplePaySession::~ApplePaySession() = default;

Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySetup.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/applepay/ApplePaySetup.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySetup.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -115,11 +115,17 @@
     });
 }
 
+Ref<ApplePaySetup> ApplePaySetup::create(ScriptExecutionContext& context, ApplePaySetupConfiguration&& configuration)
+{
+    auto setup = adoptRef(*new ApplePaySetup(context, WTFMove(configuration)));
+    setup->suspendIfNeeded();
+    return setup;
+}
+
 ApplePaySetup::ApplePaySetup(ScriptExecutionContext& context, ApplePaySetupConfiguration&& configuration)
     : ActiveDOMObject(&context)
     , m_configuration(WTFMove(configuration))
 {
-    suspendIfNeeded();
 }
 
 void ApplePaySetup::stop()

Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h (287065 => 287066)


--- trunk/Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySetupWebCore.h	2021-12-15 09:16:02 UTC (rev 287066)
@@ -43,10 +43,7 @@
 
 class ApplePaySetup : public ActiveDOMObject, public RefCounted<ApplePaySetup> {
 public:
-    static Ref<ApplePaySetup> create(ScriptExecutionContext& context, ApplePaySetupConfiguration&& configuration)
-    {
-        return adoptRef(*new ApplePaySetup(context, WTFMove(configuration)));
-    }
+    static Ref<ApplePaySetup> create(ScriptExecutionContext&, ApplePaySetupConfiguration&&);
 
     using SetupFeaturesPromise = DOMPromiseDeferred<IDLSequence<IDLInterface<ApplePaySetupFeature>>>;
     void getSetupFeatures(Document&, SetupFeaturesPromise&&);

Modified: trunk/Source/WebCore/Modules/cache/DOMCache.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/cache/DOMCache.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -40,6 +40,13 @@
 namespace WebCore {
 using namespace WebCore::DOMCacheEngine;
 
+Ref<DOMCache> DOMCache::create(ScriptExecutionContext& context, String&& name, uint64_t identifier, Ref<CacheStorageConnection>&& connection)
+{
+    auto cache = adoptRef(*new DOMCache(context, WTFMove(name), identifier, WTFMove(connection)));
+    cache->suspendIfNeeded();
+    return cache;
+}
+
 DOMCache::DOMCache(ScriptExecutionContext& context, String&& name, uint64_t identifier, Ref<CacheStorageConnection>&& connection)
     : ActiveDOMObject(&context)
     , m_name(WTFMove(name))
@@ -46,7 +53,6 @@
     , m_identifier(identifier)
     , m_connection(WTFMove(connection))
 {
-    suspendIfNeeded();
     m_connection->reference(m_identifier);
 }
 

Modified: trunk/Source/WebCore/Modules/cache/DOMCache.h (287065 => 287066)


--- trunk/Source/WebCore/Modules/cache/DOMCache.h	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/cache/DOMCache.h	2021-12-15 09:16:02 UTC (rev 287066)
@@ -37,7 +37,7 @@
 
 class DOMCache final : public RefCounted<DOMCache>, public ActiveDOMObject {
 public:
-    static Ref<DOMCache> create(ScriptExecutionContext& context, String&& name, uint64_t identifier, Ref<CacheStorageConnection>&& connection) { return adoptRef(*new DOMCache(context, WTFMove(name), identifier, WTFMove(connection))); }
+    static Ref<DOMCache> create(ScriptExecutionContext&, String&&, uint64_t, Ref<CacheStorageConnection>&&);
     ~DOMCache();
 
     using RequestInfo = FetchRequest::Info;

Modified: trunk/Source/WebCore/Modules/cache/DOMCacheStorage.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/cache/DOMCacheStorage.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/cache/DOMCacheStorage.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -36,11 +36,17 @@
 
 namespace WebCore {
 
+Ref<DOMCacheStorage> DOMCacheStorage::create(ScriptExecutionContext& context, Ref<CacheStorageConnection>&& connection)
+{
+    auto cacheStorage = adoptRef(*new DOMCacheStorage(context, WTFMove(connection)));
+    cacheStorage->suspendIfNeeded();
+    return cacheStorage;
+}
+
 DOMCacheStorage::DOMCacheStorage(ScriptExecutionContext& context, Ref<CacheStorageConnection>&& connection)
     : ActiveDOMObject(&context)
     , m_connection(WTFMove(connection))
 {
-    suspendIfNeeded();
 }
 
 DOMCacheStorage::~DOMCacheStorage() = default;

Modified: trunk/Source/WebCore/Modules/cache/DOMCacheStorage.h (287065 => 287066)


--- trunk/Source/WebCore/Modules/cache/DOMCacheStorage.h	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/cache/DOMCacheStorage.h	2021-12-15 09:16:02 UTC (rev 287066)
@@ -34,7 +34,7 @@
 
 class DOMCacheStorage : public RefCounted<DOMCacheStorage>, public ActiveDOMObject {
 public:
-    static Ref<DOMCacheStorage> create(ScriptExecutionContext& context, Ref<CacheStorageConnection>&& connection) { return adoptRef(*new DOMCacheStorage(context, WTFMove(connection))); }
+    static Ref<DOMCacheStorage> create(ScriptExecutionContext&, Ref<CacheStorageConnection>&&);
     ~DOMCacheStorage();
 
     using KeysPromise = DOMPromiseDeferred<IDLSequence<IDLDOMString>>;

Modified: trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -41,11 +41,17 @@
 
 WTF_MAKE_ISO_ALLOCATED_IMPL(FileSystemDirectoryReader);
 
+Ref<FileSystemDirectoryReader> FileSystemDirectoryReader::create(ScriptExecutionContext& context, FileSystemDirectoryEntry& directory)
+{
+    auto reader = adoptRef(*new FileSystemDirectoryReader(context, directory));
+    reader->suspendIfNeeded();
+    return reader;
+}
+
 FileSystemDirectoryReader::FileSystemDirectoryReader(ScriptExecutionContext& context, FileSystemDirectoryEntry& directory)
     : ActiveDOMObject(&context)
     , m_directory(directory)
 {
-    suspendIfNeeded();
 }
 
 FileSystemDirectoryReader::~FileSystemDirectoryReader() = default;

Modified: trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.h (287065 => 287066)


--- trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.h	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.h	2021-12-15 09:16:02 UTC (rev 287066)
@@ -41,10 +41,7 @@
 class FileSystemDirectoryReader final : public ScriptWrappable, public ActiveDOMObject, public RefCounted<FileSystemDirectoryReader> {
     WTF_MAKE_ISO_ALLOCATED(FileSystemDirectoryReader);
 public:
-    static Ref<FileSystemDirectoryReader> create(ScriptExecutionContext& context, FileSystemDirectoryEntry& directory)
-    {
-        return adoptRef(*new FileSystemDirectoryReader(context, directory));
-    }
+    static Ref<FileSystemDirectoryReader> create(ScriptExecutionContext&, FileSystemDirectoryEntry&);
 
     ~FileSystemDirectoryReader();
 

Modified: trunk/Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -37,7 +37,9 @@
 
 Ref<FileSystemSyncAccessHandle> FileSystemSyncAccessHandle::create(ScriptExecutionContext& context, FileSystemFileHandle& source, FileSystemSyncAccessHandleIdentifier identifier, FileSystem::PlatformFileHandle file)
 {
-    return adoptRef(*new FileSystemSyncAccessHandle(context, source, identifier, file));
+    auto handle = adoptRef(*new FileSystemSyncAccessHandle(context, source, identifier, file));
+    handle->suspendIfNeeded();
+    return handle;
 }
 
 FileSystemSyncAccessHandle::FileSystemSyncAccessHandle(ScriptExecutionContext& context, FileSystemFileHandle& source, FileSystemSyncAccessHandleIdentifier identifier, FileSystem::PlatformFileHandle file)
@@ -47,7 +49,6 @@
     , m_file(file)
 {
     ASSERT(m_file != FileSystem::invalidPlatformFileHandle);
-    suspendIfNeeded();
 
     m_source->registerSyncAccessHandle(m_identifier, *this);
 }

Modified: trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -134,7 +134,7 @@
 Ref<Geolocation> Geolocation::create(Navigator& navigator)
 {
     auto geolocation = adoptRef(*new Geolocation(navigator));
-    geolocation.get().suspendIfNeeded();
+    geolocation->suspendIfNeeded();
     return geolocation;
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -50,17 +50,23 @@
 
 Ref<MediaStream> MediaStream::create(Document& document, MediaStream& stream)
 {
-    return adoptRef(*new MediaStream(document, stream.getTracks()));
+    auto mediaStream = adoptRef(*new MediaStream(document, stream.getTracks()));
+    mediaStream->suspendIfNeeded();
+    return mediaStream;
 }
 
 Ref<MediaStream> MediaStream::create(Document& document, const MediaStreamTrackVector& tracks)
 {
-    return adoptRef(*new MediaStream(document, tracks));
+    auto mediaStream = adoptRef(*new MediaStream(document, tracks));
+    mediaStream->suspendIfNeeded();
+    return mediaStream;
 }
 
 Ref<MediaStream> MediaStream::create(Document& document, Ref<MediaStreamPrivate>&& streamPrivate)
 {
-    return adoptRef(*new MediaStream(document, WTFMove(streamPrivate)));
+    auto mediaStream = adoptRef(*new MediaStream(document, WTFMove(streamPrivate)));
+    mediaStream->suspendIfNeeded();
+    return mediaStream;
 }
 
 static inline MediaStreamTrackPrivateVector createTrackPrivateVector(const MediaStreamTrackVector& tracks)
@@ -82,7 +88,6 @@
 
     setIsActive(m_private->active());
     m_private->addObserver(*this);
-    suspendIfNeeded();
 }
 
 MediaStream::MediaStream(Document& document, Ref<MediaStreamPrivate>&& streamPrivate)
@@ -96,7 +101,6 @@
 
     setIsActive(m_private->active());
     m_private->addObserver(*this);
-    suspendIfNeeded();
 }
 
 MediaStream::~MediaStream()

Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -51,6 +51,7 @@
     m_backend->onTonePlayed([this](const String&) {
         onTonePlayed();
     });
+
     suspendIfNeeded();
 }
 

Modified: trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -344,7 +344,9 @@
         return detailsResult.releaseException();
 
     auto shippingOptionAndModifierData = detailsResult.releaseReturnValue();
-    return adoptRef(*new PaymentRequest(document, WTFMove(options), WTFMove(details), WTFMove(std::get<1>(shippingOptionAndModifierData)), WTFMove(serializedMethodData), WTFMove(std::get<0>(shippingOptionAndModifierData))));
+    auto request = adoptRef(*new PaymentRequest(document, WTFMove(options), WTFMove(details), WTFMove(std::get<1>(shippingOptionAndModifierData)), WTFMove(serializedMethodData), WTFMove(std::get<0>(shippingOptionAndModifierData))));
+    request->suspendIfNeeded();
+    return request;
 }
 
 bool PaymentRequest::enabledForContext(ScriptExecutionContext& context)
@@ -360,7 +362,6 @@
     , m_serializedMethodData { WTFMove(serializedMethodData) }
     , m_shippingOption { WTFMove(selectedShippingOption) }
 {
-    suspendIfNeeded();
 }
 
 PaymentRequest::~PaymentRequest()

Modified: trunk/Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/remoteplayback/RemotePlayback.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -45,7 +45,9 @@
 
 Ref<RemotePlayback> RemotePlayback::create(HTMLMediaElement& element)
 {
-    return adoptRef(*new RemotePlayback(element));
+    auto remotePlayback = adoptRef(*new RemotePlayback(element));
+    remotePlayback->suspendIfNeeded();
+    return remotePlayback;
 }
 
 RemotePlayback::RemotePlayback(HTMLMediaElement& element)
@@ -52,7 +54,6 @@
     : WebCore::ActiveDOMObject(element.scriptExecutionContext())
     , m_mediaElement(element)
 {
-    suspendIfNeeded();
 }
 
 RemotePlayback::~RemotePlayback()

Modified: trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -47,7 +47,9 @@
 
 Ref<ScriptProcessorNode> ScriptProcessorNode::create(BaseAudioContext& context, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChannels)
 {
-    return adoptRef(*new ScriptProcessorNode(context, bufferSize, numberOfInputChannels, numberOfOutputChannels));
+    auto node = adoptRef(*new ScriptProcessorNode(context, bufferSize, numberOfInputChannels, numberOfOutputChannels));
+    node->suspendIfNeeded();
+    return node;
 }
 
 ScriptProcessorNode::ScriptProcessorNode(BaseAudioContext& context, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChannels)
@@ -69,7 +71,6 @@
     addOutput(numberOfOutputChannels);
 
     initialize();
-    suspendIfNeeded();
 }
 
 ScriptProcessorNode::~ScriptProcessorNode()

Modified: trunk/Source/WebCore/Modules/webxr/WebXRSession.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/webxr/WebXRSession.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/webxr/WebXRSession.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -47,7 +47,9 @@
 
 Ref<WebXRSession> WebXRSession::create(Document& document, WebXRSystem& system, XRSessionMode mode, PlatformXR::Device& device, FeatureList&& requestedFeatures)
 {
-    return adoptRef(*new WebXRSession(document, system, mode, device, WTFMove(requestedFeatures)));
+    auto session = adoptRef(*new WebXRSession(document, system, mode, device, WTFMove(requestedFeatures)));
+    session->suspendIfNeeded();
+    return session;
 }
 
 WebXRSession::WebXRSession(Document& document, WebXRSystem& system, XRSessionMode mode, PlatformXR::Device& device, FeatureList&& requestedFeatures)
@@ -68,8 +70,6 @@
     // https://immersive-web.github.io/webxr/#ref-for-dom-xrreferencespacetype-viewer%E2%91%A2
     // Every session MUST support viewer XRReferenceSpaces.
     m_device->initializeReferenceSpace(XRReferenceSpaceType::Viewer);
-
-    suspendIfNeeded();
 }
 
 WebXRSession::~WebXRSession()

Modified: trunk/Source/WebCore/Modules/webxr/WebXRSystem.cpp (287065 => 287066)


--- trunk/Source/WebCore/Modules/webxr/WebXRSystem.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/Modules/webxr/WebXRSystem.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -56,7 +56,9 @@
 
 Ref<WebXRSystem> WebXRSystem::create(Navigator& navigator)
 {
-    return adoptRef(*new WebXRSystem(navigator));
+    auto system = adoptRef(*new WebXRSystem(navigator));
+    system->suspendIfNeeded();
+    return system;
 }
 
 WebXRSystem::WebXRSystem(Navigator& navigator)
@@ -65,7 +67,6 @@
     , m_defaultInlineDevice(*navigator.scriptExecutionContext())
 {
     m_inlineXRDevice = m_defaultInlineDevice;
-    suspendIfNeeded();
 }
 
 WebXRSystem::~WebXRSystem() = default;

Modified: trunk/Source/WebCore/css/CSSFontSelector.cpp (287065 => 287066)


--- trunk/Source/WebCore/css/CSSFontSelector.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/css/CSSFontSelector.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -62,6 +62,13 @@
 
 static unsigned fontSelectorId;
 
+Ref<CSSFontSelector> CSSFontSelector::create(ScriptExecutionContext& context)
+{
+    auto fontSelector = adoptRef(*new CSSFontSelector(context));
+    fontSelector->suspendIfNeeded();
+    return fontSelector;
+}
+
 CSSFontSelector::CSSFontSelector(ScriptExecutionContext& context)
     : ActiveDOMObject(&context)
     , m_context(context)
@@ -83,8 +90,6 @@
     FontCache::forCurrentThread().addClient(*this);
     m_cssFontFaceSet->addFontModifiedObserver(m_fontModifiedObserver);
     LOG(Fonts, "CSSFontSelector %p ctor", this);
-
-    suspendIfNeeded();
 }
 
 CSSFontSelector::~CSSFontSelector()

Modified: trunk/Source/WebCore/css/CSSFontSelector.h (287065 => 287066)


--- trunk/Source/WebCore/css/CSSFontSelector.h	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/css/CSSFontSelector.h	2021-12-15 09:16:02 UTC (rev 287066)
@@ -51,10 +51,7 @@
 
 class CSSFontSelector final : public FontSelector, public CSSFontFace::Client, public CanMakeWeakPtr<CSSFontSelector>, public ActiveDOMObject {
 public:
-    static Ref<CSSFontSelector> create(ScriptExecutionContext& context)
-    {
-        return adoptRef(*new CSSFontSelector(context));
-    }
+    static Ref<CSSFontSelector> create(ScriptExecutionContext&);
     virtual ~CSSFontSelector();
     
     unsigned version() const final { return m_version; }

Modified: trunk/Source/WebCore/dom/MessagePort.cpp (287065 => 287066)


--- trunk/Source/WebCore/dom/MessagePort.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/dom/MessagePort.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -93,7 +93,9 @@
 
 Ref<MessagePort> MessagePort::create(ScriptExecutionContext& scriptExecutionContext, const MessagePortIdentifier& local, const MessagePortIdentifier& remote)
 {
-    return adoptRef(*new MessagePort(scriptExecutionContext, local, remote));
+    auto messagePort = adoptRef(*new MessagePort(scriptExecutionContext, local, remote));
+    messagePort->suspendIfNeeded();
+    return messagePort;
 }
 
 MessagePort::MessagePort(ScriptExecutionContext& scriptExecutionContext, const MessagePortIdentifier& local, const MessagePortIdentifier& remote)
@@ -110,7 +112,6 @@
     initializeWeakPtrFactory();
 
     scriptExecutionContext.createdMessagePort(*this);
-    suspendIfNeeded();
 
     // Don't need to call processMessageWithMessagePortsSoon() here, because the port will not be opened until start() is invoked.
 }

Modified: trunk/Source/WebCore/workers/WorkerAnimationController.cpp (287065 => 287066)


--- trunk/Source/WebCore/workers/WorkerAnimationController.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/workers/WorkerAnimationController.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -39,7 +39,9 @@
 
 Ref<WorkerAnimationController> WorkerAnimationController::create(WorkerGlobalScope& workerGlobalScope)
 {
-    return adoptRef(*new WorkerAnimationController(workerGlobalScope));
+    auto controller = adoptRef(*new WorkerAnimationController(workerGlobalScope));
+    controller->suspendIfNeeded();
+    return controller;
 }
 
 WorkerAnimationController::WorkerAnimationController(WorkerGlobalScope& workerGlobalScope)
@@ -47,7 +49,6 @@
     , m_workerGlobalScope(workerGlobalScope)
     , m_animationTimer(*this, &WorkerAnimationController::animationTimerFired)
 {
-    suspendIfNeeded();
 }
 
 WorkerAnimationController::~WorkerAnimationController()

Modified: trunk/Source/WebCore/workers/service/ServiceWorker.cpp (287065 => 287066)


--- trunk/Source/WebCore/workers/service/ServiceWorker.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/workers/service/ServiceWorker.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -57,7 +57,9 @@
 {
     if (auto existingServiceWorker = context.serviceWorker(data.identifier))
         return *existingServiceWorker;
-    return adoptRef(*new ServiceWorker(context, WTFMove(data)));
+    auto serviceWorker = adoptRef(*new ServiceWorker(context, WTFMove(data)));
+    serviceWorker->suspendIfNeeded();
+    return serviceWorker;
 }
 
 ServiceWorker::ServiceWorker(ScriptExecutionContext& context, ServiceWorkerData&& data)
@@ -64,8 +66,6 @@
     : ActiveDOMObject(&context)
     , m_data(WTFMove(data))
 {
-    suspendIfNeeded();
-
     context.registerServiceWorker(*this);
 
     relaxAdoptionRequirement();

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp (287065 => 287066)


--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2021-12-15 09:09:35 UTC (rev 287065)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2021-12-15 09:16:02 UTC (rev 287066)
@@ -54,7 +54,9 @@
         return *registration;
     }
 
-    return adoptRef(*new ServiceWorkerRegistration(context, WTFMove(container), WTFMove(data)));
+    auto registration = adoptRef(*new ServiceWorkerRegistration(context, WTFMove(container), WTFMove(data)));
+    registration->suspendIfNeeded();
+    return registration;
 }
 
 ServiceWorkerRegistration::ServiceWorkerRegistration(ScriptExecutionContext& context, Ref<ServiceWorkerContainer>&& container, ServiceWorkerRegistrationData&& registrationData)
@@ -63,7 +65,6 @@
     , m_container(WTFMove(container))
 {
     LOG(ServiceWorker, "Creating registration %p for registration key %s", this, m_registrationData.key.loggingString().utf8().data());
-    suspendIfNeeded();
 
     if (m_registrationData.installingWorker)
         m_installingWorker = ServiceWorker::getOrCreate(context, WTFMove(*m_registrationData.installingWorker));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to