diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 15:11:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 15:11:27 +0000 |
commit | f3bcaf9f88aad2c423ebcd61121562f9834187d4 (patch) | |
tree | f22238c29b57707b645a350940e3e9bdf3ce1f5d /dom/webscheduling | |
parent | Adding debian version 115.7.0esr-1~deb12u1. (diff) | |
download | firefox-esr-f3bcaf9f88aad2c423ebcd61121562f9834187d4.tar.xz firefox-esr-f3bcaf9f88aad2c423ebcd61121562f9834187d4.zip |
Merging upstream version 115.8.0esr.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/webscheduling')
-rw-r--r-- | dom/webscheduling/WebTaskScheduler.h | 2 | ||||
-rw-r--r-- | dom/webscheduling/WebTaskSchedulerWorker.cpp | 13 | ||||
-rw-r--r-- | dom/webscheduling/WebTaskSchedulerWorker.h | 2 |
3 files changed, 16 insertions, 1 deletions
diff --git a/dom/webscheduling/WebTaskScheduler.h b/dom/webscheduling/WebTaskScheduler.h index fcddd09d36..92e0bb6a44 100644 --- a/dom/webscheduling/WebTaskScheduler.h +++ b/dom/webscheduling/WebTaskScheduler.h @@ -113,7 +113,7 @@ class WebTaskScheduler : public nsWrapperCache, public SupportsWeakPtr { WebTask* GetNextTask() const; - void Disconnect(); + virtual void Disconnect(); void RunTaskSignalPriorityChange(TaskSignal* aTaskSignal); diff --git a/dom/webscheduling/WebTaskSchedulerWorker.cpp b/dom/webscheduling/WebTaskSchedulerWorker.cpp index 89fbb6169f..479d12cf7b 100644 --- a/dom/webscheduling/WebTaskSchedulerWorker.cpp +++ b/dom/webscheduling/WebTaskSchedulerWorker.cpp @@ -36,6 +36,9 @@ bool WebTaskWorkerRunnable::WorkerRun(JSContext* aCx, nsresult WebTaskSchedulerWorker::SetTimeoutForDelayedTask(WebTask* aTask, uint64_t aDelay) { + if (!mWorkerPrivate) { + return NS_ERROR_UNEXPECTED; + } JSContext* cx = nsContentUtils::GetCurrentJSContext(); if (!cx) { return NS_ERROR_UNEXPECTED; @@ -52,8 +55,18 @@ nsresult WebTaskSchedulerWorker::SetTimeoutForDelayedTask(WebTask* aTask, } bool WebTaskSchedulerWorker::DispatchEventLoopRunnable() { + if (!mWorkerPrivate) { + return false; + } RefPtr<WebTaskWorkerRunnable> runnable = new WebTaskWorkerRunnable(mWorkerPrivate, this); return runnable->Dispatch(); } + +void WebTaskSchedulerWorker::Disconnect() { + if (mWorkerPrivate) { + mWorkerPrivate = nullptr; + } + WebTaskScheduler::Disconnect(); +} } // namespace mozilla::dom diff --git a/dom/webscheduling/WebTaskSchedulerWorker.h b/dom/webscheduling/WebTaskSchedulerWorker.h index 4af987736e..b27b1250ff 100644 --- a/dom/webscheduling/WebTaskSchedulerWorker.h +++ b/dom/webscheduling/WebTaskSchedulerWorker.h @@ -34,6 +34,8 @@ class WebTaskSchedulerWorker final : public WebTaskScheduler { public: explicit WebTaskSchedulerWorker(WorkerPrivate* aWorkerPrivate); + void Disconnect() override; + private: ~WebTaskSchedulerWorker() = default; |