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..812dbeb8a490e7eb1fe4b3c7d673fd440611a8d7 100644 |
| --- a/chrome/browser/search_engines/template_url_service.cc |
| +++ b/chrome/browser/search_engines/template_url_service.cc |
| @@ -57,6 +57,36 @@ typedef TemplateURLService::SyncDataMap SyncDataMap; |
| namespace { |
| +// Keys for kDefaultSearchProviderData Pref. |
| +const char kID[] = "id"; |
| +const char kShortName[] = "short_name"; |
| +const char kKeyword[] = "keyword"; |
| +const char kPrepopulateID[] = "prepopulate_id"; |
| +const char kSyncGUID[] = "sync_guid"; |
|
gab
2014/04/11 20:27:46
Shouldn't this be "synced_guid"?
Cait (Slow)
2014/04/14 15:20:35
Done.
Cait (Slow)
2014/04/14 15:28:01
Actually, looking closer at this, TemplateURLData
gab
2014/04/14 15:30:16
Ah ok, then let's keep it as "sync_guid".
No need
|
| + |
| +const char kURL[] = "url"; |
| +const char kSuggestionsURL[] = "suggestions_url"; |
| +const char kInstantURL[] = "instant_url"; |
| +const char kImageURL[] = "image_url"; |
| +const char kNewTabURL[] = "new_tab_url"; |
| +const char kFaviconURL[] = "favicon_url"; |
| +const char kOriginatingURL[] = "originating_url"; |
| + |
| +const char kSearchURLPostParams[] = "search_url_post_params"; |
| +const char kSuggestionsURLPostParams[] = "suggestions_url_post_params"; |
| +const char kInstantURLPostParams[] = "instant_url_post_params"; |
| +const char kImageURLPostParams[] = "image_url_post_params"; |
| + |
| +const char kSafeForAutoReplace[] = "safe_for_autoreplace"; |
| +const char kInputEncodings[] = "input_encodings"; |
| + |
| +const char kDateCreated[] = "date_created"; |
| +const char kLastModified[] = "last_modified"; |
| + |
| +const char kUsageCount[] = "usage_count"; |
| +const char kAlternateURLs[] = "alternate_urls"; |
| +const char kSearchTermsReplacementKey[] = "search_terms_replacement_key"; |
| + |
| bool TemplateURLsHaveSamePrefs(const TemplateURL* url1, |
| const TemplateURL* url2) { |
| if (url1 == url2) |
| @@ -2752,3 +2782,130 @@ void TemplateURLService:: |
| new_dse = FindNewDefaultSearchProvider(); |
| SetDefaultSearchProviderNoNotify(new_dse); |
| } |
| + |
| +bool TemplateURLService::ReadDataFromPrefsDictionary(TemplateURL* url) { |
| + PrefService* prefs = GetPrefs(); |
| + if (!prefs || !prefs->HasPrefPath(prefs::kDefaultSearchProviderData)) |
|
gab
2014/04/11 20:27:46
I don't think we want to check HasPrefPath() here.
Cait (Slow)
2014/04/14 15:20:35
Done.
|
| + 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(kKeyword, &keyword); |
| + url_dict->GetString(kURL, &search_url); |
| + |
| + DCHECK(!keyword.empty()); |
| + DCHECK(!search_url.empty()); |
| + |
| + data.SetKeyword(keyword); |
| + data.SetURL(search_url); |
| + |
| + std::string id; |
| + url_dict->GetString(kID, &id); |
| + base::StringToInt64(id, &data.id); |
| + url_dict->GetString(kShortName, &data.short_name); |
| + url_dict->GetInteger(kPrepopulateID, &data.prepopulate_id); |
| + url_dict->GetString(kSyncGUID, &data.sync_guid); |
| + |
| + url_dict->GetString(kSuggestionsURL, &data.suggestions_url); |
| + url_dict->GetString(kInstantURL, &data.instant_url); |
| + url_dict->GetString(kImageURL, &data.image_url); |
| + url_dict->GetString(kNewTabURL, &data.new_tab_url); |
| + |
| + std::string favicon_url; |
| + std::string originating_url; |
| + url_dict->GetString(kFaviconURL, &favicon_url); |
| + url_dict->GetString(kOriginatingURL, &originating_url); |
| + data.favicon_url = GURL(favicon_url); |
| + data.originating_url = GURL(originating_url); |
| + |
| + url_dict->GetString(kSearchURLPostParams, &data.search_url_post_params); |
| + url_dict->GetString(kSuggestionsURLPostParams, |
| + &data.suggestions_url_post_params); |
| + url_dict->GetString(kInstantURLPostParams, &data.instant_url_post_params); |
| + url_dict->GetString(kImageURLPostParams, &data.image_url_post_params); |
| + |
| + url_dict->GetBoolean(kSafeForAutoReplace, &data.safe_for_autoreplace); |
| + |
| + std::string encodings; |
| + url_dict->GetString(kInputEncodings, &encodings); |
| + base::SplitString(encodings, ';', &data.input_encodings); |
| + |
| + double date_created = 0.0; |
| + double last_modified = 0.0; |
| + url_dict->GetDouble(kDateCreated, &date_created); |
| + url_dict->GetDouble(kLastModified, &last_modified); |
| + data.date_created = base::Time::FromInternalValue(date_created); |
| + data.last_modified = base::Time::FromInternalValue(last_modified); |
| + |
| + url_dict->GetInteger(kUsageCount, &data.usage_count); |
| + |
| + const base::ListValue* alternate_urls = new base::ListValue; |
| + url_dict->GetList(prefs::kDefaultSearchProviderAlternateURLs, |
| + &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); |
| + } |
| + |
| + url_dict->GetString(kSearchTermsReplacementKey, |
| + &data.search_terms_replacement_key); |
| + |
| + 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(kID, base::Int64ToString(url->id())); |
| + url_dict->SetString(kShortName, url->short_name()); |
| + url_dict->SetString(kKeyword, url->keyword()); |
| + url_dict->SetInteger(kPrepopulateID, url->prepopulate_id()); |
| + url_dict->SetString(kSyncGUID, url->sync_guid()); |
| + |
| + url_dict->SetString(kURL, url->url()); |
| + url_dict->SetString(kSuggestionsURL, url->suggestions_url()); |
| + url_dict->SetString(kInstantURL, url->instant_url()); |
| + url_dict->SetString(kImageURL, url->image_url()); |
| + url_dict->SetString(kNewTabURL, url->new_tab_url()); |
| + url_dict->SetString(kFaviconURL, url->favicon_url().spec()); |
| + url_dict->SetString(kOriginatingURL, url->originating_url().spec()); |
| + |
| + url_dict->SetString(kSearchURLPostParams, url->search_url_post_params()); |
| + url_dict->SetString(kSuggestionsURLPostParams, |
| + url->suggestions_url_post_params()); |
| + url_dict->SetString(kInstantURLPostParams, |
| + url->instant_url_post_params()); |
| + url_dict->SetString(kImageURLPostParams, url->image_url_post_params()); |
| + |
| + url_dict->SetBoolean(kSafeForAutoReplace, url->safe_for_autoreplace()); |
| + url_dict->SetString(kInputEncodings, JoinString(url->input_encodings(), ';')); |
| + |
| + url_dict->SetDouble(kDateCreated, url->date_created().ToInternalValue()); |
| + url_dict->SetDouble(kLastModified, url->last_modified().ToInternalValue()); |
| + url_dict->SetInteger(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(kAlternateURLs, &alternate_urls); |
| + |
| + url_dict->SetString(kSearchTermsReplacementKey, |
| + url->search_terms_replacement_key()); |
| + prefs->Set(prefs::kDefaultSearchProviderData, *url_dict); |
| +} |