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

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

Issue 2894553002: Replace OnPageTranslate Obsever by a responder of delegate. (Closed)
Patch Set: 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..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

Powered by Google App Engine
This is Rietveld 408576698