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); |
+} |