| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ | 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ |
| 6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ | 6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 #ifdef SendMessage | 31 #ifdef SendMessage |
| 32 #undef SendMessage | 32 #undef SendMessage |
| 33 #endif | 33 #endif |
| 34 | 34 |
| 35 struct EmbeddedWorkerMsg_StartWorker_Params; | 35 struct EmbeddedWorkerMsg_StartWorker_Params; |
| 36 | 36 |
| 37 namespace IPC { | 37 namespace IPC { |
| 38 class Message; | 38 class Message; |
| 39 } | 39 } |
| 40 | 40 |
| 41 namespace shell { |
| 42 class InterfaceProvider; |
| 43 class InterfaceRegistry; |
| 44 } |
| 45 |
| 41 namespace content { | 46 namespace content { |
| 42 | 47 |
| 43 class EmbeddedWorkerRegistry; | 48 class EmbeddedWorkerRegistry; |
| 44 class MessagePortMessageFilter; | 49 class MessagePortMessageFilter; |
| 45 class ServiceRegistry; | |
| 46 class ServiceRegistryImpl; | |
| 47 class ServiceWorkerContextCore; | 50 class ServiceWorkerContextCore; |
| 48 | 51 |
| 49 // This gives an interface to control one EmbeddedWorker instance, which | 52 // This gives an interface to control one EmbeddedWorker instance, which |
| 50 // may be 'in-waiting' or running in one of the child processes added by | 53 // may be 'in-waiting' or running in one of the child processes added by |
| 51 // AddProcessReference(). | 54 // AddProcessReference(). |
| 52 class CONTENT_EXPORT EmbeddedWorkerInstance { | 55 class CONTENT_EXPORT EmbeddedWorkerInstance { |
| 53 public: | 56 public: |
| 54 typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback; | 57 typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback; |
| 55 | 58 |
| 56 // This enum is used in UMA histograms. Append-only. | 59 // This enum is used in UMA histograms. Append-only. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 void StopIfIdle(); | 126 void StopIfIdle(); |
| 124 | 127 |
| 125 // Sends |message| to the embedded worker running in the child process. | 128 // Sends |message| to the embedded worker running in the child process. |
| 126 // It is invalid to call this while the worker is not in STARTING or RUNNING | 129 // It is invalid to call this while the worker is not in STARTING or RUNNING |
| 127 // status. | 130 // status. |
| 128 ServiceWorkerStatusCode SendMessage(const IPC::Message& message); | 131 ServiceWorkerStatusCode SendMessage(const IPC::Message& message); |
| 129 | 132 |
| 130 // Resumes the worker if it paused after download. | 133 // Resumes the worker if it paused after download. |
| 131 void ResumeAfterDownload(); | 134 void ResumeAfterDownload(); |
| 132 | 135 |
| 133 // Returns the ServiceRegistry for this worker. It is invalid to call this | 136 // Returns the shell::InterfaceRegistry and shell::InterfaceProvider for this |
| 134 // when the worker is not in STARTING or RUNNING status. | 137 // worker. It is invalid to call this when the worker is not in STARTING or |
| 135 ServiceRegistry* GetServiceRegistry(); | 138 // RUNNING status. |
| 139 shell::InterfaceRegistry* GetInterfaceRegistry(); |
| 140 shell::InterfaceProvider* GetRemoteInterfaces(); |
| 136 | 141 |
| 137 int embedded_worker_id() const { return embedded_worker_id_; } | 142 int embedded_worker_id() const { return embedded_worker_id_; } |
| 138 EmbeddedWorkerStatus status() const { return status_; } | 143 EmbeddedWorkerStatus status() const { return status_; } |
| 139 StartingPhase starting_phase() const { | 144 StartingPhase starting_phase() const { |
| 140 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status()); | 145 DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status()); |
| 141 return starting_phase_; | 146 return starting_phase_; |
| 142 } | 147 } |
| 143 int process_id() const; | 148 int process_id() const; |
| 144 int thread_id() const { return thread_id_; } | 149 int thread_id() const { return thread_id_; } |
| 145 // This should be called only when the worker instance has a valid process, | 150 // This should be called only when the worker instance has a valid process, |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 | 295 |
| 291 base::WeakPtr<ServiceWorkerContextCore> context_; | 296 base::WeakPtr<ServiceWorkerContextCore> context_; |
| 292 scoped_refptr<EmbeddedWorkerRegistry> registry_; | 297 scoped_refptr<EmbeddedWorkerRegistry> registry_; |
| 293 const int embedded_worker_id_; | 298 const int embedded_worker_id_; |
| 294 EmbeddedWorkerStatus status_; | 299 EmbeddedWorkerStatus status_; |
| 295 StartingPhase starting_phase_; | 300 StartingPhase starting_phase_; |
| 296 | 301 |
| 297 // Current running information. | 302 // Current running information. |
| 298 std::unique_ptr<EmbeddedWorkerInstance::WorkerProcessHandle> process_handle_; | 303 std::unique_ptr<EmbeddedWorkerInstance::WorkerProcessHandle> process_handle_; |
| 299 int thread_id_; | 304 int thread_id_; |
| 300 std::unique_ptr<ServiceRegistryImpl> service_registry_; | 305 std::unique_ptr<shell::InterfaceRegistry> interface_registry_; |
| 306 std::unique_ptr<shell::InterfaceProvider> remote_interfaces_; |
| 301 | 307 |
| 302 // Whether devtools is attached or not. | 308 // Whether devtools is attached or not. |
| 303 bool devtools_attached_; | 309 bool devtools_attached_; |
| 304 | 310 |
| 305 // True if the script load request accessed the network. If the script was | 311 // True if the script load request accessed the network. If the script was |
| 306 // served from HTTPCache or ServiceWorkerDatabase this value is false. | 312 // served from HTTPCache or ServiceWorkerDatabase this value is false. |
| 307 bool network_accessed_for_script_; | 313 bool network_accessed_for_script_; |
| 308 | 314 |
| 309 ListenerList listener_list_; | 315 ListenerList listener_list_; |
| 310 std::unique_ptr<DevToolsProxy> devtools_proxy_; | 316 std::unique_ptr<DevToolsProxy> devtools_proxy_; |
| 311 | 317 |
| 312 std::unique_ptr<StartTask> inflight_start_task_; | 318 std::unique_ptr<StartTask> inflight_start_task_; |
| 313 | 319 |
| 314 // This is valid only after a process is allocated for the worker. | 320 // This is valid only after a process is allocated for the worker. |
| 315 ServiceWorkerMetrics::StartSituation start_situation_ = | 321 ServiceWorkerMetrics::StartSituation start_situation_ = |
| 316 ServiceWorkerMetrics::StartSituation::UNKNOWN; | 322 ServiceWorkerMetrics::StartSituation::UNKNOWN; |
| 317 | 323 |
| 318 // Used for UMA. The start time of the current start sequence step. | 324 // Used for UMA. The start time of the current start sequence step. |
| 319 base::TimeTicks step_time_; | 325 base::TimeTicks step_time_; |
| 320 | 326 |
| 321 base::WeakPtrFactory<EmbeddedWorkerInstance> weak_factory_; | 327 base::WeakPtrFactory<EmbeddedWorkerInstance> weak_factory_; |
| 322 | 328 |
| 323 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerInstance); | 329 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerInstance); |
| 324 }; | 330 }; |
| 325 | 331 |
| 326 } // namespace content | 332 } // namespace content |
| 327 | 333 |
| 328 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ | 334 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_INSTANCE_H_ |
| OLD | NEW |