Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Unified Diff: chrome/browser/search_engines/template_url_service_test_util.cc

Issue 2479113002: Make extensions DSE persistent in browser prefs (Closed)
Patch Set: Tests updated(rewritten) after review Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698