diff --git a/dom/quota/OriginOperationBase.cpp b/dom/quota/OriginOperationBase.cpp index eb074d896b02..36dc06d6a482 100644 --- a/dom/quota/OriginOperationBase.cpp +++ b/dom/quota/OriginOperationBase.cpp @@ -44,8 +44,7 @@ OriginOperationBase::OriginOperationBase( MovingNotNull>&& aQuotaManager, const char* aName) : BackgroundThreadObject(GetCurrentSerialEventTarget()), mQuotaManager(std::move(aQuotaManager)), - mResultCode(NS_OK), - mActorDestroyed(false) + mResultCode(NS_OK) #ifdef QM_COLLECTING_OPERATION_TELEMETRY , mName(aName) @@ -54,10 +53,7 @@ OriginOperationBase::OriginOperationBase( AssertIsOnOwningThread(); } -OriginOperationBase::~OriginOperationBase() { - AssertIsOnOwningThread(); - MOZ_ASSERT(mActorDestroyed); -} +OriginOperationBase::~OriginOperationBase() { AssertIsOnOwningThread(); } void OriginOperationBase::RunImmediately() { AssertIsOnOwningThread(); diff --git a/dom/quota/OriginOperationBase.h b/dom/quota/OriginOperationBase.h index 2f5db929bd54..0c48dcf25661 100644 --- a/dom/quota/OriginOperationBase.h +++ b/dom/quota/OriginOperationBase.h @@ -29,8 +29,6 @@ class OriginOperationBase : public BackgroundThreadObject, nsresult mResultCode; private: - bool mActorDestroyed; - #ifdef QM_COLLECTING_OPERATION_TELEMETRY const char* mName = nullptr; #endif @@ -38,18 +36,6 @@ class OriginOperationBase : public BackgroundThreadObject, public: NS_INLINE_DECL_REFCOUNTING(OriginOperationBase) - void NoteActorDestroyed() { - AssertIsOnOwningThread(); - - mActorDestroyed = true; - } - - bool IsActorDestroyed() const { - AssertIsOnOwningThread(); - - return mActorDestroyed; - } - #ifdef QM_COLLECTING_OPERATION_TELEMETRY const char* Name() const { return mName; } #endif diff --git a/dom/quota/OriginOperations.cpp b/dom/quota/OriginOperations.cpp index 6c821e749ae5..3c887d01acc4 100644 --- a/dom/quota/OriginOperations.cpp +++ b/dom/quota/OriginOperations.cpp @@ -962,10 +962,6 @@ nsresult FinalizeOriginEvictionOp::DoDirectoryWork( void FinalizeOriginEvictionOp::UnblockOpen() { AssertIsOnOwningThread(); -#ifdef DEBUG - NoteActorDestroyed(); -#endif - for (const auto& lock : mLocks) { lock->Drop(); } @@ -1010,11 +1006,7 @@ nsresult SaveOriginAccessTimeOp::DoDirectoryWork(QuotaManager& aQuotaManager) { return NS_OK; } -void SaveOriginAccessTimeOp::SendResults() { -#ifdef DEBUG - NoteActorDestroyed(); -#endif -} +void SaveOriginAccessTimeOp::SendResults() {} void SaveOriginAccessTimeOp::CloseDirectory() { AssertIsOnOwningThread(); diff --git a/dom/quota/QuotaRequestBase.cpp b/dom/quota/QuotaRequestBase.cpp index 092072b8eeb2..1cf9ed14bdf1 100644 --- a/dom/quota/QuotaRequestBase.cpp +++ b/dom/quota/QuotaRequestBase.cpp @@ -11,6 +11,11 @@ namespace mozilla::dom::quota { +QuotaRequestBase::~QuotaRequestBase() { + AssertIsOnOwningThread(); + MOZ_ASSERT(mActorDestroyed); +} + void QuotaRequestBase::SendResults() { AssertIsOnOwningThread(); diff --git a/dom/quota/QuotaRequestBase.h b/dom/quota/QuotaRequestBase.h index e5db95f8c9dc..20007624eb22 100644 --- a/dom/quota/QuotaRequestBase.h +++ b/dom/quota/QuotaRequestBase.h @@ -19,7 +19,22 @@ class QuotaRequestBase : public NormalOriginOperationBase, protected: QuotaRequestBase(MovingNotNull> aQuotaManager, const char* aName) - : NormalOriginOperationBase(std::move(aQuotaManager), aName) {} + : NormalOriginOperationBase(std::move(aQuotaManager), aName), + mActorDestroyed(false) {} + + virtual ~QuotaRequestBase(); + + void NoteActorDestroyed() { + AssertIsOnOwningThread(); + + mActorDestroyed = true; + } + + bool IsActorDestroyed() const { + AssertIsOnOwningThread(); + + return mActorDestroyed; + } // Subclasses use this override to set the IPDL response value. virtual void GetResponse(RequestResponse& aResponse) = 0; @@ -29,6 +44,8 @@ class QuotaRequestBase : public NormalOriginOperationBase, // IPDL methods. virtual void ActorDestroy(ActorDestroyReason aWhy) override; + + bool mActorDestroyed; }; } // namespace mozilla::dom::quota diff --git a/dom/quota/QuotaUsageRequestBase.cpp b/dom/quota/QuotaUsageRequestBase.cpp index 29529ebcad64..0c4907bc0ee5 100644 --- a/dom/quota/QuotaUsageRequestBase.cpp +++ b/dom/quota/QuotaUsageRequestBase.cpp @@ -11,6 +11,11 @@ namespace mozilla::dom::quota { +QuotaUsageRequestBase::~QuotaUsageRequestBase() { + AssertIsOnOwningThread(); + MOZ_ASSERT(mActorDestroyed); +} + void QuotaUsageRequestBase::SendResults() { AssertIsOnOwningThread(); diff --git a/dom/quota/QuotaUsageRequestBase.h b/dom/quota/QuotaUsageRequestBase.h index fbd34da5762b..01d14776408f 100644 --- a/dom/quota/QuotaUsageRequestBase.h +++ b/dom/quota/QuotaUsageRequestBase.h @@ -19,7 +19,22 @@ class QuotaUsageRequestBase : public NormalOriginOperationBase, protected: QuotaUsageRequestBase(MovingNotNull> aQuotaManager, const char* aName) - : NormalOriginOperationBase(std::move(aQuotaManager), aName) {} + : NormalOriginOperationBase(std::move(aQuotaManager), aName), + mActorDestroyed(false) {} + + virtual ~QuotaUsageRequestBase(); + + void NoteActorDestroyed() { + AssertIsOnOwningThread(); + + mActorDestroyed = true; + } + + bool IsActorDestroyed() const { + AssertIsOnOwningThread(); + + return mActorDestroyed; + } // Subclasses use this override to set the IPDL response value. virtual void GetResponse(UsageRequestResponse& aResponse) = 0; @@ -31,6 +46,8 @@ class QuotaUsageRequestBase : public NormalOriginOperationBase, void ActorDestroy(ActorDestroyReason aWhy) override; mozilla::ipc::IPCResult RecvCancel() final; + + bool mActorDestroyed; }; } // namespace mozilla::dom::quota diff --git a/dom/quota/ResolvableNormalOriginOp.h b/dom/quota/ResolvableNormalOriginOp.h index 54e80bc83e62..09df6f5f6821 100644 --- a/dom/quota/ResolvableNormalOriginOp.h +++ b/dom/quota/ResolvableNormalOriginOp.h @@ -37,10 +37,6 @@ class ResolvableNormalOriginOp : public NormalOriginOperationBase { private: void SendResults() override { -#ifdef DEBUG - NoteActorDestroyed(); -#endif - if (Canceled()) { mResultCode = NS_ERROR_FAILURE; }