Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3858)

Unified Diff: chrome/browser/ui/android/infobars/translate_compact_infobar.cc

Issue 2894553002: Replace OnPageTranslate Obsever by a responder of delegate. (Closed)
Patch Set: Fix Comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..f4013c8460613524085fb9950bd9e3f78e75886e 100644
--- a/chrome/browser/ui/android/infobars/translate_compact_infobar.cc
+++ b/chrome/browser/ui/android/infobars/translate_compact_infobar.cc
@@ -22,17 +22,12 @@ using base::android::ScopedJavaLocalRef;
TranslateCompactInfoBar::TranslateCompactInfoBar(
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);
+ : InfoBarAndroid(std::move(delegate)), action_flags_(FLAG_NONE) {
+ GetDelegate()->SetObserver(this);
}
TranslateCompactInfoBar::~TranslateCompactInfoBar() {
- DCHECK(translate_driver_);
- translate_driver_->RemoveObserver(this);
+ GetDelegate()->SetObserver(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::OnTranslateStepChanged(
+ 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();
+ Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(),
+ error_type);
+ }
+}
+
+bool TranslateCompactInfoBar::IsDeclinedByUser() {
+ return action_flags_ == FLAG_NONE;
+};
+
// Native JNI methods ---------------------------------------------------------
// static

Powered by Google App Engine
This is Rietveld 408576698