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));