Chromium Code Reviews| 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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 339 strings->push_back(text.substr(offsets[1])); | 349 strings->push_back(text.substr(offsets[1])); |
| 340 } | 350 } |
| 341 | 351 |
| 342 TranslateDriver* TranslateInfoBarDelegate::GetTranslateDriver() { | 352 TranslateDriver* TranslateInfoBarDelegate::GetTranslateDriver() { |
| 343 if (!translate_manager_) | 353 if (!translate_manager_) |
| 344 return NULL; | 354 return NULL; |
| 345 | 355 |
| 346 return translate_manager_->translate_client()->GetTranslateDriver(); | 356 return translate_manager_->translate_client()->GetTranslateDriver(); |
| 347 } | 357 } |
| 348 | 358 |
| 349 TranslateInfoBarDelegate::TranslateInfoBarDelegate( | 359 TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
|
groby-ooo-7-16
2017/05/20 21:30:39
You do want to initialize |responder_|
Leo
2017/05/22 09:08:10
Thanks Done
| |
| 350 const base::WeakPtr<TranslateManager>& translate_manager, | 360 const base::WeakPtr<TranslateManager>& translate_manager, |
| 351 bool is_off_the_record, | 361 bool is_off_the_record, |
| 352 translate::TranslateStep step, | 362 translate::TranslateStep step, |
| 353 const std::string& original_language, | 363 const std::string& original_language, |
| 354 const std::string& target_language, | 364 const std::string& target_language, |
| 355 TranslateErrors::Type error_type, | 365 TranslateErrors::Type error_type, |
| 356 bool triggered_from_menu) | 366 bool triggered_from_menu) |
| 357 : infobars::InfoBarDelegate(), | 367 : infobars::InfoBarDelegate(), |
| 358 is_off_the_record_(is_off_the_record), | 368 is_off_the_record_(is_off_the_record), |
| 359 step_(step), | 369 step_(step), |
| (...skipping 25 matching lines...) Expand all 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 |