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 |