| 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..32eef5601fe18f19f451ea8254be496e1f7abf60 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,32 @@ 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())
|
| + SetSiteBlacklist(value, GetPageHost());
|
| +}
|
| +
|
| +void TranslateUIDelegate::SetSiteBlacklist(bool value,
|
| + const std::string& page_host) {
|
| + if (page_host.empty()) {
|
| return;
|
| + }
|
|
|
| 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 +333,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 +344,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 +380,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 +397,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);
|
|
|