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 eb8968c2a86102d0d3a21f07c394f1c360083c6c..025ef3f70a5ae34faf8c6013fbfba171c7f501ac 100644
- --- a/content/public/renderer/content_renderer_client.h
- +++ b/content/public/renderer/content_renderer_client.h
- @@ -356,6 +356,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 030fd7ed2ea675e42e7894b1d89e636f5f5b85a6..998fe8b45959b8cfd91a1ed4f75f5946adf61537 100644
- --- a/content/renderer/renderer_blink_platform_impl.cc
- +++ b/content/renderer/renderer_blink_platform_impl.cc
- @@ -950,6 +950,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 8cbfe0a939e97de8dd8d4b5e4d741fb46e94fd45..2bc2ef61890a4c189613ae8a3f61c746ffc5d310 100644
- --- a/content/renderer/renderer_blink_platform_impl.h
- +++ b/content/renderer/renderer_blink_platform_impl.h
- @@ -208,6 +208,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 ced2c8e433d5b807bd4f1aa44c6af53e93261c23..53b1ebb708e2332e38090d1adba88dbe850bf02d 100644
- --- a/third_party/blink/public/platform/platform.h
- +++ b/third_party/blink/public/platform/platform.h
- @@ -716,6 +716,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 2406a8b438de5f01f5354e08bcfc8810238b1bea..e7a60f6cae0fabeac6a5adec633ad5f45d43ef33 100644
- --- a/third_party/blink/renderer/core/workers/worker_thread.cc
- +++ b/third_party/blink/renderer/core/workers/worker_thread.cc
- @@ -731,6 +731,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
- nested_runner_->QuitNow();
- }
-
- + {
- + v8::HandleScope handle_scope(GetIsolate());
- + Platform::Current()->WorkerContextWillDestroy(
- + GlobalScope()->ScriptController()->GetContext());
- + }
- +
- if (WorkerThreadDebugger* debugger = WorkerThreadDebugger::From(GetIsolate()))
- debugger->WorkerThreadDestroyed(this);
-
|