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