Chromium Code Reviews| Index: blimp/engine/app/blimp_metrics_service_client.h |
| diff --git a/blimp/engine/app/blimp_metrics_service_client.h b/blimp/engine/app/blimp_metrics_service_client.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..65fff24f6c8e0d0214887a78cab2a40abe2bc1e8 |
| --- /dev/null |
| +++ b/blimp/engine/app/blimp_metrics_service_client.h |
| @@ -0,0 +1,77 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_ |
| +#define BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_ |
| + |
| +#include <stdint.h> |
| + |
| +#include <string> |
| + |
| +#include "base/macros.h" |
| +#include "base/memory/ref_counted.h" |
| +#include "components/metrics/metrics_service_client.h" |
| + |
| +class PrefService; |
| + |
| +namespace metrics { |
| +class MetricsService; |
| +class MetricsStateManager; |
| +class SystemProfileProto; |
| +} |
| + |
| +namespace net { |
| +class URLRequestContextGetter; |
| +} // namespace net |
| + |
| +namespace blimp { |
| +namespace engine { |
| + |
| +// BlimpMetricsServiceClient provides an implementation of MetricsServiceClient |
|
Kevin M
2016/05/11 17:08:42
Can you add a comment explaining why we need this?
Jess
2016/05/11 20:17:30
Added explanation of why. Please take a look and
|
| +// tailored for the Blimp engine. |
| +// Metrics are always turned on. |
| +class BlimpMetricsServiceClient : public metrics::MetricsServiceClient { |
| + public: |
| + // PrefService ownership is retained by the caller. |
| + // The request_context_getter is a system request context. |
| + // Both must remain valid for client lifetime. |
| + BlimpMetricsServiceClient( |
| + PrefService* pref_service, |
| + scoped_refptr<net::URLRequestContextGetter> request_context_getter); |
| + ~BlimpMetricsServiceClient() override; |
| + |
| + // metrics::MetricsServiceClient implementation. |
| + metrics::MetricsService* GetMetricsService() override; |
| + void SetMetricsClientId(const std::string& client_id) override; |
| + void OnRecordingDisabled() override; |
| + bool IsOffTheRecordSessionActive() override; |
| + int32_t GetProduct() override; |
| + std::string GetApplicationLocale() override; |
| + bool GetBrand(std::string* brand_code) override; |
| + metrics::SystemProfileProto::Channel GetChannel() override; |
| + std::string GetVersionString() override; |
| + void OnLogUploadComplete() override; |
| + void InitializeSystemProfileMetrics( |
| + const base::Closure& done_callback) override; |
| + void CollectFinalMetricsForLog(const base::Closure& done_callback) override; |
| + std::unique_ptr<metrics::MetricsLogUploader> CreateUploader( |
| + const base::Callback<void(int)>& on_upload_complete) override; |
| + base::TimeDelta GetStandardUploadInterval() override; |
| + metrics::MetricsServiceClient::EnableMetricsDefault GetDefaultOptIn() |
| + override; |
| + |
| + private: |
| + // Used by NetMetricsLogUploader to create log-upload requests. |
| + scoped_refptr<net::URLRequestContextGetter> request_context_getter_; |
| + |
| + std::unique_ptr<metrics::MetricsStateManager> metrics_state_manager_; |
| + std::unique_ptr<metrics::MetricsService> metrics_service_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(BlimpMetricsServiceClient); |
| +}; |
| + |
| +} // namespace engine |
| +} // namespace blimp |
| + |
| +#endif // BLIMP_ENGINE_APP_BLIMP_METRICS_SERVICE_CLIENT_H_ |