12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Cheng Zhao <[email protected]>
- Date: Thu, 20 Sep 2018 17:47:12 -0700
- Subject: worker_context_will_destroy.patch
- This adds a hook for worker context destruction, which we use in Electron to
- shutdown node integration in the worker if relevant.
- An attempt to upstream this was made, but rejected:
- https://chromium-review.googlesource.com/c/chromium/src/+/1954347
- diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
- index 7a2d251ba2d13d0a34df176111e6524a27b87f55..cbbe0fbdd25a0f7859b113fdb3dcd9ce57e597d6 100644
- --- a/content/public/renderer/content_renderer_client.h
- +++ b/content/public/renderer/content_renderer_client.h
- @@ -417,6 +417,11 @@ class CONTENT_EXPORT ContentRendererClient {
- virtual void DidInitializeWorkerContextOnWorkerThread(
- v8::Local<v8::Context> context) {}
-
- + // Notifies that a worker context will be destroyed. This function is called
- + // from the worker thread.
- + virtual void WillDestroyWorkerContextOnWorkerThread(
- + v8::Local<v8::Context> context) {}
- +
- // Overwrites the given URL to use an HTML5 embed if possible.
- // An empty URL is returned if the URL is not overriden.
- virtual GURL OverrideFlashEmbedWithHTML(const GURL& url);
- diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
- index a287771fc347f1636e1252e431149c5bc6737fd4..7fc8bff33b785aa3d42248c22477474e84819dee 100644
- --- a/content/renderer/renderer_blink_platform_impl.cc
- +++ b/content/renderer/renderer_blink_platform_impl.cc
- @@ -890,6 +890,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
- WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread();
- }
-
- +void RendererBlinkPlatformImpl::WorkerContextWillDestroy(
- + const v8::Local<v8::Context>& worker) {
- + GetContentClient()->renderer()->WillDestroyWorkerContextOnWorkerThread(
- + worker);
- +}
- +
- void RendererBlinkPlatformImpl::WorkerContextCreated(
- const v8::Local<v8::Context>& worker) {
- GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread(
- diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h
- index f726c03e34578032f5fc6c9a914ba72858efce89..9c5eeba6e24bb53fc112082c198a103256b06e32 100644
- --- a/content/renderer/renderer_blink_platform_impl.h
- +++ b/content/renderer/renderer_blink_platform_impl.h
- @@ -196,6 +196,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
- void DidStartWorkerThread() override;
- void WillStopWorkerThread() override;
- void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
- + void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) override;
- bool AllowScriptExtensionForServiceWorker(
- const blink::WebSecurityOrigin& script_origin) override;
- blink::ProtocolHandlerSecurityLevel GetProtocolHandlerSecurityLevel(
- diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
- index 8b87ad1fbda13dccee37fd27b3bdec8060caf50a..fec29a007b548b63d5efd6ae40eb7900b99d0d8e 100644
- --- a/third_party/blink/public/platform/platform.h
- +++ b/third_party/blink/public/platform/platform.h
- @@ -662,6 +662,7 @@ class BLINK_PLATFORM_EXPORT Platform {
- virtual void DidStartWorkerThread() {}
- virtual void WillStopWorkerThread() {}
- virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
- + virtual void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) {}
- virtual bool AllowScriptExtensionForServiceWorker(
- const WebSecurityOrigin& script_origin) {
- return false;
- diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc
- index 6e0a669c741753e784fe8a967b1deb125b02d0bf..2449348f956f81845bf314558fa5b7268500adeb 100644
- --- a/third_party/blink/renderer/core/workers/worker_thread.cc
- +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
- @@ -762,6 +762,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
- }
- pause_handle_.reset();
-
- + {
- + v8::HandleScope handle_scope(GetIsolate());
- + Platform::Current()->WorkerContextWillDestroy(
- + GlobalScope()->ScriptController()->GetContext());
- + }
- +
- if (WorkerThreadDebugger* debugger = WorkerThreadDebugger::From(GetIsolate()))
- debugger->WorkerThreadDestroyed(this);
-
|