Chromium Code Reviews| Index: content/renderer/service_worker/embedded_worker_dispatcher.h |
| diff --git a/content/renderer/service_worker/embedded_worker_dispatcher.h b/content/renderer/service_worker/embedded_worker_dispatcher.h |
| index e77086f75e42e14132168fb88936cfb869e39884..578ce09ac9083ad92349493be8d695946e4582b5 100644 |
| --- a/content/renderer/service_worker/embedded_worker_dispatcher.h |
| +++ b/content/renderer/service_worker/embedded_worker_dispatcher.h |
| @@ -6,17 +6,26 @@ |
| #define CONTENT_RENDERER_SERVICE_WORKER_EMBEDDED_WORKER_DISPATCHER_H_ |
| #include <map> |
| +#include <memory> |
| #include "base/id_map.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/time/time.h" |
| +#include "content/child/scoped_child_process_reference.h" |
| #include "content/public/common/console_message_level.h" |
| +#include "content/renderer/service_worker/embedded_worker_devtools_agent.h" |
|
horo
2016/08/24 04:59:16
You don't need to include this header file.
shimazu
2016/08/25 05:14:52
Done.
|
| #include "ipc/ipc_listener.h" |
| struct EmbeddedWorkerMsg_StartWorker_Params; |
| class GURL; |
| +namespace blink { |
| + |
| +class WebEmbeddedWorker; |
| + |
| +} // namespace blink |
| + |
| namespace content { |
|
horo
2016/08/24 04:59:16
class EmbeddedWorkerDevToolsAgent;
shimazu
2016/08/25 05:14:52
Done.
|
| // A tiny dispatcher which handles embedded worker start/stop messages. |
| @@ -31,7 +40,23 @@ class EmbeddedWorkerDispatcher : public IPC::Listener { |
| void WorkerContextDestroyed(int embedded_worker_id); |
| private: |
| - class WorkerWrapper; |
| + friend class EmbeddedWorkerInstanceClientImpl; |
| + |
| + // A thin wrapper of WebEmbeddedWorker which also adds and releases process |
| + // references automatically. |
| + class WorkerWrapper { |
| + public: |
| + WorkerWrapper(blink::WebEmbeddedWorker* worker, |
| + int devtools_agent_route_id); |
| + ~WorkerWrapper(); |
| + |
| + blink::WebEmbeddedWorker* worker() { return worker_.get(); } |
| + |
| + private: |
| + ScopedChildProcessReference process_ref_; |
| + std::unique_ptr<blink::WebEmbeddedWorker> worker_; |
| + std::unique_ptr<EmbeddedWorkerDevToolsAgent> dev_tools_agent_; |
| + }; |
| void OnStartWorker(const EmbeddedWorkerMsg_StartWorker_Params& params); |
| void OnStopWorker(int embedded_worker_id); |
| @@ -40,6 +65,9 @@ class EmbeddedWorkerDispatcher : public IPC::Listener { |
| ConsoleMessageLevel level, |
| const std::string& message); |
| + void RegisterWorker(int embedded_worker_id, |
| + std::unique_ptr<WorkerWrapper> wrapper); |
| + |
| IDMap<WorkerWrapper, IDMapOwnPointer> workers_; |
| std::map<int /* embedded_worker_id */, base::TimeTicks> stop_worker_times_; |
| base::WeakPtrFactory<EmbeddedWorkerDispatcher> weak_factory_; |