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..3226fbfb26faa4f9b410a38cff87c33391182b36 100644 |
| --- a/content/browser/service_worker/embedded_worker_instance.h |
| +++ b/content/browser/service_worker/embedded_worker_instance.h |
| @@ -17,8 +17,9 @@ |
| #include "base/strings/string16.h" |
| #include "content/common/content_export.h" |
| #include "content/common/service_worker/service_worker_status_code.h" |
| +#include "url/gurl.h" |
| -class GURL; |
| +struct EmbeddedWorkerMsg_StartWorker_Params; |
| namespace IPC { |
| class Message; |
| @@ -27,12 +28,14 @@ class Message; |
| namespace content { |
| class EmbeddedWorkerRegistry; |
| +class ServiceWorkerContextCore; |
| struct ServiceWorkerFetchRequest; |
| // This gives an interface to control one EmbeddedWorker instance, which |
| // may be 'in-waiting' or running in one of the child processes added by |
| // AddProcessReference(). |
| -class CONTENT_EXPORT EmbeddedWorkerInstance { |
| +class CONTENT_EXPORT EmbeddedWorkerInstance |
| + : NON_EXPORTED_BASE(public base::SupportsWeakPtr<EmbeddedWorkerInstance>) { |
|
kinuko
2014/05/13 05:45:19
Can we not inherit from SupportsWeakPtr but use We
horo
2014/05/13 09:11:21
Done.
|
| public: |
| typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback; |
| enum Status { |
| @@ -69,7 +72,6 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| // if necessary and the IPC to evaluate the worker's script is sent. |
| // Observer::OnStarted() is run when the worker is actually started. |
| void Start(int64 service_worker_version_id, |
| - const GURL& scope, |
| const GURL& script_url, |
| const std::vector<int>& possible_process_ids, |
| const StatusCallback& callback); |
| @@ -94,9 +96,6 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| Status status() const { return status_; } |
| int process_id() const { return process_id_; } |
| int thread_id() const { return thread_id_; } |
| - int worker_devtools_agent_route_id() const { |
| - return worker_devtools_agent_route_id_; |
| - } |
| void AddListener(Listener* listener); |
| void RemoveListener(Listener* listener); |
| @@ -111,14 +110,33 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| // Constructor is called via EmbeddedWorkerRegistry::CreateWorker(). |
| // This instance holds a ref of |registry|. |
| - EmbeddedWorkerInstance(EmbeddedWorkerRegistry* registry, |
| - int embedded_worker_id); |
| - |
| - // 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); |
| + EmbeddedWorkerInstance(base::WeakPtr<ServiceWorkerContextCore> context, |
| + int embedded_worker_id, |
| + const GURL& scope); |
| + |
| + // Called back from ServiceWorkerProcessManager after Start() passes control |
| + // to the UI thread to acquire a reference to the process. |
| + static void RunProcessAllocated( |
| + base::WeakPtr<EmbeddedWorkerInstance> instance, |
| + base::WeakPtr<ServiceWorkerContextCore> context, |
| + scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| + const EmbeddedWorkerInstance::StatusCallback& callback, |
| + ServiceWorkerStatusCode status, |
| + int process_id); |
| + void ProcessAllocated(scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| + const StatusCallback& callback, |
| + int process_id, |
| + ServiceWorkerStatusCode status); |
| + // Called back after ProcessAllocated() passes control to the UI thread to |
| + // register to WorkerDevToolsManager. |
| + static void RunSendStartWorker( |
| + base::WeakPtr<EmbeddedWorkerInstance> instance, |
| + scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| + const EmbeddedWorkerInstance::StatusCallback& callback, |
| + int worker_devtools_agent_route_id, |
| + bool pause_on_start); |
| + void SendStartWorker(scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
| + const StatusCallback& callback); |
| // Called back from Registry when the worker instance has ack'ed that |
| // it finished loading the script. |
| @@ -163,8 +181,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance { |
| std::vector<int> SortProcesses( |
| const std::vector<int>& possible_process_ids) const; |
| + base::WeakPtr<ServiceWorkerContextCore> context_; |
| scoped_refptr<EmbeddedWorkerRegistry> registry_; |
| const int embedded_worker_id_; |
| + const GURL scope_; |
| Status status_; |
| // Current running information. -1 indicates the worker is not running. |