| OLD | NEW | 
|   1 // Copyright 2015 The Chromium Authors. All rights reserved. |   1 // Copyright 2015 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 ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ |   5 #ifndef ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ | 
|   6 #define ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ |   6 #define ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ | 
|   7  |   7  | 
|   8 #include "android_webview/browser/aw_metrics_service_client.h" |   8 #include "android_webview/browser/aw_metrics_service_client.h" | 
|   9  |   9  | 
|  10 #include <string> |  10 #include <string> | 
|  11  |  11  | 
|  12 #include "base/lazy_instance.h" |  12 #include "base/lazy_instance.h" | 
|  13 #include "base/macros.h" |  13 #include "base/macros.h" | 
|  14 #include "base/memory/scoped_ptr.h" |  14 #include "base/memory/scoped_ptr.h" | 
|  15 #include "components/metrics/metrics_service_client.h" |  15 #include "components/metrics/metrics_service_client.h" | 
|  16  |  16  | 
|  17 class PrefService; |  17 class PrefService; | 
|  18  |  18  | 
 |  19 namespace base { | 
 |  20 class FilePath; | 
 |  21 } | 
 |  22  | 
|  19 namespace metrics { |  23 namespace metrics { | 
|  20 struct ClientInfo; |  24 struct ClientInfo; | 
|  21 class MetricsStateManager; |  25 class MetricsStateManager; | 
|  22 } |  26 } | 
|  23  |  27  | 
|  24 namespace net { |  28 namespace net { | 
|  25 class URLRequestContextGetter; |  29 class URLRequestContextGetter; | 
|  26 } |  30 } | 
|  27  |  31  | 
|  28 namespace android_webview { |  32 namespace android_webview { | 
|  29  |  33  | 
|  30 // This singleton manages metrics for an app using any number of WebViews. |  34 // This singleton manages metrics for an app using any number of WebViews. | 
|  31 // Metrics is turned on and off by the homonymous Java class. It should only be |  35 // Metrics is turned on and off by the homonymous Java class. It should only be | 
|  32 // used on the main thread. In particular, Initialize, Finalize, and |  36 // used on the main thread. In particular, Initialize, Finalize, and | 
|  33 // SetMetricsEnabled must be called from the same thread, in order to prevent |  37 // SetMetricsEnabled must be called from the same thread, in order to prevent | 
|  34 // enable/disable race conditions, and because MetricsService is |  38 // enable/disable race conditions, and because MetricsService is | 
|  35 // single-threaded. |  39 // single-threaded. | 
|  36 class AwMetricsServiceClient : public metrics::MetricsServiceClient { |  40 class AwMetricsServiceClient : public metrics::MetricsServiceClient { | 
|  37   friend struct base::DefaultLazyInstanceTraits<AwMetricsServiceClient>; |  41   friend struct base::DefaultLazyInstanceTraits<AwMetricsServiceClient>; | 
|  38  |  42  | 
|  39  public: |  43  public: | 
|  40   static AwMetricsServiceClient* GetInstance(); |  44   static AwMetricsServiceClient* GetInstance(); | 
|  41  |  45  | 
|  42   void Initialize(PrefService* pref_service, |  46   void Initialize(PrefService* pref_service, | 
|  43                   net::URLRequestContextGetter* request_context); |  47                   net::URLRequestContextGetter* request_context, | 
 |  48                   const base::FilePath guid_file_path); | 
|  44   void Finalize(); |  49   void Finalize(); | 
|  45   void SetMetricsEnabled(bool enabled); |  50   void SetMetricsEnabled(bool enabled); | 
|  46  |  51  | 
|  47   // metrics::MetricsServiceClient implementation |  52   // metrics::MetricsServiceClient implementation | 
|  48   metrics::MetricsService* GetMetricsService() override; |  53   metrics::MetricsService* GetMetricsService() override; | 
|  49   void SetMetricsClientId(const std::string& client_id) override; |  54   void SetMetricsClientId(const std::string& client_id) override; | 
|  50   void OnRecordingDisabled() override; |  55   void OnRecordingDisabled() override; | 
|  51   bool IsOffTheRecordSessionActive() override; |  56   bool IsOffTheRecordSessionActive() override; | 
|  52   int32_t GetProduct() override; |  57   int32_t GetProduct() override; | 
|  53   std::string GetApplicationLocale() override; |  58   std::string GetApplicationLocale() override; | 
|  54   bool GetBrand(std::string* brand_code) override; |  59   bool GetBrand(std::string* brand_code) override; | 
|  55   metrics::SystemProfileProto::Channel GetChannel() override; |  60   metrics::SystemProfileProto::Channel GetChannel() override; | 
|  56   std::string GetVersionString() override; |  61   std::string GetVersionString() override; | 
|  57   void OnLogUploadComplete() override; |  62   void OnLogUploadComplete() override; | 
|  58   void InitializeSystemProfileMetrics( |  63   void InitializeSystemProfileMetrics( | 
|  59       const base::Closure& done_callback) override; |  64       const base::Closure& done_callback) override; | 
|  60   void CollectFinalMetricsForLog(const base::Closure& done_callback) override; |  65   void CollectFinalMetricsForLog(const base::Closure& done_callback) override; | 
|  61   scoped_ptr<metrics::MetricsLogUploader> CreateUploader( |  66   scoped_ptr<metrics::MetricsLogUploader> CreateUploader( | 
|  62       const base::Callback<void(int)>& on_upload_complete) override; |  67       const base::Callback<void(int)>& on_upload_complete) override; | 
|  63   base::TimeDelta GetStandardUploadInterval() override; |  68   base::TimeDelta GetStandardUploadInterval() override; | 
|  64  |  69  | 
|  65  private: |  70  private: | 
|  66   AwMetricsServiceClient(); |  71   AwMetricsServiceClient(); | 
|  67   ~AwMetricsServiceClient() override; |  72   ~AwMetricsServiceClient() override; | 
|  68  |  73  | 
 |  74   void InitializeWithGUID(std::string* guid); | 
 |  75  | 
|  69   // Callback for metrics::MetricsStateManager::Create |  76   // Callback for metrics::MetricsStateManager::Create | 
|  70   bool is_reporting_enabled(); |  77   bool is_reporting_enabled(); | 
|  71  |  78  | 
|  72   bool is_initialized_; |  79   bool is_initialized_; | 
|  73   bool is_enabled_; |  80   bool is_enabled_; | 
|  74   PrefService* pref_service_; |  81   PrefService* pref_service_; | 
|  75   net::URLRequestContextGetter* request_context_; |  82   net::URLRequestContextGetter* request_context_; | 
|  76   scoped_ptr<metrics::MetricsStateManager> metrics_state_manager_; |  83   scoped_ptr<metrics::MetricsStateManager> metrics_state_manager_; | 
|  77   scoped_ptr<metrics::MetricsService> metrics_service_; |  84   scoped_ptr<metrics::MetricsService> metrics_service_; | 
|  78  |  85  | 
|  79   DISALLOW_COPY_AND_ASSIGN(AwMetricsServiceClient); |  86   DISALLOW_COPY_AND_ASSIGN(AwMetricsServiceClient); | 
|  80 }; |  87 }; | 
|  81  |  88  | 
|  82 }  // namespace android_webview |  89 }  // namespace android_webview | 
|  83  |  90  | 
|  84 #endif  // ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ |  91 #endif  // ANDROID_WEBVIEW_BROWSER_AW_METRICS_SERVICE_CLIENT_IMPL_H_ | 
| OLD | NEW |