Index: chrome/browser/search_engines/template_url_prepopulate_data.cc |
diff --git a/chrome/browser/search_engines/template_url_prepopulate_data.cc b/chrome/browser/search_engines/template_url_prepopulate_data.cc |
index ea133f85ea4a746cf4e094fa5b060343888a1876..f72c726dbe14344b003f3f7c7987f3297a28879e 100644 |
--- a/chrome/browser/search_engines/template_url_prepopulate_data.cc |
+++ b/chrome/browser/search_engines/template_url_prepopulate_data.cc |
@@ -3560,40 +3560,36 @@ void GetPrepopulatedTemplateFromPrefs(Profile* profile, |
if (!list) |
return; |
- string16 name; |
- string16 keyword; |
- std::string search_url; |
- std::string suggest_url; |
- std::string instant_url; |
- const ListValue* alternate_urls = NULL; |
- std::string favicon_url; |
- std::string encoding; |
- int id; |
- |
size_t num_engines = list->GetSize(); |
for (size_t i = 0; i != num_engines; ++i) { |
const DictionaryValue* engine; |
+ string16 name; |
+ string16 keyword; |
+ std::string search_url; |
+ std::string favicon_url; |
+ std::string encoding; |
+ int id; |
+ // The following fields are required for each search engine configuration. |
if (list->GetDictionary(i, &engine) && |
- engine->GetString("name", &name) && |
- engine->GetString("keyword", &keyword) && |
- engine->GetString("search_url", &search_url) && |
- engine->GetString("suggest_url", &suggest_url) && |
- engine->GetString("instant_url", &instant_url) && |
- engine->GetList("alternate_urls", &alternate_urls) && |
+ engine->GetString("name", &name) && !name.empty() && |
+ engine->GetString("keyword", &keyword) && !keyword.empty() && |
+ engine->GetString("search_url", &search_url) && !search_url.empty() && |
engine->GetString("favicon_url", &favicon_url) && |
- engine->GetString("encoding", &encoding) && |
+ !favicon_url.empty() && |
+ engine->GetString("encoding", &encoding) && !encoding.empty() && |
engine->GetInteger("id", &id)) { |
- // These next fields are not allowed to be empty. |
- if (name.empty() || keyword.empty() || search_url.empty() || |
- favicon_url.empty() || encoding.empty()) |
- return; |
- } else { |
- // Got a parsing error. No big deal. |
- continue; |
+ // These fields are optional. |
+ std::string suggest_url; |
+ std::string instant_url; |
+ ListValue empty_list; |
+ const ListValue* alternate_urls = &empty_list; |
+ engine->GetString("suggest_url", &suggest_url); |
+ engine->GetString("instant_url", &instant_url); |
+ engine->GetList("alternate_urls", &alternate_urls); |
+ t_urls->push_back(MakePrepopulatedTemplateURL(profile, name, keyword, |
+ search_url, suggest_url, instant_url, *alternate_urls, favicon_url, |
+ encoding, id)); |
} |
- t_urls->push_back(MakePrepopulatedTemplateURL(profile, name, keyword, |
- search_url, suggest_url, instant_url, *alternate_urls, favicon_url, |
- encoding, id)); |
} |
} |