Chromium Code Reviews| Index: content/browser/service_worker/embedded_worker_instance.h |
| diff --git a/content/browser/service_worker/embedded_worker_instance.h b/content/browser/service_worker/embedded_worker_instance.h |
| index f9d382c27748f208785ccf7bbe00f62f1f5ed4c5..1e6d85663b0d4aa28f375db3ce752c6a7ce4c5ed 100644 |
| --- a/content/browser/service_worker/embedded_worker_instance.h |
| +++ b/content/browser/service_worker/embedded_worker_instance.h |
| @@ -10,6 +10,7 @@ |
| #include "base/basictypes.h" |
| #include "base/callback_forward.h" |
| +#include "base/files/file_path.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/logging.h" |
| #include "base/memory/ref_counted.h" |
| @@ -17,8 +18,7 @@ |
| #include "base/strings/string16.h" |
| #include "content/common/content_export.h" |
| #include "content/common/service_worker/service_worker_status_code.h" |
| - |
| -class GURL; |
| +#include "url/gurl.h" |
| namespace IPC { |
| class Message; |
| @@ -47,6 +47,7 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| virtual ~Listener() {} |
| virtual void OnStarted() = 0; |
| virtual void OnStopped() = 0; |
| + virtual void OnScriptLoaded() {} |
| virtual void OnReportException(const base::string16& error_message, |
| int line_number, |
| int column_number, |
| @@ -97,11 +98,49 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| int worker_devtools_agent_route_id() const { |
| return worker_devtools_agent_route_id_; |
| } |
| + void set_worker_devtools_agent_route_id(int route_id) { |
| + worker_devtools_agent_route_id_ = route_id; |
| + } |
| void AddListener(Listener* listener); |
| void RemoveListener(Listener* listener); |
| private: |
| + class DevToolsManagerBridge : public Listener, |
|
kinuko
2014/05/08 11:17:31
nit: Could be a private inner class (or could be i
horo
2014/05/08 14:17:46
Done.
|
| + public base::RefCounted<DevToolsManagerBridge> { |
|
kinuko
2014/05/08 11:17:31
Does this need to be ref-counted?
horo
2014/05/08 14:17:46
EmbeddedWorkerInstance could be deleted while the
kinuko
2014/05/08 16:34:57
This doesn't necessarily mean we need ref-counting
|
| + public: |
| + DevToolsManagerBridge(int embedded_worker_id, |
| + const base::FilePath& storage_partition_path); |
| + void RegisterToDevToolsManager( |
| + int process_id, |
| + const base::Callback<void(int worker_devtools_agent_route_id, |
| + bool pause_on_start)>& callback); |
| + void set_scope(const GURL& scope) { scope_ = scope; } |
| + |
| + private: |
| + friend class base::RefCounted<DevToolsManagerBridge>; |
| + |
| + virtual ~DevToolsManagerBridge(); |
| + |
| + // EmbeddedWorkerInstance::Listener overrides. |
| + virtual void OnStarted() OVERRIDE; |
| + virtual void OnStopped() OVERRIDE; |
| + virtual void OnScriptLoaded() OVERRIDE; |
| + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
| + |
| + void RegisteredCallback( |
| + const base::Callback<void(int worker_devtools_agent_route_id, |
| + bool pause_on_start)>& callback, |
| + int worker_devtools_agent_route_id, |
| + bool pause_on_start); |
| + |
| + const int embedded_worker_id_; |
| + const base::FilePath storage_partition_path_; |
| + GURL scope_; |
| + int worker_process_id_; |
| + int worker_devtools_agent_route_id_; |
| + }; |
| + |
| typedef ObserverList<Listener> ListenerList; |
| friend class EmbeddedWorkerRegistry; |
| @@ -112,13 +151,16 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| // Constructor is called via EmbeddedWorkerRegistry::CreateWorker(). |
| // This instance holds a ref of |registry|. |
| EmbeddedWorkerInstance(EmbeddedWorkerRegistry* registry, |
| - int embedded_worker_id); |
| + int embedded_worker_id, |
| + const base::FilePath& storage_partition_path); |
| // Called back from EmbeddedWorkerRegistry after Start() passes control to the |
| // UI thread to acquire a reference to the process. |
| - void RecordProcessId(int process_id, |
| - ServiceWorkerStatusCode status, |
| - int worker_devtools_agent_route_id); |
| + void WorkerProcessAllocated( |
| + int process_id, |
| + const base::Callback<void(int worker_devtools_agent_route_id, |
| + bool pause_on_start)>& callback); |
| + void WorkerProcessAllocationFailed(); |
| // Called back from Registry when the worker instance has ack'ed that |
| // it finished loading the script. |
| @@ -172,6 +214,8 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| int thread_id_; |
| int worker_devtools_agent_route_id_; |
| + scoped_refptr<DevToolsManagerBridge> dev_tools_manager_bridge_; |
| + |
| ProcessRefMap process_refs_; |
| ListenerList listener_list_; |