| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/translate/core/browser/translate_infobar_delegate.h" | 5 #include "components/translate/core/browser/translate_infobar_delegate.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 return; | 94 return; |
| 95 } | 95 } |
| 96 | 96 |
| 97 // Find any existing translate infobar delegate. | 97 // Find any existing translate infobar delegate. |
| 98 infobars::InfoBar* old_infobar = NULL; | 98 infobars::InfoBar* old_infobar = NULL; |
| 99 TranslateInfoBarDelegate* old_delegate = NULL; | 99 TranslateInfoBarDelegate* old_delegate = NULL; |
| 100 for (size_t i = 0; i < infobar_manager->infobar_count(); ++i) { | 100 for (size_t i = 0; i < infobar_manager->infobar_count(); ++i) { |
| 101 old_infobar = infobar_manager->infobar_at(i); | 101 old_infobar = infobar_manager->infobar_at(i); |
| 102 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate(); | 102 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate(); |
| 103 if (old_delegate) { | 103 if (old_delegate) { |
| 104 if (!replace_existing_infobar || IsCompactUIEnabled()) | 104 if (!replace_existing_infobar) |
| 105 return; | 105 return; |
| 106 break; | 106 break; |
| 107 } | 107 } |
| 108 } | 108 } |
| 109 | 109 |
| 110 // Try to reuse existing translate infobar delegate. |
| 111 if (old_delegate && old_delegate->responder_) { |
| 112 old_delegate->responder_->ActionOnStep(step, error_type); |
| 113 return; |
| 114 } |
| 115 |
| 110 // Add the new delegate. | 116 // Add the new delegate. |
| 111 TranslateClient* translate_client = translate_manager->translate_client(); | 117 TranslateClient* translate_client = translate_manager->translate_client(); |
| 112 std::unique_ptr<infobars::InfoBar> infobar(translate_client->CreateInfoBar( | 118 std::unique_ptr<infobars::InfoBar> infobar(translate_client->CreateInfoBar( |
| 113 base::WrapUnique(new TranslateInfoBarDelegate( | 119 base::WrapUnique(new TranslateInfoBarDelegate( |
| 114 translate_manager, is_off_the_record, step, original_language, | 120 translate_manager, is_off_the_record, step, original_language, |
| 115 target_language, error_type, triggered_from_menu)))); | 121 target_language, error_type, triggered_from_menu)))); |
| 116 if (old_delegate) | 122 if (old_delegate) |
| 117 infobar_manager->ReplaceInfoBar(old_infobar, std::move(infobar)); | 123 infobar_manager->ReplaceInfoBar(old_infobar, std::move(infobar)); |
| 118 else | 124 else |
| 119 infobar_manager->AddInfoBar(std::move(infobar)); | 125 infobar_manager->AddInfoBar(std::move(infobar)); |
| 120 } | 126 } |
| 121 | 127 |
| 122 // static | 128 // static |
| 123 bool TranslateInfoBarDelegate::IsCompactUIEnabled() { | 129 bool TranslateInfoBarDelegate::IsCompactUIEnabled() { |
| 124 return base::FeatureList::IsEnabled(kTranslateCompactUI); | 130 return base::FeatureList::IsEnabled(kTranslateCompactUI); |
| 125 } | 131 } |
| 126 | 132 |
| 133 void TranslateInfoBarDelegate::SetResponder(Responder* responder) { |
| 134 responder_ = responder; |
| 135 } |
| 136 |
| 127 void TranslateInfoBarDelegate::UpdateOriginalLanguage( | 137 void TranslateInfoBarDelegate::UpdateOriginalLanguage( |
| 128 const std::string& language_code) { | 138 const std::string& language_code) { |
| 129 ui_delegate_.UpdateOriginalLanguage(language_code); | 139 ui_delegate_.UpdateOriginalLanguage(language_code); |
| 130 } | 140 } |
| 131 | 141 |
| 132 void TranslateInfoBarDelegate::UpdateTargetLanguage( | 142 void TranslateInfoBarDelegate::UpdateTargetLanguage( |
| 133 const std::string& language_code) { | 143 const std::string& language_code) { |
| 134 ui_delegate_.UpdateTargetLanguage(language_code); | 144 ui_delegate_.UpdateTargetLanguage(language_code); |
| 135 } | 145 } |
| 136 | 146 |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 TranslationDeclined(); | 395 TranslationDeclined(); |
| 386 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); | 396 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); |
| 387 } | 397 } |
| 388 | 398 |
| 389 TranslateInfoBarDelegate* | 399 TranslateInfoBarDelegate* |
| 390 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { | 400 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { |
| 391 return this; | 401 return this; |
| 392 } | 402 } |
| 393 | 403 |
| 394 } // namespace translate | 404 } // namespace translate |
| OLD | NEW |