| 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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 // The original language can only be "unknown" for the "translating" | 81 // The original language can only be "unknown" for the "translating" |
| 82 // infobar, which is the case when the user started a translation from the | 82 // infobar, which is the case when the user started a translation from the |
| 83 // context menu. | 83 // context menu. |
| 84 DCHECK(step == translate::TRANSLATE_STEP_TRANSLATING || | 84 DCHECK(step == translate::TRANSLATE_STEP_TRANSLATING || |
| 85 step == translate::TRANSLATE_STEP_AFTER_TRANSLATE); | 85 step == translate::TRANSLATE_STEP_AFTER_TRANSLATE); |
| 86 DCHECK_EQ(translate::kUnknownLanguageCode, original_language); | 86 DCHECK_EQ(translate::kUnknownLanguageCode, original_language); |
| 87 } | 87 } |
| 88 } | 88 } |
| 89 | 89 |
| 90 // Do not create the after translate infobar if we are auto translating. | 90 // Do not create the after translate infobar if we are auto translating. |
| 91 TranslateClient* translate_client = translate_manager->translate_client(); | |
| 92 if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || | 91 if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || |
| 93 (step == translate::TRANSLATE_STEP_TRANSLATING)) && | 92 (step == translate::TRANSLATE_STEP_TRANSLATING)) && |
| 94 translate_manager->GetLanguageState().InTranslateNavigation()) { | 93 translate_manager->GetLanguageState().InTranslateNavigation()) { |
| 95 return; | 94 return; |
| 96 } | 95 } |
| 97 | 96 |
| 98 // Find any existing translate infobar delegate. | 97 // Find any existing translate infobar delegate. |
| 99 infobars::InfoBar* old_infobar = NULL; | 98 infobars::InfoBar* old_infobar = NULL; |
| 100 TranslateInfoBarDelegate* old_delegate = NULL; | 99 TranslateInfoBarDelegate* old_delegate = NULL; |
| 101 for (size_t i = 0; i < infobar_manager->infobar_count(); ++i) { | 100 for (size_t i = 0; i < infobar_manager->infobar_count(); ++i) { |
| 102 old_infobar = infobar_manager->infobar_at(i); | 101 old_infobar = infobar_manager->infobar_at(i); |
| 103 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate(); | 102 old_delegate = old_infobar->delegate()->AsTranslateInfoBarDelegate(); |
| 104 if (old_delegate) { | 103 if (old_delegate) { |
| 105 if (!replace_existing_infobar || IsCompactUIEnabled()) | 104 if (!replace_existing_infobar || IsCompactUIEnabled()) |
| 106 return; | 105 return; |
| 107 break; | 106 break; |
| 108 } | 107 } |
| 109 } | 108 } |
| 110 | 109 |
| 111 // Add the new delegate. | 110 // Add the new delegate. |
| 111 TranslateClient* translate_client = translate_manager->translate_client(); |
| 112 std::unique_ptr<infobars::InfoBar> infobar(translate_client->CreateInfoBar( | 112 std::unique_ptr<infobars::InfoBar> infobar(translate_client->CreateInfoBar( |
| 113 base::WrapUnique(new TranslateInfoBarDelegate( | 113 base::WrapUnique(new TranslateInfoBarDelegate( |
| 114 translate_manager, is_off_the_record, step, old_delegate, | 114 translate_manager, is_off_the_record, step, original_language, |
| 115 original_language, target_language, error_type, | 115 target_language, error_type, triggered_from_menu)))); |
| 116 triggered_from_menu)))); | |
| 117 if (old_delegate) | 116 if (old_delegate) |
| 118 infobar_manager->ReplaceInfoBar(old_infobar, std::move(infobar)); | 117 infobar_manager->ReplaceInfoBar(old_infobar, std::move(infobar)); |
| 119 else | 118 else |
| 120 infobar_manager->AddInfoBar(std::move(infobar)); | 119 infobar_manager->AddInfoBar(std::move(infobar)); |
| 121 } | 120 } |
| 122 | 121 |
| 123 // static | 122 // static |
| 124 bool TranslateInfoBarDelegate::IsCompactUIEnabled() { | 123 bool TranslateInfoBarDelegate::IsCompactUIEnabled() { |
| 125 return base::FeatureList::IsEnabled(kTranslateCompactUI); | 124 return base::FeatureList::IsEnabled(kTranslateCompactUI); |
| 126 } | 125 } |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 if (!translate_manager_) | 343 if (!translate_manager_) |
| 345 return NULL; | 344 return NULL; |
| 346 | 345 |
| 347 return translate_manager_->translate_client()->GetTranslateDriver(); | 346 return translate_manager_->translate_client()->GetTranslateDriver(); |
| 348 } | 347 } |
| 349 | 348 |
| 350 TranslateInfoBarDelegate::TranslateInfoBarDelegate( | 349 TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
| 351 const base::WeakPtr<TranslateManager>& translate_manager, | 350 const base::WeakPtr<TranslateManager>& translate_manager, |
| 352 bool is_off_the_record, | 351 bool is_off_the_record, |
| 353 translate::TranslateStep step, | 352 translate::TranslateStep step, |
| 354 TranslateInfoBarDelegate* old_delegate, | |
| 355 const std::string& original_language, | 353 const std::string& original_language, |
| 356 const std::string& target_language, | 354 const std::string& target_language, |
| 357 TranslateErrors::Type error_type, | 355 TranslateErrors::Type error_type, |
| 358 bool triggered_from_menu) | 356 bool triggered_from_menu) |
| 359 : infobars::InfoBarDelegate(), | 357 : infobars::InfoBarDelegate(), |
| 360 is_off_the_record_(is_off_the_record), | 358 is_off_the_record_(is_off_the_record), |
| 361 step_(step), | 359 step_(step), |
| 362 background_animation_(NONE), | |
| 363 ui_delegate_(translate_manager, original_language, target_language), | 360 ui_delegate_(translate_manager, original_language, target_language), |
| 364 translate_manager_(translate_manager), | 361 translate_manager_(translate_manager), |
| 365 error_type_(error_type), | 362 error_type_(error_type), |
| 366 prefs_(translate_manager->translate_client()->GetTranslatePrefs()), | 363 prefs_(translate_manager->translate_client()->GetTranslatePrefs()), |
| 367 triggered_from_menu_(triggered_from_menu) { | 364 triggered_from_menu_(triggered_from_menu) { |
| 368 DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR), | 365 DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR), |
| 369 (error_type_ == TranslateErrors::NONE)); | 366 (error_type_ == TranslateErrors::NONE)); |
| 370 DCHECK(translate_manager_); | 367 DCHECK(translate_manager_); |
| 371 | |
| 372 if (old_delegate && (old_delegate->is_error() != is_error())) | |
| 373 background_animation_ = is_error() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL; | |
| 374 } | 368 } |
| 375 | 369 |
| 376 infobars::InfoBarDelegate::Type | 370 infobars::InfoBarDelegate::Type |
| 377 TranslateInfoBarDelegate::GetInfoBarType() const { | 371 TranslateInfoBarDelegate::GetInfoBarType() const { |
| 378 return PAGE_ACTION_TYPE; | 372 return PAGE_ACTION_TYPE; |
| 379 } | 373 } |
| 380 | 374 |
| 381 int TranslateInfoBarDelegate::GetIconId() const { | 375 int TranslateInfoBarDelegate::GetIconId() const { |
| 382 return translate_manager_->translate_client()->GetInfobarIconID(); | 376 return translate_manager_->translate_client()->GetInfobarIconID(); |
| 383 } | 377 } |
| 384 | 378 |
| 385 void TranslateInfoBarDelegate::InfoBarDismissed() { | 379 void TranslateInfoBarDelegate::InfoBarDismissed() { |
| 386 if (step_ != translate::TRANSLATE_STEP_BEFORE_TRANSLATE) | 380 if (step_ != translate::TRANSLATE_STEP_BEFORE_TRANSLATE) |
| 387 return; | 381 return; |
| 388 if (IsCompactUIEnabled()) | 382 if (IsCompactUIEnabled()) |
| 389 return; | 383 return; |
| 390 // The user closed the infobar without clicking the translate button. | 384 // The user closed the infobar without clicking the translate button. |
| 391 TranslationDeclined(); | 385 TranslationDeclined(); |
| 392 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); | 386 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); |
| 393 } | 387 } |
| 394 | 388 |
| 395 TranslateInfoBarDelegate* | 389 TranslateInfoBarDelegate* |
| 396 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { | 390 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { |
| 397 return this; | 391 return this; |
| 398 } | 392 } |
| 399 | 393 |
| 400 } // namespace translate | 394 } // namespace translate |
| OLD | NEW |