Chromium Code Reviews| 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 |