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

Unified Diff: components/translate/core/browser/translate_infobar_delegate.cc

Issue 2894553002: Replace OnPageTranslate Obsever by a responder of delegate. (Closed)
Patch Set: Fix Comments Created 3 years, 7 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 | « components/translate/core/browser/translate_infobar_delegate.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/translate/core/browser/translate_infobar_delegate.cc
diff --git a/components/translate/core/browser/translate_infobar_delegate.cc b/components/translate/core/browser/translate_infobar_delegate.cc
index 1ca24c8e7dda38048ce612f9df423a68aebf6bba..ae85203d0293284d0b694c2c2f095bc5ffeac273 100644
--- a/components/translate/core/browser/translate_infobar_delegate.cc
+++ b/components/translate/core/browser/translate_infobar_delegate.cc
@@ -101,12 +101,18 @@ void TranslateInfoBarDelegate::Create(
old_infobar = infobar_manager->infobar_at(i);
old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate();
if (old_delegate) {
- if (!replace_existing_infobar || IsCompactUIEnabled())
+ if (!replace_existing_infobar)
return;
break;
}
}
+ // Try to reuse existing translate infobar delegate.
+ if (old_delegate && old_delegate->observer_) {
+ old_delegate->observer_->OnTranslateStepChanged(step, error_type);
+ return;
+ }
+
// Add the new delegate.
TranslateClient* translate_client = translate_manager->translate_client();
std::unique_ptr<infobars::InfoBar> infobar(translate_client->CreateInfoBar(
@@ -124,6 +130,10 @@ bool TranslateInfoBarDelegate::IsCompactUIEnabled() {
return base::FeatureList::IsEnabled(kTranslateCompactUI);
}
+void TranslateInfoBarDelegate::SetObserver(Observer* observer) {
+ observer_ = observer;
+}
+
void TranslateInfoBarDelegate::UpdateOriginalLanguage(
const std::string& language_code) {
ui_delegate_.UpdateOriginalLanguage(language_code);
@@ -361,7 +371,8 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate(
translate_manager_(translate_manager),
error_type_(error_type),
prefs_(translate_manager->translate_client()->GetTranslatePrefs()),
- triggered_from_menu_(triggered_from_menu) {
+ triggered_from_menu_(triggered_from_menu),
+ observer_(nullptr) {
DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR),
(error_type_ == TranslateErrors::NONE));
DCHECK(translate_manager_);
@@ -377,13 +388,15 @@ int TranslateInfoBarDelegate::GetIconId() const {
}
void TranslateInfoBarDelegate::InfoBarDismissed() {
- if (step_ != translate::TRANSLATE_STEP_BEFORE_TRANSLATE)
- return;
- if (IsCompactUIEnabled())
- return;
- // The user closed the infobar without clicking the translate button.
- TranslationDeclined();
- UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true);
+ bool declined = observer_
+ ? observer_->IsDeclinedByUser()
+ : (step_ == translate::TRANSLATE_STEP_BEFORE_TRANSLATE);
+
+ if (declined) {
+ // The user closed the infobar without clicking the translate button.
+ TranslationDeclined();
+ UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true);
+ }
}
TranslateInfoBarDelegate*
« no previous file with comments | « components/translate/core/browser/translate_infobar_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698