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.
5 #ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_METRICS_PROVIDER_H_
6 #define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_METRICS_PROVIDER_H_
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 "components/omnibox/browser/omnibox_event_global_tracker.h"
15 // OmniboxMetricsProvider is responsible for filling out the |omnibox_event|
16 // section of the UMA proto.
17 class OmniboxMetricsProvider
: public metrics::MetricsProvider
{
19 explicit OmniboxMetricsProvider(
20 const base::Callback
<bool(void)>& is_off_the_record_callback
);
21 ~OmniboxMetricsProvider() override
;
23 // metrics::MetricsDataProvider:
24 void OnRecordingEnabled() override
;
25 void OnRecordingDisabled() override
;
26 void ProvideGeneralMetrics(
27 metrics::ChromeUserMetricsExtension
* uma_proto
) override
;
30 // Called when a URL is opened from the Omnibox.
31 void OnURLOpenedFromOmnibox(OmniboxLog
* log
);
33 // Records the input text, available choices, and selected entry when the
34 // user uses the Omnibox to open a URL.
35 void RecordOmniboxOpenedURL(const OmniboxLog
& log
);
37 // Subscription for receiving Omnibox event callbacks.
38 scoped_ptr
<base::CallbackList
<void(OmniboxLog
*)>::Subscription
> subscription_
;
40 // Saved cache of generated Omnibox event protos, to be copied into the UMA
41 // proto when ProvideGeneralMetrics() is called.
42 metrics::ChromeUserMetricsExtension omnibox_events_cache
;
44 // Callback passed in from the embedder that returns whether the user is
45 // currently operating off-the-record.
46 const base::Callback
<bool(void)> is_off_the_record_callback_
;
48 DISALLOW_COPY_AND_ASSIGN(OmniboxMetricsProvider
);
51 #endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_METRICS_PROVIDER_H_