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

Side by Side 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: just pref changes 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/search_engines/template_url_service.h" 5 #include "chrome/browser/search_engines/template_url_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 #include "sync/api/sync_error_factory.h" 50 #include "sync/api/sync_error_factory.h"
51 #include "sync/protocol/search_engine_specifics.pb.h" 51 #include "sync/protocol/search_engine_specifics.pb.h"
52 #include "sync/protocol/sync.pb.h" 52 #include "sync/protocol/sync.pb.h"
53 #include "ui/base/l10n/l10n_util.h" 53 #include "ui/base/l10n/l10n_util.h"
54 54
55 typedef SearchHostToURLsMap::TemplateURLSet TemplateURLSet; 55 typedef SearchHostToURLsMap::TemplateURLSet TemplateURLSet;
56 typedef TemplateURLService::SyncDataMap SyncDataMap; 56 typedef TemplateURLService::SyncDataMap SyncDataMap;
57 57
58 namespace { 58 namespace {
59 59
60 // Keys for kDefaultSearchProviderData Pref.
61 const char kID[] = "id";
62 const char kShortName[] = "short_name";
63 const char kKeyword[] = "keyword";
64 const char kPrepopulateID[] = "prepopulate_id";
65 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
66
67 const char kURL[] = "url";
68 const char kSuggestionsURL[] = "suggestions_url";
69 const char kInstantURL[] = "instant_url";
70 const char kImageURL[] = "image_url";
71 const char kNewTabURL[] = "new_tab_url";
72 const char kFaviconURL[] = "favicon_url";
73 const char kOriginatingURL[] = "originating_url";
74
75 const char kSearchURLPostParams[] = "search_url_post_params";
76 const char kSuggestionsURLPostParams[] = "suggestions_url_post_params";
77 const char kInstantURLPostParams[] = "instant_url_post_params";
78 const char kImageURLPostParams[] = "image_url_post_params";
79
80 const char kSafeForAutoReplace[] = "safe_for_autoreplace";
81 const char kInputEncodings[] = "input_encodings";
82
83 const char kDateCreated[] = "date_created";
84 const char kLastModified[] = "last_modified";
85
86 const char kUsageCount[] = "usage_count";
87 const char kAlternateURLs[] = "alternate_urls";
88 const char kSearchTermsReplacementKey[] = "search_terms_replacement_key";
89
60 bool TemplateURLsHaveSamePrefs(const TemplateURL* url1, 90 bool TemplateURLsHaveSamePrefs(const TemplateURL* url1,
61 const TemplateURL* url2) { 91 const TemplateURL* url2) {
62 if (url1 == url2) 92 if (url1 == url2)
63 return true; 93 return true;
64 return (url1 != NULL) && (url2 != NULL) && 94 return (url1 != NULL) && (url2 != NULL) &&
65 (url1->short_name() == url2->short_name()) && 95 (url1->short_name() == url2->short_name()) &&
66 url1->HasSameKeywordAs(*url2) && 96 url1->HasSameKeywordAs(*url2) &&
67 (url1->url() == url2->url()) && 97 (url1->url() == url2->url()) &&
68 (url1->suggestions_url() == url2->suggestions_url()) && 98 (url1->suggestions_url() == url2->suggestions_url()) &&
69 (url1->instant_url() == url2->instant_url()) && 99 (url1->instant_url() == url2->instant_url()) &&
(...skipping 2675 matching lines...) Expand 10 before | Expand all | Expand 10 after
2745 new_dse = *i; 2775 new_dse = *i;
2746 break; 2776 break;
2747 } 2777 }
2748 } 2778 }
2749 } 2779 }
2750 } 2780 }
2751 if (!new_dse) 2781 if (!new_dse)
2752 new_dse = FindNewDefaultSearchProvider(); 2782 new_dse = FindNewDefaultSearchProvider();
2753 SetDefaultSearchProviderNoNotify(new_dse); 2783 SetDefaultSearchProviderNoNotify(new_dse);
2754 } 2784 }
2785
2786 bool TemplateURLService::ReadDataFromPrefsDictionary(TemplateURL* url) {
2787 PrefService* prefs = GetPrefs();
2788 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.
2789 return false;
2790
2791 const base::DictionaryValue* url_dict =
2792 prefs->GetDictionary(prefs::kDefaultSearchProviderData);
2793 if (!url_dict)
2794 return false;
2795
2796 TemplateURLData data;
2797 std::string search_url;
2798 base::string16 keyword;
2799
2800 url_dict->GetString(kKeyword, &keyword);
2801 url_dict->GetString(kURL, &search_url);
2802
2803 DCHECK(!keyword.empty());
2804 DCHECK(!search_url.empty());
2805
2806 data.SetKeyword(keyword);
2807 data.SetURL(search_url);
2808
2809 std::string id;
2810 url_dict->GetString(kID, &id);
2811 base::StringToInt64(id, &data.id);
2812 url_dict->GetString(kShortName, &data.short_name);
2813 url_dict->GetInteger(kPrepopulateID, &data.prepopulate_id);
2814 url_dict->GetString(kSyncGUID, &data.sync_guid);
2815
2816 url_dict->GetString(kSuggestionsURL, &data.suggestions_url);
2817 url_dict->GetString(kInstantURL, &data.instant_url);
2818 url_dict->GetString(kImageURL, &data.image_url);
2819 url_dict->GetString(kNewTabURL, &data.new_tab_url);
2820
2821 std::string favicon_url;
2822 std::string originating_url;
2823 url_dict->GetString(kFaviconURL, &favicon_url);
2824 url_dict->GetString(kOriginatingURL, &originating_url);
2825 data.favicon_url = GURL(favicon_url);
2826 data.originating_url = GURL(originating_url);
2827
2828 url_dict->GetString(kSearchURLPostParams, &data.search_url_post_params);
2829 url_dict->GetString(kSuggestionsURLPostParams,
2830 &data.suggestions_url_post_params);
2831 url_dict->GetString(kInstantURLPostParams, &data.instant_url_post_params);
2832 url_dict->GetString(kImageURLPostParams, &data.image_url_post_params);
2833
2834 url_dict->GetBoolean(kSafeForAutoReplace, &data.safe_for_autoreplace);
2835
2836 std::string encodings;
2837 url_dict->GetString(kInputEncodings, &encodings);
2838 base::SplitString(encodings, ';', &data.input_encodings);
2839
2840 double date_created = 0.0;
2841 double last_modified = 0.0;
2842 url_dict->GetDouble(kDateCreated, &date_created);
2843 url_dict->GetDouble(kLastModified, &last_modified);
2844 data.date_created = base::Time::FromInternalValue(date_created);
2845 data.last_modified = base::Time::FromInternalValue(last_modified);
2846
2847 url_dict->GetInteger(kUsageCount, &data.usage_count);
2848
2849 const base::ListValue* alternate_urls = new base::ListValue;
2850 url_dict->GetList(prefs::kDefaultSearchProviderAlternateURLs,
2851 &alternate_urls);
2852 data.alternate_urls.clear();
2853 for (size_t i = 0; i < alternate_urls->GetSize(); ++i) {
2854 std::string alternate_url;
2855 if (alternate_urls->GetString(i, &alternate_url))
2856 data.alternate_urls.push_back(alternate_url);
2857 }
2858
2859 url_dict->GetString(kSearchTermsReplacementKey,
2860 &data.search_terms_replacement_key);
2861
2862 data.show_in_default_list = true;
2863
2864 url = new TemplateURL(profile_, data);
2865
2866 return true;
2867 }
2868
2869 void TemplateURLService::WriteDataToPrefsDictionary(const TemplateURL* url) {
2870 PrefService* prefs = GetPrefs();
2871 if (!prefs)
2872 return;
2873
2874 base::DictionaryValue* url_dict = new base::DictionaryValue;
2875 url_dict->SetString(kID, base::Int64ToString(url->id()));
2876 url_dict->SetString(kShortName, url->short_name());
2877 url_dict->SetString(kKeyword, url->keyword());
2878 url_dict->SetInteger(kPrepopulateID, url->prepopulate_id());
2879 url_dict->SetString(kSyncGUID, url->sync_guid());
2880
2881 url_dict->SetString(kURL, url->url());
2882 url_dict->SetString(kSuggestionsURL, url->suggestions_url());
2883 url_dict->SetString(kInstantURL, url->instant_url());
2884 url_dict->SetString(kImageURL, url->image_url());
2885 url_dict->SetString(kNewTabURL, url->new_tab_url());
2886 url_dict->SetString(kFaviconURL, url->favicon_url().spec());
2887 url_dict->SetString(kOriginatingURL, url->originating_url().spec());
2888
2889 url_dict->SetString(kSearchURLPostParams, url->search_url_post_params());
2890 url_dict->SetString(kSuggestionsURLPostParams,
2891 url->suggestions_url_post_params());
2892 url_dict->SetString(kInstantURLPostParams,
2893 url->instant_url_post_params());
2894 url_dict->SetString(kImageURLPostParams, url->image_url_post_params());
2895
2896 url_dict->SetBoolean(kSafeForAutoReplace, url->safe_for_autoreplace());
2897 url_dict->SetString(kInputEncodings, JoinString(url->input_encodings(), ';'));
2898
2899 url_dict->SetDouble(kDateCreated, url->date_created().ToInternalValue());
2900 url_dict->SetDouble(kLastModified, url->last_modified().ToInternalValue());
2901 url_dict->SetInteger(kUsageCount, url->usage_count());
2902
2903 base::ListValue alternate_urls;
2904 for (size_t i = 0; i < url->alternate_urls().size(); ++i)
2905 alternate_urls.AppendString(url->alternate_urls()[i]);
2906 url_dict->Set(kAlternateURLs, &alternate_urls);
2907
2908 url_dict->SetString(kSearchTermsReplacementKey,
2909 url->search_terms_replacement_key());
2910 prefs->Set(prefs::kDefaultSearchProviderData, *url_dict);
2911 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698