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_OMNIBOX_METRICS_PROVIDER_H_ 6 #define CHROME_BROWSER_METRICS_OMNIBOX_METRICS_PROVIDER_H_ 7 8 #include "base/basictypes.h" 9 #include "components/metrics/metrics_provider.h" 10 #include "components/metrics/proto/chrome_user_metrics_extension.pb.h" 11 #include "content/public/browser/notification_observer.h" 12 #include "content/public/browser/notification_registrar.h" 13 14 struct OmniboxLog; 15 16 // OmniboxMetricsProvider is responsible for filling out the |omnibox_event| 17 // section of the UMA proto. 18 class OmniboxMetricsProvider : public metrics::MetricsProvider, 19 public content::NotificationObserver { 20 public: 21 OmniboxMetricsProvider(); 22 virtual ~OmniboxMetricsProvider(); 23 24 // metrics::MetricsDataProvider: 25 virtual void OnRecordingEnabled() OVERRIDE; 26 virtual void OnRecordingDisabled() OVERRIDE; 27 virtual void ProvideGeneralMetrics( 28 metrics::ChromeUserMetricsExtension* uma_proto) OVERRIDE; 29 30 private: 31 // content::NotificationObserver: 32 virtual void Observe(int type, 33 const content::NotificationSource& source, 34 const content::NotificationDetails& details) OVERRIDE; 35 36 // Records the input text, available choices, and selected entry when the 37 // user uses the Omnibox to open a URL. 38 void RecordOmniboxOpenedURL(const OmniboxLog& log); 39 40 // Registar for receiving Omnibox event notifications. 41 content::NotificationRegistrar registrar_; 42 43 // Saved cache of generated Omnibox event protos, to be copied into the UMA 44 // proto when ProvideGeneralMetrics() is called. 45 metrics::ChromeUserMetricsExtension omnibox_events_cache; 46 47 DISALLOW_COPY_AND_ASSIGN(OmniboxMetricsProvider); 48 }; 49 50 #endif // CHROME_BROWSER_METRICS_OMNIBOX_METRICS_PROVIDER_H_ 51