| 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);
|
|
|