| 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 |