Index: content/browser/shared_worker/shared_worker_host.cc |
diff --git a/content/browser/shared_worker/shared_worker_host.cc b/content/browser/shared_worker/shared_worker_host.cc |
index 78ffb4b5cb32015291ff42d37120ba44140de1c5..acca666665a4e2ab0901f7be3fd621fefd9bae43 100644 |
--- a/content/browser/shared_worker/shared_worker_host.cc |
+++ b/content/browser/shared_worker/shared_worker_host.cc |
@@ -5,16 +5,19 @@ |
#include "content/browser/shared_worker/shared_worker_host.h" |
#include "base/metrics/histogram.h" |
+#include "content/browser/devtools/shared_worker_devtools_manager.h" |
#include "content/browser/frame_host/render_frame_host_delegate.h" |
#include "content/browser/frame_host/render_frame_host_impl.h" |
#include "content/browser/message_port_service.h" |
#include "content/browser/shared_worker/shared_worker_instance.h" |
#include "content/browser/shared_worker/shared_worker_message_filter.h" |
+#include "content/browser/shared_worker/shared_worker_service_impl.h" |
#include "content/browser/worker_host/worker_document_set.h" |
#include "content/common/view_messages.h" |
#include "content/common/worker_messages.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/content_browser_client.h" |
+#include "content/public/browser/render_process_host.h" |
#include "content/public/common/content_client.h" |
namespace content { |
@@ -28,13 +31,27 @@ void WorkerCrashCallback(int render_process_unique_id, int render_frame_id) { |
host->delegate()->WorkerCrashed(host); |
} |
+void NotifyWorkerScriptLoadedOnUI(int worker_process_id, int worker_route_id) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ SharedWorkerDevToolsManager::GetInstance()->WorkerContextStarted( |
+ worker_process_id, worker_route_id); |
+} |
+ |
+void NotifyWorkerDestroyedOnUI(int worker_process_id, int worker_route_id) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ SharedWorkerDevToolsManager::GetInstance()->WorkerDestroyed(worker_process_id, |
+ worker_route_id); |
+} |
+ |
} // namespace |
-SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance) |
+SharedWorkerHost::SharedWorkerHost(SharedWorkerInstance* instance, |
+ SharedWorkerMessageFilter* filter) |
: instance_(instance), |
worker_document_set_(new WorkerDocumentSet()), |
- container_render_filter_(NULL), |
- worker_route_id_(MSG_ROUTING_NONE), |
+ container_render_filter_(filter), |
+ worker_process_id_(filter->render_process_id()), |
+ worker_route_id_(filter->GetNextRoutingID()), |
load_failed_(false), |
closed_(false), |
creation_time_(base::TimeTicks::Now()) { |
@@ -60,6 +77,13 @@ SharedWorkerHost::~SharedWorkerHost() { |
parent_iter->render_frame_id())); |
} |
} |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind( |
+ &NotifyWorkerDestroyedOnUI, worker_process_id_, worker_route_id_)); |
+ SharedWorkerServiceImpl::GetInstance()->NotifyWorkerDestroyed( |
+ worker_process_id_, worker_route_id_); |
} |
bool SharedWorkerHost::Send(IPC::Message* message) { |
@@ -70,17 +94,13 @@ bool SharedWorkerHost::Send(IPC::Message* message) { |
return container_render_filter_->Send(message); |
} |
-void SharedWorkerHost::Init(SharedWorkerMessageFilter* filter) { |
- CHECK(instance_); |
- DCHECK(worker_route_id_ == MSG_ROUTING_NONE); |
- container_render_filter_ = filter; |
- worker_route_id_ = filter->GetNextRoutingID(); |
- |
+void SharedWorkerHost::Start(bool pause_on_start) { |
WorkerProcessMsg_CreateWorker_Params params; |
params.url = instance_->url(); |
params.name = instance_->name(); |
params.content_security_policy = instance_->content_security_policy(); |
params.security_policy_type = instance_->security_policy_type(); |
+ params.pause_on_start = pause_on_start; |
params.route_id = worker_route_id_; |
Send(new WorkerProcessMsg_CreateWorker(params)); |
@@ -143,9 +163,13 @@ void SharedWorkerHost::WorkerContextDestroyed() { |
} |
void SharedWorkerHost::WorkerScriptLoaded() { |
- // TODO(horo): implement this. |
UMA_HISTOGRAM_TIMES("SharedWorker.TimeToScriptLoaded", |
base::TimeTicks::Now() - creation_time_); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind( |
+ &NotifyWorkerScriptLoadedOnUI, worker_process_id_, worker_route_id_)); |
} |
void SharedWorkerHost::WorkerScriptLoadFailed() { |