| 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 9356bb531f0510aca376961a69e14e50e48f1f6a..9ec684d538833c8050681a951c9673a0a8175d3f 100644
|
| --- a/content/browser/service_worker/embedded_worker_instance.h
|
| +++ b/content/browser/service_worker/embedded_worker_instance.h
|
| @@ -20,6 +20,7 @@
|
| #include "base/observer_list.h"
|
| #include "base/strings/string16.h"
|
| #include "base/time/time.h"
|
| +#include "content/browser/service_worker/embedded_worker_status.h"
|
| #include "content/browser/service_worker/service_worker_metrics.h"
|
| #include "content/common/content_export.h"
|
| #include "content/common/service_worker/service_worker_status_code.h"
|
| @@ -51,12 +52,6 @@ class ServiceWorkerContextCore;
|
| class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| public:
|
| typedef base::Callback<void(ServiceWorkerStatusCode)> StatusCallback;
|
| - enum Status {
|
| - STOPPED,
|
| - STARTING,
|
| - RUNNING,
|
| - STOPPING,
|
| - };
|
|
|
| // This enum is used in UMA histograms. Append-only.
|
| enum StartingPhase {
|
| @@ -88,9 +83,9 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
|
|
| virtual void OnStopping() {}
|
| // Received ACK from renderer that the worker context terminated.
|
| - virtual void OnStopped(Status old_status) {}
|
| + virtual void OnStopped(EmbeddedWorkerStatus old_status) {}
|
| // The browser-side IPC endpoint for communication with the worker died.
|
| - virtual void OnDetached(Status old_status) {}
|
| + virtual void OnDetached(EmbeddedWorkerStatus old_status) {}
|
| virtual void OnScriptLoaded() {}
|
| virtual void OnScriptLoadFailed() {}
|
| virtual void OnReportException(const base::string16& error_message,
|
| @@ -140,9 +135,9 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| ServiceRegistry* GetServiceRegistry();
|
|
|
| int embedded_worker_id() const { return embedded_worker_id_; }
|
| - Status status() const { return status_; }
|
| + EmbeddedWorkerStatus status() const { return status_; }
|
| StartingPhase starting_phase() const {
|
| - DCHECK_EQ(STARTING, status());
|
| + DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status());
|
| return starting_phase_;
|
| }
|
| int process_id() const;
|
| @@ -163,6 +158,12 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| return network_accessed_for_script_;
|
| }
|
|
|
| + ServiceWorkerMetrics::StartSituation start_situation() const {
|
| + DCHECK(status() == EmbeddedWorkerStatus::STARTING ||
|
| + status() == EmbeddedWorkerStatus::RUNNING);
|
| + return start_situation_;
|
| + }
|
| +
|
| // Called when the main script load accessed the network.
|
| void OnNetworkAccessedForScriptLoad();
|
|
|
| @@ -185,7 +186,7 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| void AddMessageToConsole(ConsoleMessageLevel level,
|
| const std::string& message);
|
|
|
| - static std::string StatusToString(Status status);
|
| + static std::string StatusToString(EmbeddedWorkerStatus status);
|
| static std::string StartingPhaseToString(StartingPhase phase);
|
|
|
| void Detach();
|
| @@ -208,7 +209,8 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| int embedded_worker_id);
|
|
|
| // Called back from StartTask after a process is allocated on the UI thread.
|
| - void OnProcessAllocated(std::unique_ptr<WorkerProcessHandle> handle);
|
| + void OnProcessAllocated(std::unique_ptr<WorkerProcessHandle> handle,
|
| + ServiceWorkerMetrics::StartSituation start_situation);
|
|
|
| // Called back from StartTask after the worker is registered to
|
| // WorkerDevToolsManager.
|
| @@ -289,7 +291,7 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
| base::WeakPtr<ServiceWorkerContextCore> context_;
|
| scoped_refptr<EmbeddedWorkerRegistry> registry_;
|
| const int embedded_worker_id_;
|
| - Status status_;
|
| + EmbeddedWorkerStatus status_;
|
| StartingPhase starting_phase_;
|
|
|
| // Current running information.
|
| @@ -309,6 +311,10 @@ class CONTENT_EXPORT EmbeddedWorkerInstance {
|
|
|
| std::unique_ptr<StartTask> inflight_start_task_;
|
|
|
| + // This is valid only after a process is allocated for the worker.
|
| + ServiceWorkerMetrics::StartSituation start_situation_ =
|
| + ServiceWorkerMetrics::StartSituation::UNKNOWN;
|
| +
|
| // Used for UMA. The start time of the current start sequence step.
|
| base::TimeTicks step_time_;
|
|
|
|
|