Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1214)

Unified Diff: content/browser/service_worker/embedded_worker_registry.cc

Issue 118103002: Add IPC stubs between browser and ServiceWorker's worker context in the child process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 f8f0fbe7d5f4df04bbef97feb3946a26aaa77975..2147c4f61c59578a2ea5e71261ed00bd15c01806 100644
--- a/content/browser/service_worker/embedded_worker_registry.cc
+++ b/content/browser/service_worker/embedded_worker_registry.cc
@@ -25,18 +25,13 @@ scoped_ptr<EmbeddedWorkerInstance> EmbeddedWorkerRegistry::CreateWorker() {
return worker.Pass();
}
-void EmbeddedWorkerRegistry::RemoveWorker(int embedded_worker_id) {
- DCHECK(ContainsKey(worker_map_, embedded_worker_id));
- worker_map_.erase(embedded_worker_id);
-}
-
bool EmbeddedWorkerRegistry::StartWorker(
int process_id,
int embedded_worker_id,
int64 service_worker_version_id,
const GURL& script_url) {
return Send(process_id,
- new ServiceWorkerMsg_StartWorker(embedded_worker_id,
+ new EmbeddedWorkerMsg_StartWorker(embedded_worker_id,
service_worker_version_id,
script_url));
}
@@ -44,16 +39,49 @@ bool EmbeddedWorkerRegistry::StartWorker(
bool EmbeddedWorkerRegistry::StopWorker(int process_id,
int embedded_worker_id) {
return Send(process_id,
- new ServiceWorkerMsg_TerminateWorker(embedded_worker_id));
+ new EmbeddedWorkerMsg_StopWorker(embedded_worker_id));
+}
+
+void EmbeddedWorkerRegistry::OnWorkerStarted(
+ int process_id, int thread_id, int embedded_worker_id) {
+ DCHECK(!ContainsKey(worker_process_map_, process_id));
+ WorkerInstanceMap::iterator found = worker_map_.find(embedded_worker_id);
+ if (found == worker_map_.end()) {
+ LOG(ERROR) << "Worker " << embedded_worker_id << " not registered";
+ return;
+ }
+ worker_process_map_[process_id] = embedded_worker_id;
+ DCHECK_EQ(found->second->process_id(), process_id);
+ found->second->OnStarted(thread_id);
+}
+
+void EmbeddedWorkerRegistry::OnWorkerStopped(
+ int process_id, int embedded_worker_id) {
+ WorkerInstanceMap::iterator found = worker_map_.find(embedded_worker_id);
+ if (found == worker_map_.end()) {
+ LOG(ERROR) << "Worker " << embedded_worker_id << " not registered";
+ return;
+ }
+ DCHECK_EQ(found->second->process_id(), process_id);
+ worker_process_map_.erase(process_id);
+ found->second->OnStopped();
}
void EmbeddedWorkerRegistry::AddChildProcessSender(
int process_id, IPC::Sender* sender) {
process_sender_map_[process_id] = sender;
+ DCHECK(!ContainsKey(worker_process_map_, process_id));
}
void EmbeddedWorkerRegistry::RemoveChildProcessSender(int process_id) {
process_sender_map_.erase(process_id);
+ std::map<int, int>::iterator found = worker_process_map_.find(process_id);
+ if (found != worker_process_map_.end()) {
+ int embedded_worker_id = found->second;
+ DCHECK(ContainsKey(worker_map_, embedded_worker_id));
+ worker_map_[embedded_worker_id]->OnStopped();
+ worker_process_map_.erase(found);
+ }
}
EmbeddedWorkerRegistry::~EmbeddedWorkerRegistry() {}
@@ -67,4 +95,11 @@ bool EmbeddedWorkerRegistry::Send(int process_id, IPC::Message* message) {
return found->second->Send(message);
}
+void EmbeddedWorkerRegistry::RemoveWorker(int process_id,
+ int embedded_worker_id) {
+ DCHECK(ContainsKey(worker_map_, embedded_worker_id));
+ worker_map_.erase(embedded_worker_id);
+ worker_process_map_.erase(process_id);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698