Index: content/renderer/service_worker/embedded_worker_dispatcher.cc |
diff --git a/content/renderer/service_worker/embedded_worker_dispatcher.cc b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
index c99168cd0cfb0616ea0b9b1d969be6447c2fb81e..74d711d54e1a91294ef8ac88d9d28becb024f8dd 100644 |
--- a/content/renderer/service_worker/embedded_worker_dispatcher.cc |
+++ b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
@@ -53,6 +53,8 @@ bool EmbeddedWorkerDispatcher::OnMessageReceived( |
IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerDispatcher, message) |
IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorker) |
IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorker) |
+ IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_ResumeAfterDownload, |
+ OnResumeAfterDownload) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
return handled; |
@@ -97,6 +99,10 @@ void EmbeddedWorkerDispatcher::OnStartWorker( |
blink::WebEmbeddedWorkerStartData::DontWaitForDebugger; |
start_data.v8CacheOptions = |
static_cast<blink::WebSettings::V8CacheOptions>(params.v8_cache_options); |
+ start_data.pauseAfterDownloadMode = |
+ params.pause_after_download |
+ ? blink::WebEmbeddedWorkerStartData::PauseAfterDownload |
+ : blink::WebEmbeddedWorkerStartData::DontPauseAfterDownload; |
wrapper->worker()->startWorkerContext(start_data); |
workers_.AddWithID(wrapper.release(), params.embedded_worker_id); |
@@ -117,4 +123,15 @@ void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) { |
wrapper->worker()->terminateWorkerContext(); |
} |
+void EmbeddedWorkerDispatcher::OnResumeAfterDownload(int embedded_worker_id) { |
+ TRACE_EVENT0("ServiceWorker", |
+ "EmbeddedWorkerDispatcher::OnResumeAfterDownload"); |
+ WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); |
+ if (!wrapper) { |
+ LOG(WARNING) << "Got OnResumeAfterDownload for nonexistent worker"; |
+ return; |
+ } |
+ wrapper->worker()->resumeAfterDownload(); |
+} |
+ |
} // namespace content |