Chromium Code Reviews| Index: chrome/browser/search_engines/template_url_service_test_util.cc |
| diff --git a/chrome/browser/search_engines/template_url_service_test_util.cc b/chrome/browser/search_engines/template_url_service_test_util.cc |
| index 74b8b613f65c8122d546ef857a553a69aa90aeee..5225d941201696846dbd3660f15113582afb9370 100644 |
| --- a/chrome/browser/search_engines/template_url_service_test_util.cc |
| +++ b/chrome/browser/search_engines/template_url_service_test_util.cc |
| @@ -17,6 +17,7 @@ |
| #include "components/search_engines/testing_search_terms_data.h" |
| #include "components/sync_preferences/testing_pref_service_syncable.h" |
| #include "components/webdata/common/web_database_service.h" |
| +#include "extensions/browser/extension_pref_value_map.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace { |
| @@ -24,8 +25,9 @@ namespace { |
| class TestingTemplateURLServiceClient : public ChromeTemplateURLServiceClient { |
| public: |
| TestingTemplateURLServiceClient(history::HistoryService* history_service, |
| + ExtensionPrefValueMap* ext_pref_map, |
| base::string16* search_term) |
| - : ChromeTemplateURLServiceClient(history_service), |
| + : ChromeTemplateURLServiceClient(history_service, ext_pref_map), |
| search_term_(search_term) {} |
| void SetKeywordSearchTermsForURL(const GURL& url, |
| @@ -77,6 +79,8 @@ TemplateURLServiceTestUtil::TemplateURLServiceTestUtil() |
| KeywordWebDataService::ProfileErrorCallback()); |
| web_data_service_->Init(); |
| + ext_pref_map_.reset(new ExtensionPrefValueMap()); |
| + |
| ResetModel(false); |
| } |
| @@ -127,6 +131,7 @@ void TemplateURLServiceTestUtil::ResetModel(bool verify_load) { |
| if (model_) |
| ClearModel(); |
| search_terms_data_ = new TestingSearchTermsData("http://www.google.com/"); |
| + |
| model_.reset(new TemplateURLService( |
| profile()->GetPrefs(), |
| std::unique_ptr<SearchTermsData>(search_terms_data_), |
| @@ -135,7 +140,7 @@ void TemplateURLServiceTestUtil::ResetModel(bool verify_load) { |
| new TestingTemplateURLServiceClient( |
| HistoryServiceFactory::GetForProfileIfExists( |
| profile(), ServiceAccessType::EXPLICIT_ACCESS), |
| - &search_term_)), |
| + ext_pref_map_.get(), &search_term_)), |
| NULL, NULL, base::Closure())); |
| model()->AddObserver(this); |
| changed_count_ = 0; |
| @@ -154,3 +159,57 @@ void TemplateURLServiceTestUtil::SetGoogleBaseURL(const GURL& base_url) { |
| search_terms_data_->set_google_base_url(base_url.spec()); |
| model_->GoogleBaseURLChanged(); |
| } |
| + |
| +void TemplateURLServiceTestUtil::SetExtensionDefaultSearchInPrefs( |
| + const std::string& ext_id, |
| + const TemplateURLData& ext_data) { |
| + auto dict = TemplateURLDataToDictionary(ext_data); |
|
vasilii
2016/12/06 19:16:42
Readabilty would improve with an explicit type..
Alexander Yashkin
2016/12/09 08:19:52
Expanded.
|
| + ext_pref_map_->RegisterExtension(ext_id, base::Time::Now(), true, true); |
| + // Set mapping between extension and pref. |
| + ext_pref_map_->SetExtensionPref( |
| + ext_id, DefaultSearchManager::kDefaultSearchProviderDataPrefName, |
| + extensions::ExtensionPrefsScope::kExtensionPrefsScopeRegular, |
| + dict->DeepCopy()); |
| + // Set extension overriden value in test pref service. |
| + profile()->GetTestingPrefService()->SetExtensionPref( |
| + DefaultSearchManager::kDefaultSearchProviderDataPrefName, dict.release()); |
| +} |
| + |
| +void TemplateURLServiceTestUtil::RemoveExtensionDefaultSearchFromPrefs( |
| + const std::string& ext_id) { |
| + ext_pref_map_->UnregisterExtension(ext_id); |
| + // If no more extensions control DSE pref, remove from test pref service. |
| + auto pref_ext_id = ext_pref_map_->GetExtensionControllingPref( |
| + DefaultSearchManager::kDefaultSearchProviderDataPrefName); |
| + if (pref_ext_id.empty()) { |
| + profile()->GetTestingPrefService()->RemoveExtensionPref( |
| + DefaultSearchManager::kDefaultSearchProviderDataPrefName); |
| + } |
| +} |
| + |
| +TemplateURL* TemplateURLServiceTestUtil::AddExtensionControlledTURL( |
| + std::unique_ptr<TemplateURL> ext_dse, |
| + std::unique_ptr<TemplateURL::AssociatedExtensionInfo> ext_info) { |
| + TemplateURL::AssociatedExtensionInfo ext_info_copy = *ext_info; |
| + TemplateURLData ext_data = ext_dse->data(); |
| + TemplateURL* result = model()->AddExtensionControlledTURL( |
| + std::move(ext_dse), std::move(ext_info)); |
| + if (ext_info_copy.wants_to_be_default_engine) { |
| + // Set extension overriden DSE value to prefs. |
| + SetExtensionDefaultSearchInPrefs(ext_info_copy.extension_id, ext_data); |
| + } |
| + return result; |
| +} |
| + |
| +void TemplateURLServiceTestUtil::RemoveExtensionControlledTURL( |
| + const std::string& ext_id) { |
| + TemplateURL* ext_turl = model()->FindTemplateURLForExtension( |
| + ext_id, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| + ASSERT_TRUE(ext_turl); |
| + ASSERT_TRUE(ext_turl->extension_info_for_tests()); |
| + if (ext_turl->extension_info_for_tests()->wants_to_be_default_engine) { |
| + RemoveExtensionDefaultSearchFromPrefs(ext_id); |
| + } |
| + model()->RemoveExtensionControlledTURL( |
| + ext_id, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| +} |