Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6260)

Unified Diff: chrome/browser/translate/translate_infobar_delegate.cc

Issue 23708029: Translate: Refactoring: Create TranslateUIDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/translate/translate_infobar_delegate.cc
diff --git a/chrome/browser/translate/translate_infobar_delegate.cc b/chrome/browser/translate/translate_infobar_delegate.cc
index 9cabbaa637fe8771b12e76e185e546d1f4d2cb27..b4a93e344adc0eafbf28a8fd18572065f54bfa5e 100644
--- a/chrome/browser/translate/translate_infobar_delegate.cc
+++ b/chrome/browser/translate/translate_infobar_delegate.cc
@@ -27,19 +27,12 @@ using content::NavigationEntry;
namespace {
-const char kDeclineTranslate[] = "Translate.DeclineTranslate";
const char kCloseInfobar[] = "Translate.DeclineTranslateCloseInfobar";
-const char kRevertTranslation[] = "Translate.RevertTranslation";
const char kShowErrorInfobar[] = "Translate.ShowErrorInfobar";
-const char kPerformTranslate[] = "Translate.Translate";
-const char kNeverTranslateLang[] = "Translate.NeverTranslateLang";
-const char kNeverTranslateSite[] = "Translate.NeverTranslateSite";
-const char kAlwaysTranslateLang[] = "Translate.AlwaysTranslateLang";
} // namespace
-// static
-const size_t TranslateInfoBarDelegate::kNoIndex = static_cast<size_t>(-1);
+const size_t TranslateInfoBarDelegate::kNoIndex = TranslateUIDelegate::kNoIndex;
TranslateInfoBarDelegate::~TranslateInfoBarDelegate() {
}
@@ -104,23 +97,12 @@ void TranslateInfoBarDelegate::Create(
}
void TranslateInfoBarDelegate::Translate() {
- if (!web_contents()->GetBrowserContext()->IsOffTheRecord()) {
- prefs_.ResetTranslationDeniedCount(original_language_code());
- prefs_.IncrementTranslationAcceptedCount(original_language_code());
- }
-
- TranslateManager::GetInstance()->TranslatePage(web_contents(),
- original_language_code(),
- target_language_code());
-
- UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true);
+ ui_delegate_.Translate();
}
void TranslateInfoBarDelegate::RevertTranslation() {
- TranslateManager::GetInstance()->RevertTranslation(web_contents());
+ ui_delegate_.RevertTranslation();
RemoveSelf();
-
- UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true);
}
void TranslateInfoBarDelegate::ReportLanguageDetectionError() {
@@ -129,20 +111,7 @@ void TranslateInfoBarDelegate::ReportLanguageDetectionError() {
}
void TranslateInfoBarDelegate::TranslationDeclined() {
- if (!web_contents()->GetBrowserContext()->IsOffTheRecord()) {
- prefs_.ResetTranslationAcceptedCount(original_language_code());
- prefs_.IncrementTranslationDeniedCount(original_language_code());
- }
-
- // Remember that the user declined the translation so as to prevent showing a
- // translate infobar for that page again. (TranslateManager initiates
- // translations when getting a LANGUAGE_DETERMINED from the page, which
- // happens when a load stops. That could happen multiple times, including
- // after the user already declined the translation.)
- TranslateTabHelper::FromWebContents(web_contents())->
- language_state().set_translation_declined(true);
-
- UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true);
+ ui_delegate_.TranslationDeclined();
}
bool TranslateInfoBarDelegate::IsTranslatableLanguageByPrefs() {
@@ -154,72 +123,52 @@ bool TranslateInfoBarDelegate::IsTranslatableLanguageByPrefs() {
}
void TranslateInfoBarDelegate::ToggleTranslatableLanguageByPrefs() {
- const std::string& original_lang = original_language_code();
- if (prefs_.IsBlockedLanguage(original_lang)) {
- prefs_.UnblockLanguage(original_lang);
+ if (ui_delegate_.IsLanguageBlocked()) {
+ ui_delegate_.SetLanguageBlocked(false);
} else {
- prefs_.BlockLanguage(original_lang);
+ ui_delegate_.SetLanguageBlocked(true);
RemoveSelf();
}
-
- UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true);
}
bool TranslateInfoBarDelegate::IsSiteBlacklisted() {
- std::string host = GetPageHost();
- return !host.empty() && prefs_.IsSiteBlacklisted(host);
+ return ui_delegate_.IsSiteBlacklisted();
}
void TranslateInfoBarDelegate::ToggleSiteBlacklist() {
- std::string host = GetPageHost();
- if (host.empty())
- return;
-
- if (prefs_.IsSiteBlacklisted(host)) {
- prefs_.RemoveSiteFromBlacklist(host);
+ if (ui_delegate_.IsSiteBlacklisted()) {
+ ui_delegate_.SetSiteBlacklist(false);
} else {
- prefs_.BlacklistSite(host);
+ ui_delegate_.SetSiteBlacklist(true);
RemoveSelf();
}
-
- UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true);
}
bool TranslateInfoBarDelegate::ShouldAlwaysTranslate() {
- return prefs_.IsLanguagePairWhitelisted(original_language_code(),
- target_language_code());
+ return ui_delegate_.ShouldAlwaysTranslate();
}
void TranslateInfoBarDelegate::ToggleAlwaysTranslate() {
- const std::string& original_lang = original_language_code();
- const std::string& target_lang = target_language_code();
- if (prefs_.IsLanguagePairWhitelisted(original_lang, target_lang))
- prefs_.RemoveLanguagePairFromWhitelist(original_lang, target_lang);
- else
- prefs_.WhitelistLanguagePair(original_lang, target_lang);
-
- UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true);
+ ui_delegate_.SetAlwaysTranslate(!ui_delegate_.ShouldAlwaysTranslate());
}
void TranslateInfoBarDelegate::AlwaysTranslatePageLanguage() {
- const std::string& original_lang = original_language_code();
- const std::string& target_lang = target_language_code();
- DCHECK(!prefs_.IsLanguagePairWhitelisted(original_lang, target_lang));
- prefs_.WhitelistLanguagePair(original_lang, target_lang);
+ DCHECK(!ui_delegate_.ShouldAlwaysTranslate());
+ ui_delegate_.SetAlwaysTranslate(true);
Translate();
}
void TranslateInfoBarDelegate::NeverTranslatePageLanguage() {
- std::string original_lang = original_language_code();
- DCHECK(!prefs_.IsBlockedLanguage(original_lang));
- prefs_.BlockLanguage(original_lang);
+ DCHECK(!ui_delegate_.IsLanguageBlocked());
+ ui_delegate_.SetLanguageBlocked(true);
RemoveSelf();
}
string16 TranslateInfoBarDelegate::GetMessageInfoBarText() {
if (infobar_type_ == TRANSLATING) {
+ string16 target_language_name = language_name_at(target_language_index());
return l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_TRANSLATING_TO,
- language_name_at(target_language_index_));
+ target_language_name);
}
DCHECK_EQ(TRANSLATION_ERROR, infobar_type_);
@@ -240,11 +189,11 @@ string16 TranslateInfoBarDelegate::GetMessageInfoBarText() {
case TranslateErrors::UNSUPPORTED_LANGUAGE:
return l10n_util::GetStringFUTF16(
IDS_TRANSLATE_INFOBAR_UNSUPPORTED_PAGE_LANGUAGE,
- language_name_at(target_language_index_));
+ language_name_at(target_language_index()));
case TranslateErrors::IDENTICAL_LANGUAGES:
return l10n_util::GetStringFUTF16(
IDS_TRANSLATE_INFOBAR_ERROR_SAME_LANGUAGE,
- language_name_at(target_language_index_));
+ language_name_at(target_language_index()));
default:
NOTREACHED();
return string16();
@@ -345,9 +294,7 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate(
: InfoBarDelegate(infobar_service),
infobar_type_(infobar_type),
background_animation_(NONE),
- original_language_index_(kNoIndex),
- initial_original_language_index_(kNoIndex),
- target_language_index_(kNoIndex),
+ ui_delegate_(web_contents(), original_language, target_language),
error_type_(error_type),
prefs_(prefs),
shortcut_config_(shortcut_config) {
@@ -356,44 +303,6 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate(
if (old_delegate && (old_delegate->is_error() != is_error()))
background_animation_ = is_error() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL;
-
- std::vector<std::string> language_codes;
- TranslateManager::GetSupportedLanguages(&language_codes);
-
- // Preparing for the alphabetical order in the locale.
- UErrorCode error = U_ZERO_ERROR;
- std::string locale = g_browser_process->GetApplicationLocale();
- icu::Locale loc(locale.c_str());
- scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(loc, error));
- collator->setStrength(icu::Collator::PRIMARY);
-
- languages_.reserve(language_codes.size());
- for (std::vector<std::string>::const_iterator iter = language_codes.begin();
- iter != language_codes.end(); ++iter) {
- std::string language_code = *iter;
-
- string16 language_name = GetLanguageDisplayableName(language_code);
- // Insert the language in languages_ in alphabetical order.
- std::vector<LanguageNamePair>::iterator iter2;
- for (iter2 = languages_.begin(); iter2 != languages_.end(); ++iter2) {
- if (base::i18n::CompareString16WithCollator(collator.get(),
- language_name, iter2->second) == UCOL_LESS) {
- break;
- }
- }
- languages_.insert(iter2, LanguageNamePair(language_code, language_name));
- }
- for (std::vector<LanguageNamePair>::const_iterator iter = languages_.begin();
- iter != languages_.end(); ++iter) {
- std::string language_code = iter->first;
- if (language_code == original_language) {
- original_language_index_ = iter - languages_.begin();
- initial_original_language_index_ = original_language_index_;
- }
- if (language_code == target_language)
- target_language_index_ = iter - languages_.begin();
- }
- DCHECK_NE(kNoIndex, target_language_index_);
}
void TranslateInfoBarDelegate::InfoBarDismissed() {
@@ -427,8 +336,3 @@ TranslateInfoBarDelegate*
TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() {
return this;
}
-
-std::string TranslateInfoBarDelegate::GetPageHost() {
- NavigationEntry* entry = web_contents()->GetController().GetActiveEntry();
- return entry ? entry->GetURL().HostNoBrackets() : std::string();
-}

Powered by Google App Engine
This is Rietveld 408576698