From 13d4638d6c9c3e51b5fbbf9606ae930c346af0af Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 8 Apr 2016 13:12:52 -0700 Subject: [PATCH] Bug 1259338 P1 Ensure that AllowWindowInteractionHandler is released on worker thread. r=khuey --- dom/workers/ServiceWorkerPrivate.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dom/workers/ServiceWorkerPrivate.cpp b/dom/workers/ServiceWorkerPrivate.cpp index 5edd34505b86..a8ec6a82fb50 100644 --- a/dom/workers/ServiceWorkerPrivate.cpp +++ b/dom/workers/ServiceWorkerPrivate.cpp @@ -845,6 +845,15 @@ private: bool WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override; + NS_IMETHOD + Cancel() override + { + // Always ensure the handler is released on the worker thread, even if we + // are cancelled. + mHandler = nullptr; + return WorkerRunnable::Cancel(); + } + RefPtr mHandler; }; @@ -955,6 +964,7 @@ bool ClearWindowAllowedRunnable::WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) { mHandler->ClearWindowAllowed(aWorkerPrivate); + mHandler = nullptr; return true; }