Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: chrome/browser/android/search_geolocation/search_geolocation_disclosure_infobar_delegate.cc

Issue 2909583002: Use the name of the default search engine in the search geo disclosure. (Closed)
Patch Set: Feedback Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/search_geolocation/search_geolocation_disclosur e_infobar_delegate.h" 5 #include "chrome/browser/android/search_geolocation/search_geolocation_disclosur e_infobar_delegate.h"
6 6
7 #include <vector>
8
7 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
8 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
9 #include "chrome/browser/android/android_theme_resources.h" 11 #include "chrome/browser/android/android_theme_resources.h"
10 #include "chrome/browser/infobars/infobar_service.h" 12 #include "chrome/browser/infobars/infobar_service.h"
11 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/android/infobars/search_geolocation_disclosure_infob ar.h" 14 #include "chrome/browser/ui/android/infobars/search_geolocation_disclosure_infob ar.h"
13 #include "chrome/common/pref_names.h" 15 #include "chrome/common/pref_names.h"
14 #include "chrome/grit/generated_resources.h" 16 #include "chrome/grit/generated_resources.h"
15 #include "components/prefs/pref_service.h" 17 #include "components/prefs/pref_service.h"
16 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
(...skipping 14 matching lines...) Expand all
31 "GeolocationDisclosure.DisclosureResult", 33 "GeolocationDisclosure.DisclosureResult",
32 static_cast<base::HistogramBase::Sample>(result_), 34 static_cast<base::HistogramBase::Sample>(result_),
33 static_cast<base::HistogramBase::Sample>(DisclosureResult::COUNT)); 35 static_cast<base::HistogramBase::Sample>(DisclosureResult::COUNT));
34 UMA_HISTOGRAM_MEDIUM_TIMES("GeolocationDisclosure.InfoBarVisibleTime", 36 UMA_HISTOGRAM_MEDIUM_TIMES("GeolocationDisclosure.InfoBarVisibleTime",
35 base::Time::Now() - creation_time_); 37 base::Time::Now() - creation_time_);
36 } 38 }
37 39
38 // static 40 // static
39 void SearchGeolocationDisclosureInfoBarDelegate::Create( 41 void SearchGeolocationDisclosureInfoBarDelegate::Create(
40 content::WebContents* web_contents, 42 content::WebContents* web_contents,
41 const GURL& search_url) { 43 const GURL& search_url,
44 const base::string16& search_engine_name) {
42 InfoBarService* infobar_service = 45 InfoBarService* infobar_service =
43 InfoBarService::FromWebContents(web_contents); 46 InfoBarService::FromWebContents(web_contents);
44 // Add the new delegate. 47 // Add the new delegate.
45 infobar_service->AddInfoBar( 48 infobar_service->AddInfoBar(
46 base::MakeUnique<SearchGeolocationDisclosureInfoBar>( 49 base::MakeUnique<SearchGeolocationDisclosureInfoBar>(
47 base::WrapUnique(new SearchGeolocationDisclosureInfoBarDelegate( 50 base::WrapUnique(new SearchGeolocationDisclosureInfoBarDelegate(
48 web_contents, search_url)))); 51 web_contents, search_url, search_engine_name))));
49 } 52 }
50 53
51 // static 54 // static
52 bool SearchGeolocationDisclosureInfoBarDelegate:: 55 bool SearchGeolocationDisclosureInfoBarDelegate::
53 IsSearchGeolocationDisclosureOpen(content::WebContents* web_contents) { 56 IsSearchGeolocationDisclosureOpen(content::WebContents* web_contents) {
54 InfoBarService* infobar_service = 57 InfoBarService* infobar_service =
55 InfoBarService::FromWebContents(web_contents); 58 InfoBarService::FromWebContents(web_contents);
56 for (size_t i = 0; i < infobar_service->infobar_count(); ++i) { 59 for (size_t i = 0; i < infobar_service->infobar_count(); ++i) {
57 infobars::InfoBar* existing_infobar = infobar_service->infobar_at(i); 60 infobars::InfoBar* existing_infobar = infobar_service->infobar_at(i);
58 if (existing_infobar->delegate()->GetIdentifier() == 61 if (existing_infobar->delegate()->GetIdentifier() ==
59 infobars::InfoBarDelegate:: 62 infobars::InfoBarDelegate::
60 SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_DELEGATE) { 63 SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_DELEGATE) {
61 return true; 64 return true;
62 } 65 }
63 } 66 }
64 67
65 return false; 68 return false;
66 } 69 }
67 70
68 void SearchGeolocationDisclosureInfoBarDelegate::RecordSettingsClicked() { 71 void SearchGeolocationDisclosureInfoBarDelegate::RecordSettingsClicked() {
69 result_ = DisclosureResult::SETTINGS_CLICKED; 72 result_ = DisclosureResult::SETTINGS_CLICKED;
70 // This counts as a dismissed so the dialog isn't shown again. 73 // This counts as a dismissed so the dialog isn't shown again.
71 pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true); 74 pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true);
72 } 75 }
73 76
74 SearchGeolocationDisclosureInfoBarDelegate:: 77 SearchGeolocationDisclosureInfoBarDelegate::
75 SearchGeolocationDisclosureInfoBarDelegate( 78 SearchGeolocationDisclosureInfoBarDelegate(
76 content::WebContents* web_contents, 79 content::WebContents* web_contents,
77 const GURL& search_url) 80 const GURL& search_url,
81 const base::string16& search_engine_name)
78 : infobars::InfoBarDelegate(), 82 : infobars::InfoBarDelegate(),
79 search_url_(search_url), 83 search_url_(search_url),
80 result_(DisclosureResult::IGNORED), 84 result_(DisclosureResult::IGNORED),
81 creation_time_(base::Time::Now()) { 85 creation_time_(base::Time::Now()) {
82 pref_service_ = Profile::FromBrowserContext(web_contents->GetBrowserContext()) 86 pref_service_ = Profile::FromBrowserContext(web_contents->GetBrowserContext())
83 ->GetPrefs(); 87 ->GetPrefs();
84 base::string16 link = l10n_util::GetStringUTF16( 88 base::string16 link = l10n_util::GetStringUTF16(
85 IDS_SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_SETTINGS_LINK_TEXT); 89 IDS_SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_SETTINGS_LINK_TEXT);
86 size_t offset; 90 std::vector<size_t> offsets;
87 message_text_ = l10n_util::GetStringFUTF16( 91 message_text_ =
88 IDS_SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_TEXT, link, &offset); 92 l10n_util::GetStringFUTF16(IDS_SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_TEXT,
89 inline_link_range_ = gfx::Range(offset, offset + link.length()); 93 search_engine_name, link, &offsets);
94 inline_link_range_ = gfx::Range(offsets[1], offsets[1] + link.length());
90 } 95 }
91 96
92 void SearchGeolocationDisclosureInfoBarDelegate::InfoBarDismissed() { 97 void SearchGeolocationDisclosureInfoBarDelegate::InfoBarDismissed() {
93 result_ = DisclosureResult::DISMISSED; 98 result_ = DisclosureResult::DISMISSED;
94 pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true); 99 pref_service_->SetBoolean(prefs::kSearchGeolocationDisclosureDismissed, true);
95 } 100 }
96 101
97 infobars::InfoBarDelegate::Type 102 infobars::InfoBarDelegate::Type
98 SearchGeolocationDisclosureInfoBarDelegate::GetInfoBarType() const { 103 SearchGeolocationDisclosureInfoBarDelegate::GetInfoBarType() const {
99 return PAGE_ACTION_TYPE; 104 return PAGE_ACTION_TYPE;
100 } 105 }
101 106
102 infobars::InfoBarDelegate::InfoBarIdentifier 107 infobars::InfoBarDelegate::InfoBarIdentifier
103 SearchGeolocationDisclosureInfoBarDelegate::GetIdentifier() const { 108 SearchGeolocationDisclosureInfoBarDelegate::GetIdentifier() const {
104 return SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_DELEGATE; 109 return SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_DELEGATE;
105 } 110 }
106 111
107 int SearchGeolocationDisclosureInfoBarDelegate::GetIconId() const { 112 int SearchGeolocationDisclosureInfoBarDelegate::GetIconId() const {
108 return IDR_ANDROID_INFOBAR_GEOLOCATION; 113 return IDR_ANDROID_INFOBAR_GEOLOCATION;
109 } 114 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698