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

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: (rebasing) Created 7 years, 2 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
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.h ('k') | chrome/browser/translate/translate_prefs.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d188bacb5fc5cea004d6b61a64b60d651aa3b727..45bb527bfd8722ca4330b401337e045246047a63 100644
--- a/chrome/browser/translate/translate_infobar_delegate.cc
+++ b/chrome/browser/translate/translate_infobar_delegate.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/translate/translate_accept_languages.h"
#include "chrome/browser/translate/translate_manager.h"
#include "chrome/browser/translate/translate_tab_helper.h"
+#include "components/translate/common/translate_constants.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/web_contents.h"
@@ -27,19 +28,15 @@ using content::NavigationEntry;
namespace {
+// TODO(hajimehoshi): Remove this after crbug/283720 is solved.
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::NO_INDEX;
TranslateInfoBarDelegate::~TranslateInfoBarDelegate() {
}
@@ -104,23 +101,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() {
@@ -131,6 +117,8 @@ void TranslateInfoBarDelegate::ReportLanguageDetectionError() {
void TranslateInfoBarDelegate::TranslationDeclined() {
// TODO(miguelg) switch this back to just calling web_contents()
// once we've diagnosed crbug/283720
+ // TODO(hajimehoshi): Replace this implementstion with calling ui_delegate_.
+ // TranslationDeclined() after miguelg's investigating.
content::WebContents* contents = owner()->web_contents();
content::BrowserContext* context = contents->GetBrowserContext();
if (!context->IsOffTheRecord()) {
@@ -158,71 +146,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();
- 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_);
@@ -243,11 +212,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();
@@ -348,9 +317,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) {
@@ -359,44 +326,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() {
@@ -430,8 +359,3 @@ TranslateInfoBarDelegate*
TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() {
return this;
}
-
-std::string TranslateInfoBarDelegate::GetPageHost() {
- NavigationEntry* entry = web_contents()->GetController().GetActiveEntry();
- return entry ? entry->GetURL().HostNoBrackets() : std::string();
-}
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.h ('k') | chrome/browser/translate/translate_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698