Bug 1119956 derive from DiscardableRunnable instead of CancelableRunnable when Cancel() is not supported r=asuth,sg

Differential Revision: https://phabricator.services.mozilla.com/D98118
This commit is contained in:
Karl Tomlinson
2020-12-03 09:04:44 +00:00
parent b97bce2c9b
commit 7afb800388
12 changed files with 41 additions and 39 deletions

View File

@@ -1060,7 +1060,7 @@ static void AsyncFulfillImageBitmapPromise(Promise* aPromise,
class CreateImageBitmapFromBlobRunnable; class CreateImageBitmapFromBlobRunnable;
class CreateImageBitmapFromBlob final : public CancelableRunnable, class CreateImageBitmapFromBlob final : public DiscardableRunnable,
public imgIContainerCallback, public imgIContainerCallback,
public nsIInputStreamCallback { public nsIInputStreamCallback {
friend class CreateImageBitmapFromBlobRunnable; friend class CreateImageBitmapFromBlobRunnable;
@@ -1093,7 +1093,7 @@ class CreateImageBitmapFromBlob final : public CancelableRunnable,
already_AddRefed<nsIInputStream> aInputStream, already_AddRefed<nsIInputStream> aInputStream,
const Maybe<IntRect>& aCropRect, const Maybe<IntRect>& aCropRect,
nsIEventTarget* aMainThreadEventTarget) nsIEventTarget* aMainThreadEventTarget)
: CancelableRunnable("dom::CreateImageBitmapFromBlob"), : DiscardableRunnable("dom::CreateImageBitmapFromBlob"),
mMutex("dom::CreateImageBitmapFromBlob::mMutex"), mMutex("dom::CreateImageBitmapFromBlob::mMutex"),
mPromise(aPromise), mPromise(aPromise),
mGlobalObject(aGlobal), mGlobalObject(aGlobal),
@@ -1153,7 +1153,7 @@ class CreateImageBitmapFromBlob final : public CancelableRunnable,
void* mThread; void* mThread;
}; };
NS_IMPL_ISUPPORTS_INHERITED(CreateImageBitmapFromBlob, CancelableRunnable, NS_IMPL_ISUPPORTS_INHERITED(CreateImageBitmapFromBlob, DiscardableRunnable,
imgIContainerCallback, nsIInputStreamCallback) imgIContainerCallback, nsIInputStreamCallback)
class CreateImageBitmapFromBlobRunnable : public WorkerRunnable { class CreateImageBitmapFromBlobRunnable : public WorkerRunnable {

View File

@@ -29,7 +29,7 @@ class RemoteLazyInputStream;
namespace { namespace {
class InputStreamCallbackRunnable final : public CancelableRunnable { class InputStreamCallbackRunnable final : public DiscardableRunnable {
public: public:
// Note that the execution can be synchronous in case the event target is // Note that the execution can be synchronous in case the event target is
// null. // null.
@@ -60,7 +60,7 @@ class InputStreamCallbackRunnable final : public CancelableRunnable {
private: private:
InputStreamCallbackRunnable(nsIInputStreamCallback* aCallback, InputStreamCallbackRunnable(nsIInputStreamCallback* aCallback,
RemoteLazyInputStream* aStream) RemoteLazyInputStream* aStream)
: CancelableRunnable("dom::InputStreamCallbackRunnable"), : DiscardableRunnable("dom::InputStreamCallbackRunnable"),
mCallback(aCallback), mCallback(aCallback),
mStream(aStream) { mStream(aStream) {
MOZ_ASSERT(mCallback); MOZ_ASSERT(mCallback);
@@ -71,7 +71,7 @@ class InputStreamCallbackRunnable final : public CancelableRunnable {
RefPtr<RemoteLazyInputStream> mStream; RefPtr<RemoteLazyInputStream> mStream;
}; };
class FileMetadataCallbackRunnable final : public CancelableRunnable { class FileMetadataCallbackRunnable final : public DiscardableRunnable {
public: public:
static void Execute(nsIFileMetadataCallback* aCallback, static void Execute(nsIFileMetadataCallback* aCallback,
nsIEventTarget* aEventTarget, nsIEventTarget* aEventTarget,
@@ -97,7 +97,7 @@ class FileMetadataCallbackRunnable final : public CancelableRunnable {
private: private:
FileMetadataCallbackRunnable(nsIFileMetadataCallback* aCallback, FileMetadataCallbackRunnable(nsIFileMetadataCallback* aCallback,
RemoteLazyInputStream* aStream) RemoteLazyInputStream* aStream)
: CancelableRunnable("dom::FileMetadataCallbackRunnable"), : DiscardableRunnable("dom::FileMetadataCallbackRunnable"),
mCallback(aCallback), mCallback(aCallback),
mStream(aStream) { mStream(aStream) {
MOZ_ASSERT(mCallback); MOZ_ASSERT(mCallback);
@@ -849,7 +849,7 @@ RemoteLazyInputStream::Length(int64_t* aLength) {
namespace { namespace {
class InputStreamLengthCallbackRunnable final : public CancelableRunnable { class InputStreamLengthCallbackRunnable final : public DiscardableRunnable {
public: public:
static void Execute(nsIInputStreamLengthCallback* aCallback, static void Execute(nsIInputStreamLengthCallback* aCallback,
nsIEventTarget* aEventTarget, nsIEventTarget* aEventTarget,
@@ -876,7 +876,7 @@ class InputStreamLengthCallbackRunnable final : public CancelableRunnable {
InputStreamLengthCallbackRunnable(nsIInputStreamLengthCallback* aCallback, InputStreamLengthCallbackRunnable(nsIInputStreamLengthCallback* aCallback,
RemoteLazyInputStream* aStream, RemoteLazyInputStream* aStream,
int64_t aLength) int64_t aLength)
: CancelableRunnable("dom::InputStreamLengthCallbackRunnable"), : DiscardableRunnable("dom::InputStreamLengthCallbackRunnable"),
mCallback(aCallback), mCallback(aCallback),
mStream(aStream), mStream(aStream),
mLength(aLength) { mLength(aLength) {

View File

@@ -19,10 +19,10 @@ namespace {
// This runnable is used in case the last stream is forgotten on the 'wrong' // This runnable is used in case the last stream is forgotten on the 'wrong'
// thread. // thread.
class ShutdownRunnable final : public CancelableRunnable { class ShutdownRunnable final : public DiscardableRunnable {
public: public:
explicit ShutdownRunnable(RemoteLazyInputStreamChild* aActor) explicit ShutdownRunnable(RemoteLazyInputStreamChild* aActor)
: CancelableRunnable("dom::ShutdownRunnable"), mActor(aActor) {} : DiscardableRunnable("dom::ShutdownRunnable"), mActor(aActor) {}
NS_IMETHOD NS_IMETHOD
Run() override { Run() override {
@@ -36,10 +36,10 @@ class ShutdownRunnable final : public CancelableRunnable {
// This runnable is used in case StreamNeeded() has been called on a non-owning // This runnable is used in case StreamNeeded() has been called on a non-owning
// thread. // thread.
class StreamNeededRunnable final : public CancelableRunnable { class StreamNeededRunnable final : public DiscardableRunnable {
public: public:
explicit StreamNeededRunnable(RemoteLazyInputStreamChild* aActor) explicit StreamNeededRunnable(RemoteLazyInputStreamChild* aActor)
: CancelableRunnable("dom::StreamNeededRunnable"), mActor(aActor) {} : DiscardableRunnable("dom::StreamNeededRunnable"), mActor(aActor) {}
NS_IMETHOD NS_IMETHOD
Run() override { Run() override {
@@ -58,11 +58,11 @@ class StreamNeededRunnable final : public CancelableRunnable {
// When the stream has been received from the parent, we inform the // When the stream has been received from the parent, we inform the
// RemoteLazyInputStream. // RemoteLazyInputStream.
class StreamReadyRunnable final : public CancelableRunnable { class StreamReadyRunnable final : public DiscardableRunnable {
public: public:
StreamReadyRunnable(RemoteLazyInputStream* aDestinationStream, StreamReadyRunnable(RemoteLazyInputStream* aDestinationStream,
already_AddRefed<nsIInputStream> aCreatedStream) already_AddRefed<nsIInputStream> aCreatedStream)
: CancelableRunnable("dom::StreamReadyRunnable"), : DiscardableRunnable("dom::StreamReadyRunnable"),
mDestinationStream(aDestinationStream), mDestinationStream(aDestinationStream),
mCreatedStream(std::move(aCreatedStream)) { mCreatedStream(std::move(aCreatedStream)) {
MOZ_ASSERT(mDestinationStream); MOZ_ASSERT(mDestinationStream);
@@ -82,10 +82,10 @@ class StreamReadyRunnable final : public CancelableRunnable {
// This runnable is used in case LengthNeeded() has been called on a non-owning // This runnable is used in case LengthNeeded() has been called on a non-owning
// thread. // thread.
class LengthNeededRunnable final : public CancelableRunnable { class LengthNeededRunnable final : public DiscardableRunnable {
public: public:
explicit LengthNeededRunnable(RemoteLazyInputStreamChild* aActor) explicit LengthNeededRunnable(RemoteLazyInputStreamChild* aActor)
: CancelableRunnable("dom::LengthNeededRunnable"), mActor(aActor) {} : DiscardableRunnable("dom::LengthNeededRunnable"), mActor(aActor) {}
NS_IMETHOD NS_IMETHOD
Run() override { Run() override {
@@ -104,10 +104,10 @@ class LengthNeededRunnable final : public CancelableRunnable {
// When the stream has been received from the parent, we inform the // When the stream has been received from the parent, we inform the
// RemoteLazyInputStream. // RemoteLazyInputStream.
class LengthReadyRunnable final : public CancelableRunnable { class LengthReadyRunnable final : public DiscardableRunnable {
public: public:
LengthReadyRunnable(RemoteLazyInputStream* aDestinationStream, int64_t aSize) LengthReadyRunnable(RemoteLazyInputStream* aDestinationStream, int64_t aSize)
: CancelableRunnable("dom::LengthReadyRunnable"), : DiscardableRunnable("dom::LengthReadyRunnable"),
mDestinationStream(aDestinationStream), mDestinationStream(aDestinationStream),
mSize(aSize) { mSize(aSize) {
MOZ_ASSERT(mDestinationStream); MOZ_ASSERT(mDestinationStream);

View File

@@ -1063,9 +1063,9 @@ class DelayedActionRunnable final : public CancelableRunnable {
* Actor class declarations * Actor class declarations
******************************************************************************/ ******************************************************************************/
// CancelableRunnable is used to make workers happy. // DiscardableRunnable is used to make workers happy.
class BackgroundRequestChild::PreprocessHelper final class BackgroundRequestChild::PreprocessHelper final
: public CancelableRunnable, : public DiscardableRunnable,
public nsIInputStreamCallback, public nsIInputStreamCallback,
public nsIFileMetadataCallback { public nsIFileMetadataCallback {
enum class State { enum class State {
@@ -1096,7 +1096,7 @@ class BackgroundRequestChild::PreprocessHelper final
public: public:
PreprocessHelper(uint32_t aCloneDataIndex, BackgroundRequestChild* aActor) PreprocessHelper(uint32_t aCloneDataIndex, BackgroundRequestChild* aActor)
: CancelableRunnable( : DiscardableRunnable(
"indexedDB::BackgroundRequestChild::PreprocessHelper"), "indexedDB::BackgroundRequestChild::PreprocessHelper"),
mOwningEventTarget(aActor->GetActorEventTarget()), mOwningEventTarget(aActor->GetActorEventTarget()),
mActor(aActor), mActor(aActor),
@@ -2820,7 +2820,7 @@ void BackgroundRequestChild::PreprocessHelper::Finish() {
} }
NS_IMPL_ISUPPORTS_INHERITED(BackgroundRequestChild::PreprocessHelper, NS_IMPL_ISUPPORTS_INHERITED(BackgroundRequestChild::PreprocessHelper,
CancelableRunnable, nsIInputStreamCallback, DiscardableRunnable, nsIInputStreamCallback,
nsIFileMetadataCallback) nsIFileMetadataCallback)
NS_IMETHODIMP NS_IMETHODIMP

View File

@@ -23,9 +23,9 @@
namespace mozilla { namespace mozilla {
namespace dom { namespace dom {
class FlushRejections : public CancelableRunnable { class FlushRejections : public DiscardableRunnable {
public: public:
FlushRejections() : CancelableRunnable("dom::FlushRejections") {} FlushRejections() : DiscardableRunnable("dom::FlushRejections") {}
static void Init() { static void Init() {
if (!sDispatched.init()) { if (!sDispatched.init()) {

View File

@@ -85,10 +85,10 @@ void ReportingObserver::TakeRecords(nsTArray<RefPtr<Report>>& aRecords) {
namespace { namespace {
class ReportRunnable final : public CancelableRunnable { class ReportRunnable final : public DiscardableRunnable {
public: public:
explicit ReportRunnable(nsIGlobalObject* aGlobal) explicit ReportRunnable(nsIGlobalObject* aGlobal)
: CancelableRunnable("ReportRunnable"), mGlobal(aGlobal) {} : DiscardableRunnable("ReportRunnable"), mGlobal(aGlobal) {}
// MOZ_CAN_RUN_SCRIPT_BOUNDARY until Runnable::Run is MOZ_CAN_RUN_SCRIPT. See // MOZ_CAN_RUN_SCRIPT_BOUNDARY until Runnable::Run is MOZ_CAN_RUN_SCRIPT. See
// bug 1535398. // bug 1535398.

View File

@@ -245,10 +245,10 @@ NS_IMPL_ISUPPORTS(WebSocketImpl, nsIInterfaceRequestor, nsIWebSocketListener,
nsIObserver, nsISupportsWeakReference, nsIRequest, nsIObserver, nsISupportsWeakReference, nsIRequest,
nsIEventTarget, nsIWebSocketImpl) nsIEventTarget, nsIWebSocketImpl)
class CallDispatchConnectionCloseEvents final : public CancelableRunnable { class CallDispatchConnectionCloseEvents final : public DiscardableRunnable {
public: public:
explicit CallDispatchConnectionCloseEvents(WebSocketImpl* aWebSocketImpl) explicit CallDispatchConnectionCloseEvents(WebSocketImpl* aWebSocketImpl)
: CancelableRunnable("dom::CallDispatchConnectionCloseEvents"), : DiscardableRunnable("dom::CallDispatchConnectionCloseEvents"),
mWebSocketImpl(aWebSocketImpl) { mWebSocketImpl(aWebSocketImpl) {
aWebSocketImpl->AssertIsOnTargetThread(); aWebSocketImpl->AssertIsOnTargetThread();
} }

View File

@@ -589,7 +589,7 @@ class ChildImpl::ShutdownObserver final : public nsIObserver {
~ShutdownObserver() { AssertIsOnMainThread(); } ~ShutdownObserver() { AssertIsOnMainThread(); }
}; };
class ChildImpl::SendInitBackgroundRunnable final : public CancelableRunnable { class ChildImpl::SendInitBackgroundRunnable final : public DiscardableRunnable {
nsCOMPtr<nsISerialEventTarget> mOwningEventTarget; nsCOMPtr<nsISerialEventTarget> mOwningEventTarget;
RefPtr<StrongWorkerRef> mWorkerRef; RefPtr<StrongWorkerRef> mWorkerRef;
Endpoint<PBackgroundParent> mParent; Endpoint<PBackgroundParent> mParent;
@@ -616,7 +616,8 @@ class ChildImpl::SendInitBackgroundRunnable final : public CancelableRunnable {
Endpoint<PBackgroundParent>&& aParent, Endpoint<PBackgroundParent>&& aParent,
std::function<void(Endpoint<PBackgroundParent>&& aParent)>&& aFunc, std::function<void(Endpoint<PBackgroundParent>&& aParent)>&& aFunc,
unsigned int aThreadLocalIndex) unsigned int aThreadLocalIndex)
: CancelableRunnable("Background::ChildImpl::SendInitBackgroundRunnable"), : DiscardableRunnable(
"Background::ChildImpl::SendInitBackgroundRunnable"),
mOwningEventTarget(GetCurrentSerialEventTarget()), mOwningEventTarget(GetCurrentSerialEventTarget()),
mParent(std::move(aParent)), mParent(std::move(aParent)),
mMutex("SendInitBackgroundRunnable::mMutex"), mMutex("SendInitBackgroundRunnable::mMutex"),

View File

@@ -747,10 +747,11 @@ nsresult CycleCollectedJSContext::NotifyUnhandledRejections::Cancel() {
return NS_OK; return NS_OK;
} }
class FinalizationRegistryCleanup::CleanupRunnable : public CancelableRunnable { class FinalizationRegistryCleanup::CleanupRunnable
: public DiscardableRunnable {
public: public:
explicit CleanupRunnable(FinalizationRegistryCleanup* aCleanupWork) explicit CleanupRunnable(FinalizationRegistryCleanup* aCleanupWork)
: CancelableRunnable("CleanupRunnable"), mCleanupWork(aCleanupWork) {} : DiscardableRunnable("CleanupRunnable"), mCleanupWork(aCleanupWork) {}
// MOZ_CAN_RUN_SCRIPT_BOUNDARY until Runnable::Run is MOZ_CAN_RUN_SCRIPT. See // MOZ_CAN_RUN_SCRIPT_BOUNDARY until Runnable::Run is MOZ_CAN_RUN_SCRIPT. See
// bug 1535398. // bug 1535398.

View File

@@ -117,7 +117,7 @@ struct DeferredFinalizeFunctionHolder {
void* data; void* data;
}; };
class IncrementalFinalizeRunnable : public CancelableRunnable { class IncrementalFinalizeRunnable : public DiscardableRunnable {
typedef AutoTArray<DeferredFinalizeFunctionHolder, 16> DeferredFinalizeArray; typedef AutoTArray<DeferredFinalizeFunctionHolder, 16> DeferredFinalizeArray;
typedef CycleCollectedJSRuntime::DeferredFinalizerTable typedef CycleCollectedJSRuntime::DeferredFinalizerTable
DeferredFinalizerTable; DeferredFinalizerTable;
@@ -1560,7 +1560,7 @@ void CycleCollectedJSRuntime::DumpJSHeap(FILE* aFile) {
IncrementalFinalizeRunnable::IncrementalFinalizeRunnable( IncrementalFinalizeRunnable::IncrementalFinalizeRunnable(
CycleCollectedJSRuntime* aRt, DeferredFinalizerTable& aFinalizers) CycleCollectedJSRuntime* aRt, DeferredFinalizerTable& aFinalizers)
: CancelableRunnable("IncrementalFinalizeRunnable"), : DiscardableRunnable("IncrementalFinalizeRunnable"),
mRuntime(aRt), mRuntime(aRt),
mFinalizeFunctionToRun(0), mFinalizeFunctionToRun(0),
mReleasing(false) { mReleasing(false) {

View File

@@ -1334,10 +1334,10 @@ struct CCGraphDescriber : public LinkedListElement<CCGraphDescriber> {
Type mType; Type mType;
}; };
class LogStringMessageAsync : public CancelableRunnable { class LogStringMessageAsync : public DiscardableRunnable {
public: public:
explicit LogStringMessageAsync(const nsAString& aMsg) explicit LogStringMessageAsync(const nsAString& aMsg)
: mozilla::CancelableRunnable("LogStringMessageAsync"), mMsg(aMsg) {} : mozilla::DiscardableRunnable("LogStringMessageAsync"), mMsg(aMsg) {}
NS_IMETHOD Run() override { NS_IMETHOD Run() override {
nsCOMPtr<nsIConsoleService> cs = nsCOMPtr<nsIConsoleService> cs =

View File

@@ -774,7 +774,7 @@ nsMultiplexInputStream::CloseWithStatus(nsresult aStatus) { return Close(); }
// This class is used to inform nsMultiplexInputStream that it's time to execute // This class is used to inform nsMultiplexInputStream that it's time to execute
// the asyncWait callback. // the asyncWait callback.
class AsyncWaitRunnable final : public CancelableRunnable { class AsyncWaitRunnable final : public DiscardableRunnable {
RefPtr<nsMultiplexInputStream> mStream; RefPtr<nsMultiplexInputStream> mStream;
public: public:
@@ -796,7 +796,7 @@ class AsyncWaitRunnable final : public CancelableRunnable {
private: private:
explicit AsyncWaitRunnable(nsMultiplexInputStream* aStream) explicit AsyncWaitRunnable(nsMultiplexInputStream* aStream)
: CancelableRunnable("AsyncWaitRunnable"), mStream(aStream) { : DiscardableRunnable("AsyncWaitRunnable"), mStream(aStream) {
MOZ_ASSERT(aStream); MOZ_ASSERT(aStream);
} }
}; };