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_; |