| Index: chrome/browser/android/search_geolocation_disclosure_infobar_delegate.cc
|
| diff --git a/chrome/browser/android/search_geolocation_disclosure_infobar_delegate.cc b/chrome/browser/android/search_geolocation_disclosure_infobar_delegate.cc
|
| index 61ace1fbc68b3799735c1e2adca37ebc52671d23..9389974624968bd6d29bef81d98dabb757dd9bdf 100644
|
| --- a/chrome/browser/android/search_geolocation_disclosure_infobar_delegate.cc
|
| +++ b/chrome/browser/android/search_geolocation_disclosure_infobar_delegate.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/android/search_geolocation_disclosure_infobar_delegate.h"
|
|
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "chrome/browser/android/android_theme_resources.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -15,12 +16,29 @@
|
| #include "content/public/browser/web_contents.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| +// This enum is used in histograms, and is thus append only. Do not remove or
|
| +// re-order items.
|
| +enum class SearchGeolocationDisclosureInfoBarDelegate::DisclosureResult {
|
| + IGNORED = 0,
|
| + SETTINGS_CLICKED,
|
| + DISMISSED,
|
| + COUNT,
|
| +};
|
| +
|
| SearchGeolocationDisclosureInfoBarDelegate::
|
| - ~SearchGeolocationDisclosureInfoBarDelegate() {}
|
| + ~SearchGeolocationDisclosureInfoBarDelegate() {
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + "GeolocationDisclosure.DisclosureResult",
|
| + static_cast<base::HistogramBase::Sample>(result_),
|
| + static_cast<base::HistogramBase::Sample>(DisclosureResult::COUNT));
|
| + UMA_HISTOGRAM_MEDIUM_TIMES("GeolocationDisclosure.InfoBarVisibleTime",
|
| + base::Time::Now() - creation_time_);
|
| +}
|
|
|
| // static
|
| void SearchGeolocationDisclosureInfoBarDelegate::Create(
|
| - content::WebContents* web_contents, const GURL& search_url) {
|
| + content::WebContents* web_contents,
|
| + const GURL& search_url) {
|
| InfoBarService* infobar_service =
|
| InfoBarService::FromWebContents(web_contents);
|
| // Add the new delegate.
|
| @@ -47,11 +65,20 @@ bool SearchGeolocationDisclosureInfoBarDelegate::
|
| return false;
|
| }
|
|
|
| +void SearchGeolocationDisclosureInfoBarDelegate::RecordSettingsClicked() {
|
| + result_ = DisclosureResult::SETTINGS_CLICKED;
|
| + // This counts as a dismissed so the dialog isn't shown again.
|
| + pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true);
|
| +}
|
| +
|
| SearchGeolocationDisclosureInfoBarDelegate::
|
| SearchGeolocationDisclosureInfoBarDelegate(
|
| content::WebContents* web_contents,
|
| const GURL& search_url)
|
| - : infobars::InfoBarDelegate(), search_url_(search_url) {
|
| + : infobars::InfoBarDelegate(),
|
| + search_url_(search_url),
|
| + result_(DisclosureResult::IGNORED),
|
| + creation_time_(base::Time::Now()) {
|
| pref_service_ = Profile::FromBrowserContext(web_contents->GetBrowserContext())
|
| ->GetPrefs();
|
| base::string16 link = l10n_util::GetStringUTF16(
|
| @@ -63,6 +90,7 @@ SearchGeolocationDisclosureInfoBarDelegate::
|
| }
|
|
|
| void SearchGeolocationDisclosureInfoBarDelegate::InfoBarDismissed() {
|
| + result_ = DisclosureResult::DISMISSED;
|
| pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true);
|
| }
|
|
|
|
|