Chromium Code Reviews| Index: chrome/browser/search_engines/util.cc |
| diff --git a/chrome/browser/search_engines/util.cc b/chrome/browser/search_engines/util.cc |
| index 2cbbe088dfc299176f787f2c4e0b5c9168e2b656..651bc7b1790d72d557173a1d138dd1fc33b22834 100644 |
| --- a/chrome/browser/search_engines/util.cc |
| +++ b/chrome/browser/search_engines/util.cc |
| @@ -64,6 +64,20 @@ static void RemoveDuplicatePrepopulateIDs( |
| } |
| } |
| +// Returns the TemplateURL with id specified from the list of TemplateURLs. |
| +// If not found, returns NULL. |
| +TemplateURL* GetTemplateURLByID( |
| + const std::vector<TemplateURL*>& template_urls, |
| + int64 id) { |
| + for (std::vector<TemplateURL*>::const_iterator i = template_urls.begin(); |
| + i != template_urls.end(); ++i) { |
| + if ((*i)->id() == id) { |
| + return *i; |
| + } |
| + } |
| + return NULL; |
| +} |
| + |
| // Loads engines from prepopulate data and merges them in with the existing |
| // engines. This is invoked when the version of the prepopulate data changes. |
| void MergeEnginesFromPrepopulateData( |
| @@ -162,7 +176,7 @@ void GetSearchProvidersUsingKeywordResult( |
| DCHECK(template_urls->empty()); |
| DCHECK(default_search_provider); |
| DCHECK(*default_search_provider == NULL); |
| - DCHECK(result.GetType() == KEYWORDS_RESULT); |
| + DCHECK_EQ(result.GetType(), KEYWORDS_RESULT); |
| DCHECK(new_resource_keyword_version); |
| *new_resource_keyword_version = 0; |
| @@ -180,15 +194,10 @@ void GetSearchProvidersUsingKeywordResult( |
| RemoveDuplicatePrepopulateIDs(template_urls, service); |
| } |
| - if (keyword_result.default_search_provider_id) { |
| - // See if we can find the default search provider. |
| - for (std::vector<TemplateURL*>::iterator i = template_urls->begin(); |
| - i != template_urls->end(); ++i) { |
| - if ((*i)->id() == keyword_result.default_search_provider_id) { |
| - *default_search_provider = *i; |
| - break; |
| - } |
| - } |
| + int64 default_search_provider_id = keyword_result.default_search_provider_id; |
| + if (default_search_provider_id) { |
| + *default_search_provider = |
| + GetTemplateURLByID(*template_urls, default_search_provider_id); |
| } |
| if (keyword_result.builtin_keyword_version != resource_keyword_version) { |
| @@ -198,3 +207,20 @@ void GetSearchProvidersUsingKeywordResult( |
| } |
| } |
| +bool DidDefaultSearchProviderChange( |
| + const WDTypedResult& result, |
| + const std::vector<TemplateURL*>& template_urls, |
| + const TemplateURL** backup_default_search_provider) { |
| + DCHECK(backup_default_search_provider); |
| + DCHECK(*backup_default_search_provider == NULL); |
| + DCHECK_EQ(result.GetType(), KEYWORDS_RESULT); |
| + |
| + WDKeywordsResult keyword_result = reinterpret_cast< |
| + const WDResult<WDKeywordsResult>*>(&result)->GetValue(); |
| + |
| + *backup_default_search_provider = GetTemplateURLByID( |
| + template_urls, |
| + keyword_result.default_search_provider_id_backup); |
| + return keyword_result.did_default_search_provider_change; |
|
sky
2011/10/21 21:34:11
Can't we return right away if !did_default_Search_
whywhat
2011/10/24 15:30:17
Done.
|
| +} |
| + |