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 | 8 |
9 #include "base/i18n/string_compare.h" | 9 #include "base/i18n/string_compare.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 kNeverTranslateMinCount); | 261 kNeverTranslateMinCount); |
262 } | 262 } |
263 | 263 |
264 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateShortcut() { | 264 bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateShortcut() { |
265 DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_); | 265 DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_); |
266 return !is_off_the_record_ && | 266 return !is_off_the_record_ && |
267 (prefs_->GetTranslationAcceptedCount(original_language_code()) >= | 267 (prefs_->GetTranslationAcceptedCount(original_language_code()) >= |
268 kAlwaysTranslateMinCount); | 268 kAlwaysTranslateMinCount); |
269 } | 269 } |
270 | 270 |
| 271 #if defined(OS_IOS) |
| 272 void TranslateInfoBarDelegate::ShowNeverTranslateInfobar() { |
| 273 Create(true, translate_manager_, infobar()->owner(), is_off_the_record_, |
| 274 translate::TRANSLATE_STEP_NEVER_TRANSLATE, original_language_code(), |
| 275 target_language_code(), TranslateErrors::NONE, false); |
| 276 } |
| 277 #endif |
| 278 |
271 // static | 279 // static |
272 void TranslateInfoBarDelegate::GetAfterTranslateStrings( | 280 void TranslateInfoBarDelegate::GetAfterTranslateStrings( |
273 std::vector<base::string16>* strings, | 281 std::vector<base::string16>* strings, |
274 bool* swap_languages, | 282 bool* swap_languages, |
275 bool autodetermined_source_language) { | 283 bool autodetermined_source_language) { |
276 DCHECK(strings); | 284 DCHECK(strings); |
277 | 285 |
278 if (autodetermined_source_language) { | 286 if (autodetermined_source_language) { |
279 size_t offset; | 287 size_t offset; |
280 base::string16 text = l10n_util::GetStringFUTF16( | 288 base::string16 text = l10n_util::GetStringFUTF16( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 prefs_(translate_manager->translate_client()->GetTranslatePrefs()), | 337 prefs_(translate_manager->translate_client()->GetTranslatePrefs()), |
330 triggered_from_menu_(triggered_from_menu) { | 338 triggered_from_menu_(triggered_from_menu) { |
331 DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR), | 339 DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR), |
332 (error_type_ == TranslateErrors::NONE)); | 340 (error_type_ == TranslateErrors::NONE)); |
333 DCHECK(translate_manager_); | 341 DCHECK(translate_manager_); |
334 | 342 |
335 if (old_delegate && (old_delegate->is_error() != is_error())) | 343 if (old_delegate && (old_delegate->is_error() != is_error())) |
336 background_animation_ = is_error() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL; | 344 background_animation_ = is_error() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL; |
337 } | 345 } |
338 | 346 |
339 void TranslateInfoBarDelegate::InfoBarDismissed() { | 347 infobars::InfoBarDelegate::Type |
340 if (step_ != translate::TRANSLATE_STEP_BEFORE_TRANSLATE) | 348 TranslateInfoBarDelegate::GetInfoBarType() const { |
341 return; | 349 return PAGE_ACTION_TYPE; |
342 | |
343 // The user closed the infobar without clicking the translate button. | |
344 TranslationDeclined(); | |
345 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); | |
346 } | 350 } |
347 | 351 |
348 int TranslateInfoBarDelegate::GetIconID() const { | 352 int TranslateInfoBarDelegate::GetIconID() const { |
349 return translate_manager_->translate_client()->GetInfobarIconID(); | 353 return translate_manager_->translate_client()->GetInfobarIconID(); |
350 } | 354 } |
351 | 355 |
352 infobars::InfoBarDelegate::Type TranslateInfoBarDelegate::GetInfoBarType() | |
353 const { | |
354 return PAGE_ACTION_TYPE; | |
355 } | |
356 | |
357 bool TranslateInfoBarDelegate::ShouldExpire( | 356 bool TranslateInfoBarDelegate::ShouldExpire( |
358 const NavigationDetails& details) const { | 357 const NavigationDetails& details) const { |
359 // Note: we allow closing this infobar even if the main frame navigation | 358 // Note: we allow closing this infobar even if the main frame navigation |
360 // was programmatic and not initiated by the user - crbug.com/70261 . | 359 // was programmatic and not initiated by the user - crbug.com/70261 . |
361 if (!details.is_navigation_to_different_page && !details.is_main_frame) | 360 if (!details.is_navigation_to_different_page && !details.is_main_frame) |
362 return false; | 361 return false; |
363 | 362 |
364 return infobars::InfoBarDelegate::ShouldExpireInternal(details); | 363 return infobars::InfoBarDelegate::ShouldExpireInternal(details); |
365 } | 364 } |
366 | 365 |
| 366 void TranslateInfoBarDelegate::InfoBarDismissed() { |
| 367 if (step_ != translate::TRANSLATE_STEP_BEFORE_TRANSLATE) |
| 368 return; |
| 369 |
| 370 // The user closed the infobar without clicking the translate button. |
| 371 TranslationDeclined(); |
| 372 UMA_HISTOGRAM_BOOLEAN("Translate.DeclineTranslateCloseInfobar", true); |
| 373 } |
| 374 |
367 TranslateInfoBarDelegate* | 375 TranslateInfoBarDelegate* |
368 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { | 376 TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { |
369 return this; | 377 return this; |
370 } | 378 } |
371 | 379 |
372 #if defined(OS_IOS) | |
373 void TranslateInfoBarDelegate::ShowNeverTranslateInfobar() { | |
374 Create(true, translate_manager_, infobar()->owner(), is_off_the_record_, | |
375 translate::TRANSLATE_STEP_NEVER_TRANSLATE, original_language_code(), | |
376 target_language_code(), TranslateErrors::NONE, false); | |
377 } | |
378 #endif | |
379 | |
380 } // namespace translate | 380 } // namespace translate |
OLD | NEW |