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 6dff7d89d284279025548af45d3d0712476c5e89..b9a5f2becbd5401579b25e5f7ffd6ae69902c282 100644
- --- a/content/public/renderer/content_renderer_client.h
- +++ b/content/public/renderer/content_renderer_client.h
- @@ -407,6 +407,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 15e662c573b71697e982e7dbf60b3564b949e9e3..985000af087d53908fb1b5eee28e4d34e49b2474 100644
- --- a/content/renderer/renderer_blink_platform_impl.cc
- +++ b/content/renderer/renderer_blink_platform_impl.cc
- @@ -896,6 +896,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 c1db7661ae79709afcb7a686a792ba0bbafdc59b..1a2ef563c5393ba5e1e2f0ae49b152555587d324 100644
- --- a/content/renderer/renderer_blink_platform_impl.h
- +++ b/content/renderer/renderer_blink_platform_impl.h
- @@ -195,6 +195,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 1131374e07a14bfb4297b2034b669c6b5afe27d1..0f6cf25c6203c4c2bf28b9f4536a153427841502 100644
- --- a/third_party/blink/public/platform/platform.h
- +++ b/third_party/blink/public/platform/platform.h
- @@ -664,6 +664,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 9866cc85f4d2c9d834538010f8b1ca64efc701b9..5af206ddc527f7d7cf44b6c363d2ede08a36ff55 100644
- --- a/third_party/blink/renderer/core/workers/worker_thread.cc
- +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
- @@ -764,6 +764,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);
-
|