| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | 2 // Use of this source code is governed by a BSD-style license that can be | 
|  | 3 // found in the LICENSE file. | 
|  | 4 | 
|  | 5 #include "content/browser/service_worker/embedded_worker_registry.h" | 
|  | 6 | 
|  | 7 #include "base/stl_util.h" | 
|  | 8 #include "content/browser/service_worker/embedded_worker_instance.h" | 
|  | 9 #include "content/browser/service_worker/service_worker_context_core.h" | 
|  | 10 #include "content/common/service_worker_messages.h" | 
|  | 11 #include "ipc/ipc_message.h" | 
|  | 12 #include "ipc/ipc_sender.h" | 
|  | 13 | 
|  | 14 namespace content { | 
|  | 15 | 
|  | 16 EmbeddedWorkerRegistry::EmbeddedWorkerRegistry( | 
|  | 17     base::WeakPtr<ServiceWorkerContextCore> context) | 
|  | 18     : context_(context), | 
|  | 19       next_embedded_worker_id_(0) {} | 
|  | 20 | 
|  | 21 scoped_ptr<EmbeddedWorkerInstance> EmbeddedWorkerRegistry::CreateWorker() { | 
|  | 22   scoped_ptr<EmbeddedWorkerInstance> worker( | 
|  | 23       new EmbeddedWorkerInstance(this, next_embedded_worker_id_)); | 
|  | 24   worker_map_[next_embedded_worker_id_++] = worker.get(); | 
|  | 25   return worker.Pass(); | 
|  | 26 } | 
|  | 27 | 
|  | 28 void EmbeddedWorkerRegistry::RemoveWorker(int embedded_worker_id) { | 
|  | 29   DCHECK(ContainsKey(worker_map_, embedded_worker_id)); | 
|  | 30   worker_map_.erase(embedded_worker_id); | 
|  | 31 } | 
|  | 32 | 
|  | 33 bool EmbeddedWorkerRegistry::StartWorker( | 
|  | 34     int process_id, | 
|  | 35     int embedded_worker_id, | 
|  | 36     int64 service_worker_version_id, | 
|  | 37     const GURL& script_url) { | 
|  | 38   return Send(process_id, | 
|  | 39               new ServiceWorkerMsg_StartWorker(embedded_worker_id, | 
|  | 40                                                service_worker_version_id, | 
|  | 41                                                script_url)); | 
|  | 42 } | 
|  | 43 | 
|  | 44 bool EmbeddedWorkerRegistry::StopWorker(int process_id, | 
|  | 45                                         int embedded_worker_id) { | 
|  | 46   return Send(process_id, | 
|  | 47               new ServiceWorkerMsg_TerminateWorker(embedded_worker_id)); | 
|  | 48 } | 
|  | 49 | 
|  | 50 void EmbeddedWorkerRegistry::AddChildProcessSender( | 
|  | 51     int process_id, IPC::Sender* sender) { | 
|  | 52   process_sender_map_[process_id] = sender; | 
|  | 53 } | 
|  | 54 | 
|  | 55 void EmbeddedWorkerRegistry::RemoveChildProcessSender(int process_id) { | 
|  | 56   process_sender_map_.erase(process_id); | 
|  | 57 } | 
|  | 58 | 
|  | 59 EmbeddedWorkerRegistry::~EmbeddedWorkerRegistry() {} | 
|  | 60 | 
|  | 61 bool EmbeddedWorkerRegistry::Send(int process_id, IPC::Message* message) { | 
|  | 62   if (!context_) | 
|  | 63     return false; | 
|  | 64   ProcessToSenderMap::iterator found = process_sender_map_.find(process_id); | 
|  | 65   if (found == process_sender_map_.end()) | 
|  | 66     return false; | 
|  | 67   return found->second->Send(message); | 
|  | 68 } | 
|  | 69 | 
|  | 70 }  // namespace content | 
| OLD | NEW | 
|---|