Home | History | Annotate | Download | only in metrics
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROMECAST_METRICS_CAST_METRICS_SERVICE_CLIENT_H_
      6 #define CHROMECAST_METRICS_CAST_METRICS_SERVICE_CLIENT_H_
      7 
      8 #include <string>
      9 
     10 #include "base/macros.h"
     11 #include "base/memory/ref_counted.h"
     12 #include "base/memory/scoped_ptr.h"
     13 #include "components/metrics/metrics_service_client.h"
     14 
     15 class PrefService;
     16 
     17 namespace base {
     18 class TaskRunner;
     19 }
     20 
     21 namespace metrics {
     22 class MetricsService;
     23 class MetricsStateManager;
     24 }  // namespace metrics
     25 
     26 namespace net {
     27 class URLRequestContextGetter;
     28 }  // namespace net
     29 
     30 namespace chromecast {
     31 namespace metrics {
     32 
     33 class CastMetricsServiceClient : public ::metrics::MetricsServiceClient {
     34  public:
     35   virtual ~CastMetricsServiceClient();
     36 
     37   static CastMetricsServiceClient* Create(
     38       base::TaskRunner* io_task_runner,
     39       PrefService* pref_service,
     40       net::URLRequestContextGetter* request_context);
     41 
     42   // metrics::MetricsServiceClient implementation:
     43   virtual void SetMetricsClientId(const std::string& client_id) OVERRIDE;
     44   virtual bool IsOffTheRecordSessionActive() OVERRIDE;
     45   virtual std::string GetApplicationLocale() OVERRIDE;
     46   virtual bool GetBrand(std::string* brand_code) OVERRIDE;
     47   virtual ::metrics::SystemProfileProto::Channel GetChannel() OVERRIDE;
     48   virtual std::string GetVersionString() OVERRIDE;
     49   virtual void OnLogUploadComplete() OVERRIDE;
     50   virtual void StartGatheringMetrics(
     51       const base::Closure& done_callback) OVERRIDE;
     52   virtual void CollectFinalMetrics(const base::Closure& done_callback) OVERRIDE;
     53   virtual scoped_ptr< ::metrics::MetricsLogUploader> CreateUploader(
     54       const std::string& server_url,
     55       const std::string& mime_type,
     56       const base::Callback<void(int)>& on_upload_complete) OVERRIDE;
     57 
     58   // Starts/stops the metrics service.
     59   void EnableMetricsService(bool enabled);
     60 
     61  private:
     62   CastMetricsServiceClient(
     63       base::TaskRunner* io_task_runner,
     64       PrefService* pref_service,
     65       net::URLRequestContextGetter* request_context);
     66 
     67   // Returns whether or not metrics reporting is enabled.
     68   bool IsReportingEnabled();
     69 
     70   scoped_ptr< ::metrics::MetricsStateManager> metrics_state_manager_;
     71   scoped_ptr< ::metrics::MetricsService> metrics_service_;
     72   net::URLRequestContextGetter* request_context_;
     73 
     74   DISALLOW_COPY_AND_ASSIGN(CastMetricsServiceClient);
     75 };
     76 
     77 }  // namespace metrics
     78 }  // namespace chromecast
     79 
     80 #endif  // CHROMECAST_METRICS_CAST_METRICS_SERVICE_CLIENT_H_
     81