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