Chromium Code Reviews| Index: chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| diff --git a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| index a7cafe9ecc8c8f8f166f131c5552078376f4892f..37dec7f2a83747ffb2ceb3c626536f77341385c4 100644 |
| --- a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| +++ b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc |
| @@ -23,16 +23,11 @@ using base::android::ScopedJavaLocalRef; |
| TranslateCompactInfoBar::TranslateCompactInfoBar( |
|
napper
2017/05/19 00:17:50
Dont you need to initialize action_flags_ here?
Leo
2017/05/19 03:30:23
Acknowledged.
|
| std::unique_ptr<translate::TranslateInfoBarDelegate> delegate) |
| : InfoBarAndroid(std::move(delegate)) { |
| - // |translate_driver| must already be bound. |
| - DCHECK(GetDelegate()->GetTranslateDriver()); |
| - translate_driver_ = static_cast<translate::ContentTranslateDriver*>( |
| - GetDelegate()->GetTranslateDriver()); |
| - translate_driver_->AddObserver(this); |
| + GetDelegate()->SetResponder(this); |
| } |
| TranslateCompactInfoBar::~TranslateCompactInfoBar() { |
| - DCHECK(translate_driver_); |
| - translate_driver_->RemoveObserver(this); |
| + GetDelegate()->SetResponder(nullptr); |
| } |
| ScopedJavaLocalRef<jobject> TranslateCompactInfoBar::CreateRenderInfoBar( |
| @@ -67,6 +62,7 @@ void TranslateCompactInfoBar::ProcessButton(int action) { |
| // TODO(ramyasharma): Handle other button clicks. |
| translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
| if (action == InfoBarAndroid::ACTION_TRANSLATE) { |
| + action_flags |= FLAG_TRANSLATE; |
| delegate->Translate(); |
| if (!delegate->ShouldAlwaysTranslate() && ShouldAutoAlwaysTranslate()) { |
| JNIEnv* env = base::android::AttachCurrentThread(); |
| @@ -74,6 +70,7 @@ void TranslateCompactInfoBar::ProcessButton(int action) { |
| GetJavaInfoBar()); |
| } |
| } else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) { |
| + action_flags |= FLAG_REVERT; |
| delegate->RevertTranslation(); |
| } else if (action == InfoBarAndroid::ACTION_CANCEL) { |
| delegate->TranslationDeclined(); |
| @@ -119,14 +116,17 @@ void TranslateCompactInfoBar::ApplyBoolTranslateOption( |
| translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
| if (option == TranslateUtils::OPTION_ALWAYS_TRANSLATE) { |
| if (delegate->ShouldAlwaysTranslate() != value) { |
| + action_flags |= FLAG_ALWAYS_TRANSLATE; |
| delegate->ToggleAlwaysTranslate(); |
| } |
| } else if (option == TranslateUtils::OPTION_NEVER_TRANSLATE) { |
| if (value && delegate->IsTranslatableLanguageByPrefs()) { |
| + action_flags |= FLAG_NEVER_LANGUAGE; |
| delegate->ToggleTranslatableLanguageByPrefs(); |
| } |
| } else if (option == TranslateUtils::OPTION_NEVER_TRANSLATE_SITE) { |
| if (value && !delegate->IsSiteBlacklisted()) { |
| + action_flags |= FLAG_NEVER_SITE; |
| delegate->ToggleSiteBlacklist(); |
| } |
| } else { |
| @@ -134,19 +134,6 @@ void TranslateCompactInfoBar::ApplyBoolTranslateOption( |
| } |
| } |
| -void TranslateCompactInfoBar::OnPageTranslated( |
| - const std::string& original_lang, |
| - const std::string& translated_lang, |
| - translate::TranslateErrors::Type error_type) { |
| - if (!owner()) |
| - return; // We're closing; don't call anything, it might access the owner. |
| - |
| - DCHECK(translate_driver_); |
| - JNIEnv* env = base::android::AttachCurrentThread(); |
| - Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(), |
| - error_type); |
| -} |
| - |
| bool TranslateCompactInfoBar::ShouldAutoAlwaysTranslate() { |
| translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
| return (delegate->GetTranslationAcceptedCount() == kAcceptCountThreshold); |
| @@ -163,6 +150,24 @@ translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() { |
| return delegate()->AsTranslateInfoBarDelegate(); |
| } |
| +void TranslateCompactInfoBar::ActionOnStep( |
| + translate::TranslateStep step, |
| + translate::TranslateErrors::Type error_type) { |
| + if (!owner()) |
| + return; // We're closing; don't call anything. |
| + |
| + if ((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || |
| + (step == translate::TRANSLATE_STEP_TRANSLATE_ERROR)) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
|
napper
2017/05/19 00:17:50
Can this be:
const JNIEnv* const env ...
or at l
Leo
2017/05/19 03:30:23
Not sure whether JNI framework has treated the env
|
| + Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(), |
| + error_type); |
| + } |
| +} |
| + |
| +bool TranslateCompactInfoBar::Declined() { |
| + return action_flags == 0; |
|
napper
2017/05/19 00:17:50
It might be clearer if you had:
FLAG_NONE = 0
th
Leo
2017/05/19 03:30:23
Acknowledged.
|
| +}; |
| + |
| // Native JNI methods --------------------------------------------------------- |
| // static |