| 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..a5ac1c538a6baf3fee774d486386360a3b9e8d5e 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,58 @@ 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) {
|
| + std::unique_ptr<base::DictionaryValue> dict =
|
| + TemplateURLDataToDictionary(ext_data);
|
| + 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->GetExtensionInfoForTesting());
|
| + if (ext_turl->GetExtensionInfoForTesting()->wants_to_be_default_engine) {
|
| + RemoveExtensionDefaultSearchFromPrefs(ext_id);
|
| + }
|
| + model()->RemoveExtensionControlledTURL(
|
| + ext_id, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
|
| +}
|
|
|