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 b3c047f4884d5e62fd481a65814a85967d85bb4a..6da1effb40720c3397f068c9723d0fd9c3d52684 100644 |
--- a/chrome/browser/protector/default_search_provider_change.cc |
+++ b/chrome/browser/protector/default_search_provider_change.cc |
@@ -68,7 +68,6 @@ class TemplateURLIsSame { |
url->safe_for_autoreplace() == other_->safe_for_autoreplace() && |
url->show_in_default_list() == other_->show_in_default_list() && |
url->input_encodings() == other_->input_encodings() && |
- url->logo_id() == other_->logo_id() && |
url->prepopulate_id() == other_->prepopulate_id(); |
} |
@@ -157,6 +156,13 @@ DefaultSearchProviderChange::DefaultSearchProviderChange( |
old_id_ = old_url->id(); |
old_name_ = old_url->short_name(); |
} |
+ if (old_id_ == new_id_) { |
+ // This means someone has tampered with the search providers list but not |
+ // with the ID. Old ID is useless in this case so the prepopulated default |
+ // search provider will be used. |
+ old_id_ = 0; |
+ // TODO(ivankr): restore the default search provider from the backup table. |
+ } |
} |
DefaultSearchProviderChange::~DefaultSearchProviderChange() { |
@@ -272,6 +278,13 @@ string16 DefaultSearchProviderChange::GetApplyButtonText() const { |
// the new one so no need to show this button. |
return string16(); |
} |
+ if (!new_name_.empty() && |
+ new_name_ == fallback_name_) { |
+ // The fallback and new search engines have the same name but different |
+ // IDs, which most likely is some fraud attempt, so don't suggest to |
+ // apply the new setting. |
+ return string16(); |
+ } |
if (new_name_.length() > kMaxDisplayedNameLength) |
return l10n_util::GetStringUTF16(IDS_CHANGE_SEARCH_ENGINE_NO_NAME); |
else |