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

Unified Diff: chrome/browser/protector/default_search_provider_change.cc

Issue 8694002: Protector: string and fix segfault fix on button press. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment fix. Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/protector/default_search_provider_change.cc
diff --git a/chrome/browser/protector/default_search_provider_change.cc b/chrome/browser/protector/default_search_provider_change.cc
index 296ebee358b0ed2f86a504987bbabe36ae6dc892..a9ade1d2c9cbadf24c5cf3774c2636717b020070 100644
--- a/chrome/browser/protector/default_search_provider_change.cc
+++ b/chrome/browser/protector/default_search_provider_change.cc
@@ -69,7 +69,6 @@ class DefaultSearchProviderChange : public BaseSettingChange,
string16 new_name_;
// Name of the search engine that we fall back to if the backup is lost.
string16 fallback_name_;
- string16 product_name_;
// Histogram ID of the new search provider.
int new_histogram_id_;
// Default search provider set by |Init| for the period until user makes a
@@ -88,7 +87,6 @@ DefaultSearchProviderChange::DefaultSearchProviderChange(
: old_id_(0),
new_id_(0),
fallback_id_(0),
- product_name_(l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)),
new_histogram_id_(GetSearchProviderHistogramID(new_url)),
default_search_provider_(NULL) {
if (new_url) {
@@ -125,6 +123,8 @@ bool DefaultSearchProviderChange::Init(Protector* protector) {
VLOG(1) << "Fallback to " << fallback_name_;
}
+ // This must be called after the initial |SetDefaultSearchProvider| call
+ // because the latter will remove the observer.
protector->GetTemplateURLService()->AddObserver(this);
return true;
@@ -175,12 +175,10 @@ string16 DefaultSearchProviderChange::GetBubbleTitle() const {
string16 DefaultSearchProviderChange::GetBubbleMessage() const {
if (fallback_name_.empty())
- return l10n_util::GetStringFUTF16(
- IDS_SEARCH_ENGINE_CHANGE_MESSAGE, product_name_);
+ return l10n_util::GetStringUTF16(IDS_SEARCH_ENGINE_CHANGE_MESSAGE);
else
return l10n_util::GetStringFUTF16(
- IDS_SEARCH_ENGINE_CHANGE_NO_BACKUP_MESSAGE,
- product_name_, fallback_name_);
+ IDS_SEARCH_ENGINE_CHANGE_NO_BACKUP_MESSAGE, fallback_name_);
}
string16 DefaultSearchProviderChange::GetApplyButtonText() const {
@@ -249,8 +247,13 @@ const TemplateURL* DefaultSearchProviderChange::SetDefaultSearchProvider(
DCHECK(url);
}
if (url) {
+ // Remove ourselves from the observer list to prevent from catching our own
+ // change. It is safe to do this multiple times or before adding ourselves.
+ url_service->RemoveObserver(this);
url_service->SetDefaultSearchProvider(url);
VLOG(1) << "Default search provider set to: " << url->short_name();
+ // No need to re-add observer again because any further changes to the
+ // default search provider are of no interest.
}
return url;
}
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698