Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / renderer / service_worker / embedded_worker_dispatcher.cc
index 15ff76a..9630f3a 100644 (file)
@@ -52,6 +52,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;
@@ -82,9 +84,21 @@ void EmbeddedWorkerDispatcher::OnStartWorker(
   blink::WebEmbeddedWorkerStartData start_data;
   start_data.scriptURL = params.script_url;
   start_data.userAgent = base::UTF8ToUTF16(GetContentClient()->GetUserAgent());
+  start_data.pauseAfterDownloadMode =
+      params.pause_after_download ?
+          blink::WebEmbeddedWorkerStartData::PauseAfterDownload :
+          blink::WebEmbeddedWorkerStartData::DontPauseAfterDownload;
+  start_data.waitForDebuggerMode =
+      params.wait_for_debugger ?
+          blink::WebEmbeddedWorkerStartData::WaitForDebugger :
+          blink::WebEmbeddedWorkerStartData::DontWaitForDebugger;
+
+  // TODO(michaeln): delete setting this deprecated member once blink
+  // stops reading it.
   start_data.startMode =
-      params.pause_on_start ? blink::WebEmbeddedWorkerStartModePauseOnStart
-                            : blink::WebEmbeddedWorkerStartModeDontPauseOnStart;
+      params.wait_for_debugger ?
+          blink::WebEmbeddedWorkerStartModePauseOnStart :
+          blink::WebEmbeddedWorkerStartModeDontPauseOnStart;
 
   wrapper->worker()->startWorkerContext(start_data);
   workers_.AddWithID(wrapper.release(), params.embedded_worker_id);
@@ -103,4 +117,13 @@ void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) {
   wrapper->worker()->terminateWorkerContext();
 }
 
+void EmbeddedWorkerDispatcher::OnResumeAfterDownload(int embedded_worker_id) {
+  WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id);
+  if (!wrapper) {
+    LOG(WARNING) << "Got OnResumeAfterDownload for nonexistent worker";
+    return;
+  }
+  wrapper->worker()->resumeAfterDownload();
+}
+
 }  // namespace content