| Index: content/browser/service_worker/embedded_worker_registry.cc
|
| diff --git a/content/browser/service_worker/embedded_worker_registry.cc b/content/browser/service_worker/embedded_worker_registry.cc
|
| index d10f5539c56574c6e8563f4b0911c36d518a78e1..82b9bb0397b63b2bfba37239102f9b26975012ac 100644
|
| --- a/content/browser/service_worker/embedded_worker_registry.cc
|
| +++ b/content/browser/service_worker/embedded_worker_registry.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/bind_helpers.h"
|
| #include "base/stl_util.h"
|
| +#include "content/browser/renderer_host/render_widget_helper.h"
|
| #include "content/browser/service_worker/embedded_worker_instance.h"
|
| #include "content/browser/service_worker/service_worker_context_core.h"
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| @@ -38,17 +39,20 @@ void EmbeddedWorkerRegistry::StartWorker(const std::vector<int>& process_ids,
|
| callback.Run(SERVICE_WORKER_ERROR_ABORT);
|
| return;
|
| }
|
| + scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
|
| + new EmbeddedWorkerMsg_StartWorker_Params());
|
| + params->embedded_worker_id = embedded_worker_id;
|
| + params->service_worker_version_id = service_worker_version_id;
|
| + params->scope = scope;
|
| + params->script_url = script_url;
|
| + params->worker_devtools_agent_route_id = MSG_ROUTING_NONE;
|
| context_->process_manager()->AllocateWorkerProcess(
|
| process_ids,
|
| script_url,
|
| base::Bind(&EmbeddedWorkerRegistry::StartWorkerWithProcessId,
|
| this,
|
| embedded_worker_id,
|
| - base::Passed(make_scoped_ptr(new EmbeddedWorkerMsg_StartWorker(
|
| - embedded_worker_id,
|
| - service_worker_version_id,
|
| - scope,
|
| - script_url))),
|
| + base::Passed(¶ms),
|
| callback));
|
| }
|
|
|
| @@ -174,7 +178,7 @@ EmbeddedWorkerRegistry::~EmbeddedWorkerRegistry() {
|
|
|
| void EmbeddedWorkerRegistry::StartWorkerWithProcessId(
|
| int embedded_worker_id,
|
| - scoped_ptr<EmbeddedWorkerMsg_StartWorker> message,
|
| + scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params,
|
| const StatusCallback& callback,
|
| ServiceWorkerStatusCode status,
|
| int process_id) {
|
| @@ -188,7 +192,16 @@ void EmbeddedWorkerRegistry::StartWorkerWithProcessId(
|
| callback.Run(SERVICE_WORKER_ERROR_ABORT);
|
| return;
|
| }
|
| - worker->second->RecordProcessId(process_id, status);
|
| + if (status == SERVICE_WORKER_OK) {
|
| + // Gets the new routing id for the renderer process.
|
| + scoped_refptr<RenderWidgetHelper> helper(
|
| + RenderWidgetHelper::FromProcessHostID(process_id));
|
| + // |helper| may be NULL in unittest.
|
| + params->worker_devtools_agent_route_id =
|
| + helper ? helper->GetNextRoutingID() : MSG_ROUTING_NONE;
|
| + }
|
| + worker->second->RecordProcessId(
|
| + process_id, status, params->worker_devtools_agent_route_id);
|
|
|
| if (status != SERVICE_WORKER_OK) {
|
| callback.Run(status);
|
| @@ -198,7 +211,7 @@ void EmbeddedWorkerRegistry::StartWorkerWithProcessId(
|
| // is created, and keep an entry in process_sender_map_ for its whole
|
| // lifetime.
|
| DCHECK(ContainsKey(process_sender_map_, process_id));
|
| - callback.Run(Send(process_id, message.release()));
|
| + callback.Run(Send(process_id, new EmbeddedWorkerMsg_StartWorker(*params)));
|
| }
|
|
|
| ServiceWorkerStatusCode EmbeddedWorkerRegistry::Send(
|
|
|