Index: components/translate/core/browser/translate_ui_delegate.cc |
diff --git a/components/translate/core/browser/translate_ui_delegate.cc b/components/translate/core/browser/translate_ui_delegate.cc |
index 8a09121282aad8f1cb9e73f5011ac99e25c7d7ee..cb2fb12b1c336d17cd35d6ae1cd37687627f0411 100644 |
--- a/components/translate/core/browser/translate_ui_delegate.cc |
+++ b/components/translate/core/browser/translate_ui_delegate.cc |
@@ -189,6 +189,16 @@ std::string TranslateUIDelegate::GetLanguageCodeAt(size_t index) const { |
return languages_[index].first; |
} |
+base::string16 TranslateUIDelegate::GetLanguageNameForLanguageCode( |
+ const std::string& language_code) { |
+ auto it = std::find_if(languages_.begin(), languages_.end(), |
+ [&language_code](const LanguageNamePair& x) { |
+ return x.first == language_code; |
+ }); |
+ size_t index = it != languages_.end() ? it - languages_.begin() : kNoIndex; |
+ return GetLanguageNameAt(index); |
+} |
+ |
base::string16 TranslateUIDelegate::GetLanguageNameAt(size_t index) const { |
if (index == kNoIndex) |
return base::string16(); |
@@ -264,12 +274,21 @@ void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
} |
bool TranslateUIDelegate::IsLanguageBlocked() { |
- return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); |
+ return IsLanguageBlocked(GetOriginalLanguageCode()); |
+} |
+ |
+bool TranslateUIDelegate::IsLanguageBlocked(const std::string& language_code) { |
+ return prefs_->IsBlockedLanguage(language_code); |
} |
void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
+ SetLanguageBlocked(value, GetOriginalLanguageCode()); |
+} |
+ |
+void TranslateUIDelegate::SetLanguageBlocked(bool value, |
+ const std::string& language_code) { |
if (value) { |
- prefs_->BlockLanguage(GetOriginalLanguageCode()); |
+ prefs_->BlockLanguage(language_code); |
if (translate_manager_) { |
translate_manager_->GetLanguageState().SetTranslateEnabled(false); |
// Translation has been blocked for this language. Capture that in the |
@@ -279,24 +298,30 @@ void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
metrics::TranslateEventProto::USER_NEVER_TRANSLATE_LANGUAGE); |
} |
} else { |
- prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
+ prefs_->UnblockLanguage(language_code); |
} |
UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, value); |
} |
bool TranslateUIDelegate::IsSiteBlacklisted() { |
- std::string host = GetPageHost(); |
- return !host.empty() && prefs_->IsSiteBlacklisted(host); |
+ return IsSiteBlacklisted(GetPageHost()); |
+} |
+ |
+bool TranslateUIDelegate::IsSiteBlacklisted(const std::string& page_host) { |
+ return !page_host.empty() && prefs_->IsSiteBlacklisted(page_host); |
} |
void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
- std::string host = GetPageHost(); |
- if (host.empty()) |
- return; |
+ SetSiteBlacklist(value, GetPageHost()); |
michaeldo
2017/05/15 17:09:30
Since this is an existing method, you should leave
Eugene But (OOO till 7-30)
2017/05/15 17:22:41
Early return would be against Chromium Style Guide
jzw1
2017/05/16 03:42:12
I'm going to just keep the early returns to keep t
|
+} |
+ |
+void TranslateUIDelegate::SetSiteBlacklist(bool value, |
+ const std::string& page_host) { |
+ DCHECK(!page_host.empty()); |
if (value) { |
- prefs_->BlacklistSite(host); |
+ prefs_->BlacklistSite(page_host); |
if (translate_manager_) { |
translate_manager_->GetLanguageState().SetTranslateEnabled(false); |
// Translation has been blocked for this site. Capture that in the metrics |
@@ -306,7 +331,7 @@ void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
metrics::TranslateEventProto::USER_NEVER_TRANSLATE_SITE); |
} |
} else { |
- prefs_->RemoveSiteFromBlacklist(host); |
+ prefs_->RemoveSiteFromBlacklist(page_host); |
} |
UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, value); |
@@ -317,6 +342,15 @@ bool TranslateUIDelegate::ShouldAlwaysTranslate() { |
GetTargetLanguageCode()); |
} |
+std::string TranslateUIDelegate::GetAlwaysTranslateToLanguage( |
+ const std::string& from_language) { |
+ std::string auto_target_lang; |
+ if (prefs_->ShouldAutoTranslate(from_language, &auto_target_lang)) { |
+ return auto_target_lang; |
+ } |
+ return std::string(); |
+} |
+ |
bool TranslateUIDelegate::ShouldAlwaysTranslateBeCheckedByDefault() { |
if (ShouldAlwaysTranslate()) |
return true; |
@@ -344,8 +378,14 @@ bool TranslateUIDelegate::ShouldAlwaysTranslateBeCheckedByDefault() { |
void TranslateUIDelegate::SetAlwaysTranslate(bool value) { |
const std::string& original_lang = GetOriginalLanguageCode(); |
const std::string& target_lang = GetTargetLanguageCode(); |
+ SetAlwaysTranslate(value, original_lang, target_lang); |
+} |
+ |
+void TranslateUIDelegate::SetAlwaysTranslate(bool value, |
+ const std::string& from_language, |
+ const std::string& to_language) { |
if (value) { |
- prefs_->WhitelistLanguagePair(original_lang, target_lang); |
+ prefs_->WhitelistLanguagePair(from_language, to_language); |
// A default translation mapping has been accepted for this language. |
// Capture that in the metrics. Note that we don't capture a language being |
// unmapped... which is not the same as accepting some other translation |
@@ -355,7 +395,7 @@ void TranslateUIDelegate::SetAlwaysTranslate(bool value) { |
metrics::TranslateEventProto::USER_ALWAYS_TRANSLATE_LANGUAGE); |
} |
} else { |
- prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); |
+ prefs_->RemoveLanguagePairFromWhitelist(from_language, to_language); |
} |
UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, value); |