OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 } | |
OLD | NEW |