Index: components/translate/core/browser/translate_prefs.cc |
diff --git a/chrome/browser/translate/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc |
similarity index 86% |
rename from chrome/browser/translate/translate_prefs.cc |
rename to components/translate/core/browser/translate_prefs.cc |
index e07d9b14c493ee614d676adc9ba1710b8267635d..b8d6ae79c7b4b654bef594483a8daf4389f504c4 100644 |
--- a/chrome/browser/translate/translate_prefs.cc |
+++ b/components/translate/core/browser/translate_prefs.cc |
@@ -1,8 +1,8 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/translate/translate_prefs.h" |
+#include "components/translate/core/browser/translate_prefs.h" |
#include <set> |
@@ -10,11 +10,6 @@ |
#include "base/prefs/scoped_user_pref_update.h" |
#include "base/strings/string_split.h" |
#include "base/strings/string_util.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/translate/translate_accept_languages_factory.h" |
-#include "chrome/browser/translate/translate_manager.h" |
-#include "chrome/common/pref_names.h" |
#include "components/translate/core/browser/translate_accept_languages.h" |
#include "components/translate/core/browser/translate_download_manager.h" |
#include "components/translate/core/common/translate_util.h" |
@@ -83,8 +78,16 @@ void ExpandLanguageCodes(const std::vector<std::string>& languages, |
} // namespace |
-TranslatePrefs::TranslatePrefs(PrefService* user_prefs) |
- : prefs_(user_prefs) { |
+TranslatePrefs::TranslatePrefs(PrefService* user_prefs, |
+ const char* accept_languages_pref, |
+ const char* preferred_languages_pref) |
+ : accept_languages_pref_(accept_languages_pref), |
+ prefs_(user_prefs) { |
+#if defined(OS_CHROMEOS) |
+ preferred_languages_pref_ = preferred_languages_pref; |
+#else |
+ DCHECK(!preferred_languages_pref); |
+#endif |
} |
void TranslatePrefs::ResetToDefaults() { |
@@ -108,8 +111,7 @@ bool TranslatePrefs::IsBlockedLanguage( |
original_language); |
} |
-void TranslatePrefs::BlockLanguage( |
- const std::string& original_language) { |
+void TranslatePrefs::BlockLanguage(const std::string& original_language) { |
BlacklistValue(kPrefTranslateBlockedLanguages, original_language); |
// Add the language to the language list at chrome://settings/languages. |
@@ -126,16 +128,13 @@ void TranslatePrefs::BlockLanguage( |
} |
} |
-void TranslatePrefs::UnblockLanguage( |
- const std::string& original_language) { |
- RemoveValueFromBlacklist(kPrefTranslateBlockedLanguages, |
- original_language); |
+void TranslatePrefs::UnblockLanguage(const std::string& original_language) { |
+ RemoveValueFromBlacklist(kPrefTranslateBlockedLanguages, original_language); |
} |
void TranslatePrefs::RemoveLanguageFromLegacyBlacklist( |
const std::string& original_language) { |
- RemoveValueFromBlacklist(kPrefTranslateLanguageBlacklist, |
- original_language); |
+ RemoveValueFromBlacklist(kPrefTranslateLanguageBlacklist, original_language); |
} |
bool TranslatePrefs::IsSiteBlacklisted(const std::string& site) const { |
@@ -164,9 +163,8 @@ bool TranslatePrefs::IsLanguagePairWhitelisted( |
return false; |
} |
-void TranslatePrefs::WhitelistLanguagePair( |
- const std::string& original_language, |
- const std::string& target_language) { |
+void TranslatePrefs::WhitelistLanguagePair(const std::string& original_language, |
+ const std::string& target_language) { |
DictionaryPrefUpdate update(prefs_, kPrefTranslateWhitelists); |
base::DictionaryValue* dict = update.Get(); |
if (!dict) { |
@@ -262,9 +260,9 @@ void TranslatePrefs::GetLanguageList(std::vector<std::string>* languages) { |
DCHECK(languages->empty()); |
#if defined(OS_CHROMEOS) |
- const char* key = prefs::kLanguagePreferredLanguages; |
+ const char* key = preferred_languages_pref_.c_str(); |
#else |
- const char* key = prefs::kAcceptLanguages; |
+ const char* key = accept_languages_pref_.c_str(); |
#endif |
std::string languages_str = prefs_->GetString(key); |
@@ -275,7 +273,7 @@ void TranslatePrefs::UpdateLanguageList( |
const std::vector<std::string>& languages) { |
#if defined(OS_CHROMEOS) |
std::string languages_str = JoinString(languages, ','); |
- prefs_->SetString(prefs::kLanguagePreferredLanguages, languages_str); |
+ prefs_->SetString(preferred_languages_pref_.c_str(), languages_str); |
#endif |
// Save the same language list as accept languages preference as well, but we |
@@ -284,20 +282,15 @@ void TranslatePrefs::UpdateLanguageList( |
std::vector<std::string> accept_languages; |
ExpandLanguageCodes(languages, &accept_languages); |
std::string accept_languages_str = JoinString(accept_languages, ','); |
- prefs_->SetString(prefs::kAcceptLanguages, accept_languages_str); |
+ prefs_->SetString(accept_languages_pref_.c_str(), accept_languages_str); |
} |
-// static |
-bool TranslatePrefs::CanTranslateLanguage(Profile* profile, |
- const std::string& language) { |
- TranslatePrefs translate_prefs(profile->GetPrefs()); |
- bool blocked = translate_prefs.IsBlockedLanguage(language); |
- |
- TranslateAcceptLanguages* accept_languages = |
- TranslateAcceptLanguagesFactory::GetForBrowserContext(profile); |
- bool is_accept_language = accept_languages->IsAcceptLanguage(language); |
+bool TranslatePrefs::CanTranslateLanguage( |
+ TranslateAcceptLanguages* accept_languages, |
+ const std::string& language) { |
bool can_be_accept_language = |
TranslateAcceptLanguages::CanBeAcceptLanguage(language); |
+ bool is_accept_language = accept_languages->IsAcceptLanguage(language); |
// Don't translate any user black-listed languages. Checking |
// |is_accept_language| is necessary because if the user eliminates the |
@@ -306,17 +299,22 @@ bool TranslatePrefs::CanTranslateLanguage(Profile* profile, |
// is also necessary because some minor languages can't be selected in the |
// language preference even though the language is available in Translate |
// server. |
- if (blocked && (is_accept_language || !can_be_accept_language)) |
+ if (IsBlockedLanguage(language) && |
+ (is_accept_language || !can_be_accept_language)) |
return false; |
return true; |
} |
-// static |
-bool TranslatePrefs::ShouldAutoTranslate(PrefService* user_prefs, |
- const std::string& original_language, std::string* target_language) { |
- TranslatePrefs prefs(user_prefs); |
- return prefs.IsLanguageWhitelisted(original_language, target_language); |
+bool TranslatePrefs::ShouldAutoTranslate(const std::string& original_language, |
+ std::string* target_language) { |
+ const base::DictionaryValue* dict = |
+ prefs_->GetDictionary(kPrefTranslateWhitelists); |
+ if (dict && dict->GetString(original_language, target_language)) { |
+ DCHECK(!target_language->empty()); |
+ return !target_language->empty(); |
+ } |
+ return false; |
} |
// static |
@@ -340,7 +338,8 @@ void TranslatePrefs::RegisterProfilePrefs( |
} |
// static |
-void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs) { |
+void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs, |
+ const char* accept_languages_pref) { |
// Old format of kPrefTranslateWhitelists |
// - original language -> list of target langs to auto-translate |
// - list of langs is in order of being enabled i.e. last in list is the |
@@ -393,14 +392,13 @@ void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs) { |
GetBlacklistedLanguages(user_prefs, &blacklisted_languages); |
std::string accept_languages_str = |
- user_prefs->GetString(prefs::kAcceptLanguages); |
+ user_prefs->GetString(accept_languages_pref); |
std::vector<std::string> accept_languages; |
base::SplitString(accept_languages_str, ',', &accept_languages); |
std::vector<std::string> blocked_languages; |
- CreateBlockedLanguages(&blocked_languages, |
- blacklisted_languages, |
- accept_languages); |
+ CreateBlockedLanguages( |
+ &blocked_languages, blacklisted_languages, accept_languages); |
// Create the new preference kPrefTranslateBlockedLanguages. |
{ |
@@ -430,7 +428,7 @@ void TranslatePrefs::MigrateUserPrefs(PrefService* user_prefs) { |
} |
std::string new_accept_languages_str = JoinString(accept_languages, ","); |
- user_prefs->SetString(prefs::kAcceptLanguages, new_accept_languages_str); |
+ user_prefs->SetString(accept_languages_pref, new_accept_languages_str); |
} |
} |
@@ -450,7 +448,8 @@ void TranslatePrefs::CreateBlockedLanguages( |
result.insert(*it); |
} |
- const std::string& app_locale = g_browser_process->GetApplicationLocale(); |
+ const std::string& app_locale = |
+ TranslateDownloadManager::GetInstance()->application_locale(); |
std::string ui_lang = TranslateDownloadManager::GetLanguageCode(app_locale); |
bool is_ui_english = ui_lang == "en" || |
StartsWithASCII(ui_lang, "en-", false); |
@@ -467,13 +466,13 @@ void TranslatePrefs::CreateBlockedLanguages( |
result.insert(converted_lang); |
} |
- blocked_languages->insert(blocked_languages->begin(), |
- result.begin(), result.end()); |
+ blocked_languages->insert( |
+ blocked_languages->begin(), result.begin(), result.end()); |
} |
// static |
std::string TranslatePrefs::ConvertLangCodeForTranslation( |
- const std::string &lang) { |
+ const std::string& lang) { |
std::vector<std::string> tokens; |
base::SplitString(lang, '-', &tokens); |
if (tokens.size() < 1) |
@@ -490,7 +489,7 @@ std::string TranslatePrefs::ConvertLangCodeForTranslation( |
} |
bool TranslatePrefs::IsValueInList(const base::ListValue* list, |
- const std::string& in_value) const { |
+ const std::string& in_value) const { |
for (size_t i = 0; i < list->GetSize(); ++i) { |
std::string value; |
if (list->GetString(i, &value) && value == in_value) |
@@ -500,13 +499,13 @@ bool TranslatePrefs::IsValueInList(const base::ListValue* list, |
} |
bool TranslatePrefs::IsValueBlacklisted(const char* pref_id, |
- const std::string& value) const { |
+ const std::string& value) const { |
const base::ListValue* blacklist = prefs_->GetList(pref_id); |
return (blacklist && !blacklist->empty() && IsValueInList(blacklist, value)); |
} |
void TranslatePrefs::BlacklistValue(const char* pref_id, |
- const std::string& value) { |
+ const std::string& value) { |
{ |
ListPrefUpdate update(prefs_, pref_id); |
base::ListValue* blacklist = update.Get(); |
@@ -519,7 +518,7 @@ void TranslatePrefs::BlacklistValue(const char* pref_id, |
} |
void TranslatePrefs::RemoveValueFromBlacklist(const char* pref_id, |
- const std::string& value) { |
+ const std::string& value) { |
ListPrefUpdate update(prefs_, pref_id); |
base::ListValue* blacklist = update.Get(); |
if (!blacklist) { |
@@ -530,17 +529,6 @@ void TranslatePrefs::RemoveValueFromBlacklist(const char* pref_id, |
blacklist->Remove(string_value, NULL); |
} |
-bool TranslatePrefs::IsLanguageWhitelisted( |
- const std::string& original_language, std::string* target_language) const { |
- const base::DictionaryValue* dict = |
- prefs_->GetDictionary(kPrefTranslateWhitelists); |
- if (dict && dict->GetString(original_language, target_language)) { |
- DCHECK(!target_language->empty()); |
- return !target_language->empty(); |
- } |
- return false; |
-} |
- |
bool TranslatePrefs::IsListEmpty(const char* pref_id) const { |
const base::ListValue* blacklist = prefs_->GetList(pref_id); |
return (blacklist == NULL || blacklist->empty()); |