Index: chrome/browser/search_engines/util.cc |
diff --git a/chrome/browser/search_engines/util.cc b/chrome/browser/search_engines/util.cc |
index 581f513bdbcd982643fe70115425340afacae179..5e7d285297b507cd9fa1cdc4b38c3c190b499be2 100644 |
--- a/chrome/browser/search_engines/util.cc |
+++ b/chrome/browser/search_engines/util.cc |
@@ -149,8 +149,8 @@ void MergeIntoPrepopulatedEngineData(TemplateURLData* prepopulated_url, |
prepopulated_url->last_modified = original_turl->last_modified(); |
} |
-// Loads engines from prepopulate data and merges them in with the existing |
-// engines. This is invoked when the version of the prepopulate data changes. |
+// Merges the provided prepopulated engines with the provided existing engines. |
+// This is invoked when the version of the prepopulate data changes. |
// If |removed_keyword_guids| is not NULL, the Sync GUID of each item removed |
// from the DB will be added to it. Note that this function will take |
// ownership of |prepopulated_urls| and will clear the vector. |
@@ -262,7 +262,6 @@ void GetSearchProvidersUsingKeywordResult( |
DCHECK_EQ(KEYWORDS_RESULT, result.GetType()); |
DCHECK(new_resource_keyword_version); |
- *new_resource_keyword_version = 0; |
WDKeywordsResult keyword_result = reinterpret_cast< |
const WDResult<WDKeywordsResult>*>(&result)->GetValue(); |
@@ -288,6 +287,25 @@ void GetSearchProvidersUsingKeywordResult( |
GetTemplateURLByID(*template_urls, default_search_provider_id); |
} |
+ *new_resource_keyword_version = keyword_result.builtin_keyword_version; |
+ GetSearchProvidersUsingLoadedEngines(service, profile, template_urls, |
+ default_search_provider, |
+ new_resource_keyword_version, |
+ removed_keyword_guids); |
+} |
+ |
+void GetSearchProvidersUsingLoadedEngines( |
+ WebDataService* service, |
+ Profile* profile, |
+ TemplateURLService::TemplateURLVector* template_urls, |
+ TemplateURL** default_search_provider, |
+ int* resource_keyword_version, |
+ std::set<std::string>* removed_keyword_guids) { |
+ DCHECK(service == NULL || BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ DCHECK(template_urls); |
+ DCHECK(default_search_provider); |
+ DCHECK(resource_keyword_version); |
+ |
ScopedVector<TemplateURL> prepopulated_urls; |
size_t default_search_index; |
TemplateURLPrepopulateData::GetPrepopulatedEngines(profile, |
@@ -296,14 +314,16 @@ void GetSearchProvidersUsingKeywordResult( |
*default_search_provider, template_urls, |
removed_keyword_guids); |
- const int resource_keyword_version = |
+ const int prepopulate_resource_keyword_version = |
TemplateURLPrepopulateData::GetDataVersion( |
profile ? profile->GetPrefs() : NULL); |
- if (keyword_result.builtin_keyword_version != resource_keyword_version) { |
+ if (*resource_keyword_version < prepopulate_resource_keyword_version) { |
MergeEnginesFromPrepopulateData(profile, service, &prepopulated_urls, |
default_search_index, template_urls, default_search_provider, |
removed_keyword_guids); |
- *new_resource_keyword_version = resource_keyword_version; |
+ *resource_keyword_version = prepopulate_resource_keyword_version; |
+ } else { |
+ *resource_keyword_version = 0; |
} |
} |