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..e6df58584d2b5e929ebf1fc29f145a4a0ce53358 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->responder_) { |
+ old_delegate->responder_->ActionOnStep(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::SetResponder(Responder* responder) { |
+ responder_ = responder; |
+} |
+ |
void TranslateInfoBarDelegate::UpdateOriginalLanguage( |
const std::string& language_code) { |
ui_delegate_.UpdateOriginalLanguage(language_code); |