OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/translate/translate_prefs.h" | 5 #include "chrome/browser/translate/translate_prefs.h" |
6 | 6 |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "chrome/browser/prefs/pref_registry_syncable.h" | 9 #include "chrome/browser/prefs/pref_registry_syncable.h" |
10 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 10 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
11 | 11 |
12 const char TranslatePrefs::kPrefTranslateLanguageBlacklist[] = | 12 const char TranslatePrefs::kPrefTranslateLanguageBlacklist[] = |
13 "translate_language_blacklist"; | 13 "translate_language_blacklist"; |
14 const char TranslatePrefs::kPrefTranslateSiteBlacklist[] = | 14 const char TranslatePrefs::kPrefTranslateSiteBlacklist[] = |
15 "translate_site_blacklist"; | 15 "translate_site_blacklist"; |
16 const char TranslatePrefs::kPrefTranslateWhitelists[] = | 16 const char TranslatePrefs::kPrefTranslateWhitelists[] = |
17 "translate_whitelists"; | 17 "translate_whitelists"; |
18 const char TranslatePrefs::kPrefTranslateDeniedCount[] = | 18 const char TranslatePrefs::kPrefTranslateDeniedCount[] = |
19 "translate_denied_count"; | 19 "translate_denied_count"; |
20 const char TranslatePrefs::kPrefTranslateAcceptedCount[] = | 20 const char TranslatePrefs::kPrefTranslateAcceptedCount[] = |
21 "translate_accepted_count"; | 21 "translate_accepted_count"; |
22 | 22 |
23 // TranslatePrefs: public: ----------------------------------------------------- | 23 // TranslatePrefs: public: ----------------------------------------------------- |
24 | 24 |
25 TranslatePrefs::TranslatePrefs(PrefService* user_prefs) | 25 TranslatePrefs::TranslatePrefs(PrefService* user_prefs) |
26 : prefs_(user_prefs) { | 26 : prefs_(user_prefs) { |
27 } | 27 } |
28 | 28 |
29 bool TranslatePrefs::IsLanguageBlacklisted( | 29 bool TranslatePrefs::IsLanguageBlacklisted( |
30 const std::string& original_language) { | 30 const std::string& original_language) const { |
31 return IsValueBlacklisted(kPrefTranslateLanguageBlacklist, original_language); | 31 return IsValueBlacklisted(kPrefTranslateLanguageBlacklist, original_language); |
32 } | 32 } |
33 | 33 |
34 void TranslatePrefs::BlacklistLanguage(const std::string& original_language) { | 34 void TranslatePrefs::BlacklistLanguage(const std::string& original_language) { |
35 BlacklistValue(kPrefTranslateLanguageBlacklist, original_language); | 35 BlacklistValue(kPrefTranslateLanguageBlacklist, original_language); |
36 } | 36 } |
37 | 37 |
38 void TranslatePrefs::RemoveLanguageFromBlacklist( | 38 void TranslatePrefs::RemoveLanguageFromBlacklist( |
39 const std::string& original_language) { | 39 const std::string& original_language) { |
40 RemoveValueFromBlacklist(kPrefTranslateLanguageBlacklist, original_language); | 40 RemoveValueFromBlacklist(kPrefTranslateLanguageBlacklist, original_language); |
41 } | 41 } |
42 | 42 |
43 bool TranslatePrefs::IsSiteBlacklisted(const std::string& site) { | 43 bool TranslatePrefs::IsSiteBlacklisted(const std::string& site) const { |
44 return IsValueBlacklisted(kPrefTranslateSiteBlacklist, site); | 44 return IsValueBlacklisted(kPrefTranslateSiteBlacklist, site); |
45 } | 45 } |
46 | 46 |
47 void TranslatePrefs::BlacklistSite(const std::string& site) { | 47 void TranslatePrefs::BlacklistSite(const std::string& site) { |
48 BlacklistValue(kPrefTranslateSiteBlacklist, site); | 48 BlacklistValue(kPrefTranslateSiteBlacklist, site); |
49 } | 49 } |
50 | 50 |
51 void TranslatePrefs::RemoveSiteFromBlacklist(const std::string& site) { | 51 void TranslatePrefs::RemoveSiteFromBlacklist(const std::string& site) { |
52 RemoveValueFromBlacklist(kPrefTranslateSiteBlacklist, site); | 52 RemoveValueFromBlacklist(kPrefTranslateSiteBlacklist, site); |
53 } | 53 } |
(...skipping 28 matching lines...) Expand all Loading... |
82 const std::string& target_language) { | 82 const std::string& target_language) { |
83 DictionaryPrefUpdate update(prefs_, kPrefTranslateWhitelists); | 83 DictionaryPrefUpdate update(prefs_, kPrefTranslateWhitelists); |
84 DictionaryValue* dict = update.Get(); | 84 DictionaryValue* dict = update.Get(); |
85 if (!dict) { | 85 if (!dict) { |
86 NOTREACHED() << "Unregistered translate whitelist pref"; | 86 NOTREACHED() << "Unregistered translate whitelist pref"; |
87 return; | 87 return; |
88 } | 88 } |
89 dict->Remove(original_language, NULL); | 89 dict->Remove(original_language, NULL); |
90 } | 90 } |
91 | 91 |
92 int TranslatePrefs::GetTranslationDeniedCount(const std::string& language) { | 92 bool TranslatePrefs::HasBlacklistedLanguages() const { |
| 93 return !IsListEmpty(kPrefTranslateLanguageBlacklist); |
| 94 } |
| 95 |
| 96 void TranslatePrefs::ClearBlacklistedLanguages() { |
| 97 prefs_->ClearPref(kPrefTranslateLanguageBlacklist); |
| 98 } |
| 99 |
| 100 bool TranslatePrefs::HasBlacklistedSites() { |
| 101 return !IsListEmpty(kPrefTranslateSiteBlacklist); |
| 102 } |
| 103 |
| 104 void TranslatePrefs::ClearBlacklistedSites() { |
| 105 prefs_->ClearPref(kPrefTranslateSiteBlacklist); |
| 106 } |
| 107 |
| 108 int TranslatePrefs::GetTranslationDeniedCount( |
| 109 const std::string& language) const { |
93 const DictionaryValue* dict = | 110 const DictionaryValue* dict = |
94 prefs_->GetDictionary(kPrefTranslateDeniedCount); | 111 prefs_->GetDictionary(kPrefTranslateDeniedCount); |
95 int count = 0; | 112 int count = 0; |
96 return dict->GetInteger(language, &count) ? count : 0; | 113 return dict->GetInteger(language, &count) ? count : 0; |
97 } | 114 } |
98 | 115 |
99 void TranslatePrefs::IncrementTranslationDeniedCount( | 116 void TranslatePrefs::IncrementTranslationDeniedCount( |
100 const std::string& language) { | 117 const std::string& language) { |
101 DictionaryPrefUpdate update(prefs_, kPrefTranslateDeniedCount); | 118 DictionaryPrefUpdate update(prefs_, kPrefTranslateDeniedCount); |
102 DictionaryValue* dict = update.Get(); | 119 DictionaryValue* dict = update.Get(); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 target_lang.empty()) | 220 target_lang.empty()) |
204 dict->Remove(*iter, NULL); | 221 dict->Remove(*iter, NULL); |
205 else | 222 else |
206 dict->SetString(*iter, target_lang); | 223 dict->SetString(*iter, target_lang); |
207 } | 224 } |
208 } | 225 } |
209 | 226 |
210 // TranslatePrefs: private: ---------------------------------------------------- | 227 // TranslatePrefs: private: ---------------------------------------------------- |
211 | 228 |
212 bool TranslatePrefs::IsValueInList(const ListValue* list, | 229 bool TranslatePrefs::IsValueInList(const ListValue* list, |
213 const std::string& in_value) { | 230 const std::string& in_value) const { |
214 for (size_t i = 0; i < list->GetSize(); ++i) { | 231 for (size_t i = 0; i < list->GetSize(); ++i) { |
215 std::string value; | 232 std::string value; |
216 if (list->GetString(i, &value) && value == in_value) | 233 if (list->GetString(i, &value) && value == in_value) |
217 return true; | 234 return true; |
218 } | 235 } |
219 return false; | 236 return false; |
220 } | 237 } |
221 | 238 |
222 bool TranslatePrefs::IsValueBlacklisted(const char* pref_id, | 239 bool TranslatePrefs::IsValueBlacklisted(const char* pref_id, |
223 const std::string& value) { | 240 const std::string& value) const { |
224 const ListValue* blacklist = prefs_->GetList(pref_id); | 241 const ListValue* blacklist = prefs_->GetList(pref_id); |
225 return (blacklist && !blacklist->empty() && IsValueInList(blacklist, value)); | 242 return (blacklist && !blacklist->empty() && IsValueInList(blacklist, value)); |
226 } | 243 } |
227 | 244 |
228 void TranslatePrefs::BlacklistValue(const char* pref_id, | 245 void TranslatePrefs::BlacklistValue(const char* pref_id, |
229 const std::string& value) { | 246 const std::string& value) { |
230 { | 247 { |
231 ListPrefUpdate update(prefs_, pref_id); | 248 ListPrefUpdate update(prefs_, pref_id); |
232 ListValue* blacklist = update.Get(); | 249 ListValue* blacklist = update.Get(); |
233 if (!blacklist) { | 250 if (!blacklist) { |
(...skipping 10 matching lines...) Expand all Loading... |
244 ListValue* blacklist = update.Get(); | 261 ListValue* blacklist = update.Get(); |
245 if (!blacklist) { | 262 if (!blacklist) { |
246 NOTREACHED() << "Unregistered translate blacklist pref"; | 263 NOTREACHED() << "Unregistered translate blacklist pref"; |
247 return; | 264 return; |
248 } | 265 } |
249 StringValue string_value(value); | 266 StringValue string_value(value); |
250 blacklist->Remove(string_value, NULL); | 267 blacklist->Remove(string_value, NULL); |
251 } | 268 } |
252 | 269 |
253 bool TranslatePrefs::IsLanguageWhitelisted( | 270 bool TranslatePrefs::IsLanguageWhitelisted( |
254 const std::string& original_language, std::string* target_language) { | 271 const std::string& original_language, std::string* target_language) const { |
255 const DictionaryValue* dict = prefs_->GetDictionary(kPrefTranslateWhitelists); | 272 const DictionaryValue* dict = prefs_->GetDictionary(kPrefTranslateWhitelists); |
256 if (dict && dict->GetString(original_language, target_language)) { | 273 if (dict && dict->GetString(original_language, target_language)) { |
257 DCHECK(!target_language->empty()); | 274 DCHECK(!target_language->empty()); |
258 return !target_language->empty(); | 275 return !target_language->empty(); |
259 } | 276 } |
260 return false; | 277 return false; |
261 } | 278 } |
| 279 |
| 280 bool TranslatePrefs::IsListEmpty(const char* pref_id) const { |
| 281 const ListValue* blacklist = prefs_->GetList(pref_id); |
| 282 return (blacklist == NULL || blacklist->empty()); |
| 283 } |
OLD | NEW |