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

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

Issue 229763005: Store default search provider data in dictionary pref. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: put constants in a namespace Created 6 years, 8 months 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.cc
diff --git a/chrome/browser/search_engines/template_url_service.cc b/chrome/browser/search_engines/template_url_service.cc
index 1fa3c2a79824b900baea8869d9dd6f379504ac43..7fd08cf18983944598e39d82d4af30188afc1653 100644
--- a/chrome/browser/search_engines/template_url_service.cc
+++ b/chrome/browser/search_engines/template_url_service.cc
@@ -33,6 +33,7 @@
#include "chrome/browser/search_engines/search_host_to_urls_map.h"
#include "chrome/browser/search_engines/search_terms_data.h"
#include "chrome/browser/search_engines/template_url.h"
+#include "chrome/browser/search_engines/template_url_keys.h"
#include "chrome/browser/search_engines/template_url_prepopulate_data.h"
#include "chrome/browser/search_engines/template_url_service_observer.h"
#include "chrome/browser/search_engines/util.h"
@@ -56,7 +57,6 @@ typedef SearchHostToURLsMap::TemplateURLSet TemplateURLSet;
typedef TemplateURLService::SyncDataMap SyncDataMap;
namespace {
-
erikwright (departed) 2014/04/22 15:47:24 nit: restore blank line.
Cait (Slow) 2014/04/22 19:54:13 Done.
bool TemplateURLsHaveSamePrefs(const TemplateURL* url1,
const TemplateURL* url2) {
if (url1 == url2)
@@ -676,6 +676,7 @@ bool TemplateURLService::CanMakeDefault(const TemplateURL* url) {
void TemplateURLService::SetUserSelectedDefaultSearchProvider(
TemplateURL* url) {
SetDefaultSearchProvider(url);
+ WriteDataToPrefsDictionary(url);
}
TemplateURL* TemplateURLService::GetDefaultSearchProvider() {
@@ -2752,3 +2753,156 @@ void TemplateURLService::
new_dse = FindNewDefaultSearchProvider();
SetDefaultSearchProviderNoNotify(new_dse);
}
+
+bool TemplateURLService::ReadDataFromPrefsDictionary(TemplateURL** url) {
+ PrefService* prefs = GetPrefs();
+ if (!prefs)
+ return false;
+
+ const base::DictionaryValue* url_dict =
+ prefs->GetDictionary(prefs::kDefaultSearchProviderData);
+ if (!url_dict)
+ return false;
+
+ TemplateURLData data;
+ std::string search_url;
+ base::string16 keyword;
+
+ url_dict->GetString(default_search::kKeyword, &keyword);
+ url_dict->GetString(default_search::kURL, &search_url);
+
+ DCHECK(!keyword.empty());
+ DCHECK(!search_url.empty());
+
+ data.SetKeyword(keyword);
+ data.SetURL(search_url);
+
+ std::string id;
+ url_dict->GetString(default_search::kID, &id);
+ base::StringToInt64(id, &data.id);
+ url_dict->GetString(default_search::kShortName, &data.short_name);
+ url_dict->GetInteger(default_search::kPrepopulateID, &data.prepopulate_id);
+ url_dict->GetString(default_search::kSyncGUID, &data.sync_guid);
+
+ url_dict->GetString(default_search::kSuggestionsURL, &data.suggestions_url);
+ url_dict->GetString(default_search::kInstantURL, &data.instant_url);
+ url_dict->GetString(default_search::kImageURL, &data.image_url);
+ url_dict->GetString(default_search::kNewTabURL, &data.new_tab_url);
+
+ std::string favicon_url;
+ std::string originating_url;
+ url_dict->GetString(default_search::kFaviconURL, &favicon_url);
+ url_dict->GetString(default_search::kOriginatingURL, &originating_url);
+ data.favicon_url = GURL(favicon_url);
+ data.originating_url = GURL(originating_url);
+
+ url_dict->GetString(default_search::kSearchURLPostParams,
+ &data.search_url_post_params);
+ url_dict->GetString(default_search::kSuggestionsURLPostParams,
+ &data.suggestions_url_post_params);
+ url_dict->GetString(default_search::kInstantURLPostParams,
+ &data.instant_url_post_params);
+ url_dict->GetString(default_search::kImageURLPostParams,
+ &data.image_url_post_params);
+
+ url_dict->GetBoolean(default_search::kSafeForAutoReplace,
+ &data.safe_for_autoreplace);
+
+ double date_created = 0.0;
+ double last_modified = 0.0;
+ url_dict->GetDouble(default_search::kDateCreated, &date_created);
+ url_dict->GetDouble(default_search::kLastModified, &last_modified);
+ data.date_created = base::Time::FromInternalValue(date_created);
+ data.last_modified = base::Time::FromInternalValue(last_modified);
+
+ url_dict->GetInteger(default_search::kUsageCount, &data.usage_count);
+
+ const base::ListValue* alternate_urls = new base::ListValue;
+ url_dict->GetList(default_search::kAlternateURLs, &alternate_urls);
+ data.alternate_urls.clear();
+ for (size_t i = 0; i < alternate_urls->GetSize(); ++i) {
+ std::string alternate_url;
+ if (alternate_urls->GetString(i, &alternate_url))
+ data.alternate_urls.push_back(alternate_url);
+ }
+
+ const base::ListValue* encodings = new base::ListValue;
+ url_dict->GetList(default_search::kInputEncodings, &encodings);
+ data.input_encodings.clear();
+ for (size_t i = 0; i < encodings->GetSize(); ++i) {
+ std::string encoding;
+ if (encodings->GetString(i, &encoding))
+ data.input_encodings.push_back(encoding);
+ }
+
+ url_dict->GetString(default_search::kSearchTermsReplacementKey,
+ &data.search_terms_replacement_key);
+
+ url_dict->GetBoolean(default_search::kCreatedByPolicy,
+ &data.created_by_policy);
+
+ data.show_in_default_list = true;
+
+ *url = new TemplateURL(profile_, data);
+
+ return true;
+}
+
+void TemplateURLService::WriteDataToPrefsDictionary(const TemplateURL* url) {
+ PrefService* prefs = GetPrefs();
+ if (!prefs)
+ return;
+
+ base::DictionaryValue* url_dict = new base::DictionaryValue;
+ url_dict->SetString(default_search::kID, base::Int64ToString(url->id()));
gab 2014/04/17 00:37:54 Can you push this latest update to argon18? I can'
+ url_dict->SetString(default_search::kShortName, url->short_name());
+ url_dict->SetString(default_search::kKeyword, url->keyword());
+ url_dict->SetInteger(default_search::kPrepopulateID, url->prepopulate_id());
+ url_dict->SetString(default_search::kSyncGUID, url->sync_guid());
+
+ url_dict->SetString(default_search::kURL, url->url());
+ url_dict->SetString(default_search::kSuggestionsURL, url->suggestions_url());
+ url_dict->SetString(default_search::kInstantURL, url->instant_url());
+ url_dict->SetString(default_search::kImageURL, url->image_url());
+ url_dict->SetString(default_search::kNewTabURL, url->new_tab_url());
+ url_dict->SetString(default_search::kFaviconURL, url->favicon_url().spec());
+ url_dict->SetString(default_search::kOriginatingURL,
+ url->originating_url().spec());
+
+ url_dict->SetString(default_search::kSearchURLPostParams,
+ url->search_url_post_params());
+ url_dict->SetString(default_search::kSuggestionsURLPostParams,
+ url->suggestions_url_post_params());
+ url_dict->SetString(default_search::kInstantURLPostParams,
+ url->instant_url_post_params());
+ url_dict->SetString(default_search::kImageURLPostParams,
+ url->image_url_post_params());
+
+ url_dict->SetBoolean(default_search::kSafeForAutoReplace,
+ url->safe_for_autoreplace());
+
+ url_dict->SetDouble(default_search::kDateCreated,
+ url->date_created().ToInternalValue());
+ url_dict->SetDouble(default_search::kLastModified,
+ url->last_modified().ToInternalValue());
+ url_dict->SetInteger(default_search::kUsageCount,
+ url->usage_count());
+
+ base::ListValue alternate_urls;
+ for (size_t i = 0; i < url->alternate_urls().size(); ++i)
+ alternate_urls.AppendString(url->alternate_urls()[i]);
+ url_dict->Set(default_search::kAlternateURLs, &alternate_urls);
erikwright (departed) 2014/04/22 15:47:24 Doesn't Set() take ownership of alternate_urls?
Cait (Slow) 2014/04/22 19:54:13 Done.
+
+ base::ListValue encodings;
+ for (size_t i = 0; i < url->input_encodings().size(); ++i)
+ encodings.AppendString(url->input_encodings()[i]);
+ url_dict->Set(default_search::kInputEncodings, &encodings);
+
+ url_dict->SetString(default_search::kSearchTermsReplacementKey,
+ url->search_terms_replacement_key());
+
+ url_dict->SetBoolean(default_search::kCreatedByPolicy,
+ url->created_by_policy());
+
+ prefs->Set(prefs::kDefaultSearchProviderData, *url_dict);
+}

Powered by Google App Engine
This is Rietveld 408576698