From 4de896f8eff93876df5f902de11a6e8976a2a939 Mon Sep 17 00:00:00 2001 From: Eden Chuang Date: Tue, 25 Jan 2022 08:53:00 +0000 Subject: [PATCH] Bug 1744025: Use CheckedUnsafePtr in WorkerGlobalScopeBase. r=dom-worker-reviewers,asuth Depends on D132708 Differential Revision: https://phabricator.services.mozilla.com/D132709 --- dom/base/ChromeUtils.cpp | 2 +- dom/performance/PerformanceWorker.cpp | 2 +- dom/workers/WorkerPrivate.cpp | 16 +++++++-------- dom/workers/WorkerPrivate.h | 1 - dom/workers/WorkerScope.cpp | 20 +++++++++---------- dom/workers/WorkerScope.h | 12 +++++------ .../ExtensionAPIRequestForwarder.cpp | 2 +- .../webidl-api/ExtensionBrowser.cpp | 2 +- 8 files changed, 27 insertions(+), 30 deletions(-) diff --git a/dom/base/ChromeUtils.cpp b/dom/base/ChromeUtils.cpp index 6c0db5c69b20..e8584a3e9143 100644 --- a/dom/base/ChromeUtils.cpp +++ b/dom/base/ChromeUtils.cpp @@ -42,7 +42,7 @@ #include "mozilla/dom/UnionTypes.h" #include "mozilla/dom/WindowBinding.h" // For IdleRequestCallback/Options #include "mozilla/dom/WindowGlobalParent.h" -#include "mozilla/dom/WorkerPrivate.h" +#include "mozilla/dom/WorkerScope.h" #include "mozilla/ipc/GeckoChildProcessHost.h" #include "mozilla/net/UrlClassifierFeatureFactory.h" #include "IOActivityMonitor.h" diff --git a/dom/performance/PerformanceWorker.cpp b/dom/performance/PerformanceWorker.cpp index 496fc3e49259..4940a530ae4d 100644 --- a/dom/performance/PerformanceWorker.cpp +++ b/dom/performance/PerformanceWorker.cpp @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "PerformanceWorker.h" -#include "mozilla/dom/WorkerPrivate.h" +#include "mozilla/dom/WorkerScope.h" #include "mozilla/StaticPrefs_dom.h" namespace mozilla::dom { diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp index e886c80e425d..7b1466c16398 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -51,6 +51,7 @@ #include "mozilla/dom/RemoteWorkerService.h" #include "mozilla/dom/TimeoutHandler.h" #include "mozilla/dom/WorkerBinding.h" +#include "mozilla/dom/WorkerScope.h" #include "mozilla/dom/JSExecutionManager.h" #include "mozilla/dom/WindowContext.h" #include "mozilla/extensions/ExtensionBrowser.h" // extensions::Create{AndDispatchInitWorkerContext,WorkerLoaded,WorkerDestroyed}Runnable @@ -5273,15 +5274,14 @@ WorkerGlobalScope* WorkerPrivate::GetOrCreateGlobalScope(JSContext* aCx) { } if (IsSharedWorker()) { - data->mScope = new SharedWorkerGlobalScope( - WrapNotNull(this), CreateClientSource(), WorkerName()); - } else if (IsServiceWorker()) { data->mScope = - new ServiceWorkerGlobalScope(WrapNotNull(this), CreateClientSource(), - GetServiceWorkerRegistrationDescriptor()); + new SharedWorkerGlobalScope(this, CreateClientSource(), WorkerName()); + } else if (IsServiceWorker()) { + data->mScope = new ServiceWorkerGlobalScope( + this, CreateClientSource(), GetServiceWorkerRegistrationDescriptor()); } else { - data->mScope = new DedicatedWorkerGlobalScope( - WrapNotNull(this), CreateClientSource(), WorkerName()); + data->mScope = new DedicatedWorkerGlobalScope(this, CreateClientSource(), + WorkerName()); } JS::Rooted global(aCx); @@ -5310,7 +5310,7 @@ WorkerDebuggerGlobalScope* WorkerPrivate::CreateDebuggerGlobalScope( GetClientType(), HybridEventTarget(), NullPrincipalInfo()); data->mDebuggerScope = - new WorkerDebuggerGlobalScope(WrapNotNull(this), std::move(clientSource)); + new WorkerDebuggerGlobalScope(this, std::move(clientSource)); JS::Rooted global(aCx); NS_ENSURE_TRUE(data->mDebuggerScope->WrapGlobalObject(aCx, &global), nullptr); diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h index 7df489ad9d9a..674792a97ad8 100644 --- a/dom/workers/WorkerPrivate.h +++ b/dom/workers/WorkerPrivate.h @@ -32,7 +32,6 @@ #include "mozilla/dom/Worker.h" #include "mozilla/dom/WorkerCommon.h" #include "mozilla/dom/WorkerLoadInfo.h" -#include "mozilla/dom/WorkerScope.h" #include "mozilla/dom/WorkerStatus.h" #include "mozilla/dom/workerinternals/JSSettings.h" #include "mozilla/dom/workerinternals/Queue.h" diff --git a/dom/workers/WorkerScope.cpp b/dom/workers/WorkerScope.cpp index ed61469c5449..039837ac8857 100644 --- a/dom/workers/WorkerScope.cpp +++ b/dom/workers/WorkerScope.cpp @@ -218,8 +218,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WorkerGlobalScopeBase) NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper) WorkerGlobalScopeBase::WorkerGlobalScopeBase( - NotNull aWorkerPrivate, - UniquePtr aClientSource) + WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource) : mWorkerPrivate(aWorkerPrivate), mClientSource(std::move(aClientSource)), mSerialEventTarget(aWorkerPrivate->HybridEventTarget()) { @@ -781,9 +780,9 @@ NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(DedicatedWorkerGlobalScope, WorkerGlobalScope) DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope( - NotNull aWorkerPrivate, - UniquePtr aClientSource, const nsString& aName) - : WorkerGlobalScope(aWorkerPrivate, std::move(aClientSource)), + WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, + const nsString& aName) + : WorkerGlobalScope(std::move(aWorkerPrivate), std::move(aClientSource)), NamedWorkerGlobalScopeMixin(aName) {} bool DedicatedWorkerGlobalScope::WrapGlobalObject( @@ -955,9 +954,9 @@ void DedicatedWorkerGlobalScope::OnVsync(const VsyncEvent& aVsync) { } SharedWorkerGlobalScope::SharedWorkerGlobalScope( - NotNull aWorkerPrivate, - UniquePtr aClientSource, const nsString& aName) - : WorkerGlobalScope(aWorkerPrivate, std::move(aClientSource)), + WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, + const nsString& aName) + : WorkerGlobalScope(std::move(aWorkerPrivate), std::move(aClientSource)), NamedWorkerGlobalScopeMixin(aName) {} bool SharedWorkerGlobalScope::WrapGlobalObject( @@ -989,10 +988,9 @@ NS_IMPL_ADDREF_INHERITED(ServiceWorkerGlobalScope, WorkerGlobalScope) NS_IMPL_RELEASE_INHERITED(ServiceWorkerGlobalScope, WorkerGlobalScope) ServiceWorkerGlobalScope::ServiceWorkerGlobalScope( - NotNull aWorkerPrivate, - UniquePtr aClientSource, + WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, const ServiceWorkerRegistrationDescriptor& aRegistrationDescriptor) - : WorkerGlobalScope(aWorkerPrivate, std::move(aClientSource)), + : WorkerGlobalScope(std::move(aWorkerPrivate), std::move(aClientSource)), mScope(NS_ConvertUTF8toUTF16(aRegistrationDescriptor.Scope())) // Eagerly create the registration because we will need to receive diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h index 0575a0b4555b..4c66cd2685a4 100644 --- a/dom/workers/WorkerScope.h +++ b/dom/workers/WorkerScope.h @@ -20,6 +20,7 @@ #include "mozilla/dom/ImageBitmapBinding.h" #include "mozilla/dom/ImageBitmapSource.h" #include "mozilla/dom/SafeRefPtr.h" +#include "mozilla/dom/WorkerPrivate.h" #include "nsCOMPtr.h" #include "nsCycleCollectionParticipant.h" #include "nsIGlobalObject.h" @@ -93,7 +94,7 @@ class WorkerGlobalScopeBase : public DOMEventTargetHelper, NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(WorkerGlobalScopeBase, DOMEventTargetHelper) - WorkerGlobalScopeBase(NotNull aWorkerPrivate, + WorkerGlobalScopeBase(WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource); virtual bool WrapGlobalObject(JSContext* aCx, @@ -162,7 +163,7 @@ class WorkerGlobalScopeBase : public DOMEventTargetHelper, protected: ~WorkerGlobalScopeBase(); - const NotNull mWorkerPrivate; + CheckedUnsafePtr mWorkerPrivate; private: RefPtr mConsole; @@ -344,7 +345,7 @@ class DedicatedWorkerGlobalScope final NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED( DedicatedWorkerGlobalScope, WorkerGlobalScope) - DedicatedWorkerGlobalScope(NotNull aWorkerPrivate, + DedicatedWorkerGlobalScope(WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, const nsString& aName); @@ -388,7 +389,7 @@ class SharedWorkerGlobalScope final : public WorkerGlobalScope, public workerinternals::NamedWorkerGlobalScopeMixin { public: - SharedWorkerGlobalScope(NotNull aWorkerPrivate, + SharedWorkerGlobalScope(WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, const nsString& aName); @@ -410,8 +411,7 @@ class ServiceWorkerGlobalScope final : public WorkerGlobalScope { WorkerGlobalScope) ServiceWorkerGlobalScope( - NotNull aWorkerPrivate, - UniquePtr aClientSource, + WorkerPrivate* aWorkerPrivate, UniquePtr aClientSource, const ServiceWorkerRegistrationDescriptor& aRegistrationDescriptor); bool WrapGlobalObject(JSContext* aCx, diff --git a/toolkit/components/extensions/webidl-api/ExtensionAPIRequestForwarder.cpp b/toolkit/components/extensions/webidl-api/ExtensionAPIRequestForwarder.cpp index 99f012801c40..0edae10dfee6 100644 --- a/toolkit/components/extensions/webidl-api/ExtensionAPIRequestForwarder.cpp +++ b/toolkit/components/extensions/webidl-api/ExtensionAPIRequestForwarder.cpp @@ -14,7 +14,7 @@ #include "mozilla/dom/ClonedErrorHolderBinding.h" #include "mozilla/dom/ExtensionBrowserBinding.h" #include "mozilla/dom/FunctionBinding.h" -#include "mozilla/dom/WorkerPrivate.h" +#include "mozilla/dom/WorkerScope.h" #include "mozilla/dom/SerializedStackHolder.h" #include "mozilla/dom/ServiceWorkerInfo.h" #include "mozilla/dom/ServiceWorkerManager.h" diff --git a/toolkit/components/extensions/webidl-api/ExtensionBrowser.cpp b/toolkit/components/extensions/webidl-api/ExtensionBrowser.cpp index ae4143ae68d5..8df9e1fd880b 100644 --- a/toolkit/components/extensions/webidl-api/ExtensionBrowser.cpp +++ b/toolkit/components/extensions/webidl-api/ExtensionBrowser.cpp @@ -8,7 +8,7 @@ #include "mozilla/dom/ExtensionBrowserBinding.h" #include "mozilla/dom/ExtensionPortBinding.h" // ExtensionPortDescriptor -#include "mozilla/dom/WorkerPrivate.h" // GetWorkerPrivateFromContext +#include "mozilla/dom/WorkerScope.h" // GetWorkerPrivateFromContext #include "mozilla/extensions/ExtensionAlarms.h" #include "mozilla/extensions/ExtensionMockAPI.h" #include "mozilla/extensions/ExtensionPort.h"