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 CHROME_BROWSER_METRICS_ANDROID_METRICS_PROVIDER_H_
      6 #define CHROME_BROWSER_METRICS_ANDROID_METRICS_PROVIDER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "chrome/browser/android/activity_type_ids.h"
     10 #include "components/metrics/metrics_provider.h"
     11 
     12 class PrefService;
     13 class PrefRegistrySimple;
     14 
     15 namespace metrics {
     16 class ChromeUserMetricsExtension;
     17 }
     18 
     19 // AndroidMetricsProvider provides Android-specific stability metrics.
     20 class AndroidMetricsProvider : public metrics::MetricsProvider {
     21  public:
     22   // Creates the AndroidMetricsProvider with the given |local_state|.
     23   explicit AndroidMetricsProvider(PrefService* local_state);
     24   virtual ~AndroidMetricsProvider();
     25 
     26   // metrics::MetricsProvider:
     27   virtual void ProvideGeneralMetrics(
     28       metrics::ChromeUserMetricsExtension* uma_proto) override;
     29 
     30   // Called when the Activity that the user interacts with is swapped out.
     31   // TODO(asvitkine): Expose a way for Android code to actually invoke this.
     32   void OnForegroundActivityChanged(ActivityTypeIds::Type type);
     33 
     34   // metrics::MetricsProvider:
     35   virtual void ProvideStabilityMetrics(
     36       metrics::SystemProfileProto* system_profile_proto) OVERRIDE;
     37 
     38   // Registers local state prefs used by this class.
     39   static void RegisterPrefs(PrefRegistrySimple* registry);
     40 
     41  private:
     42   // Called to log launch and crash stats to preferences.
     43   void LogStabilityToPrefs();
     44 
     45   // Converts crash stats stored in the preferences into histograms.
     46   void ConvertStabilityPrefsToHistograms();
     47 
     48   // Weak pointer to the local state prefs store.
     49   PrefService* local_state_;
     50 
     51   DISALLOW_COPY_AND_ASSIGN(AndroidMetricsProvider);
     52 };
     53 
     54 #endif  // CHROME_BROWSER_METRICS_ANDROID_METRICS_PROVIDER_H_
     55