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

Side by Side Diff: chrome/browser/ui/android/infobars/translate_compact_infobar.cc

Issue 2871783003: Automatically trigger Always-Translate in new translation infobar (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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "chrome/browser/ui/android/infobars/translate_compact_infobar.h" 5 #include "chrome/browser/ui/android/infobars/translate_compact_infobar.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_array.h" 10 #include "base/android/jni_array.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 target_language_code, delegate->ShouldAlwaysTranslate(), 56 target_language_code, delegate->ShouldAlwaysTranslate(),
57 delegate->triggered_from_menu(), java_languages, java_codes); 57 delegate->triggered_from_menu(), java_languages, java_codes);
58 } 58 }
59 59
60 void TranslateCompactInfoBar::ProcessButton(int action) { 60 void TranslateCompactInfoBar::ProcessButton(int action) {
61 if (!owner()) 61 if (!owner())
62 return; // We're closing; don't call anything, it might access the owner. 62 return; // We're closing; don't call anything, it might access the owner.
63 63
64 // TODO(ramyasharma): Handle other button clicks. 64 // TODO(ramyasharma): Handle other button clicks.
65 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 65 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
66 if (action == InfoBarAndroid::ACTION_TRANSLATE) 66 if (action == InfoBarAndroid::ACTION_TRANSLATE) {
67 delegate->Translate(); 67 delegate->Translate();
68 else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) 68 if (!delegate->ShouldAlwaysTranslate() && ShouldAutoAlwaysTranslate()) {
69 JNIEnv* env = base::android::AttachCurrentThread();
70 Java_TranslateCompactInfoBar_setAutoAlwaysTranslate(env,
71 GetJavaInfoBar());
72 }
73 } else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) {
69 delegate->RevertTranslation(); 74 delegate->RevertTranslation();
70 else 75 } else if (action == InfoBarAndroid::ACTION_CANCEL) {
76 delegate->TranslationDeclined();
77 } else {
71 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action); 78 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action);
79 }
72 } 80 }
73 81
74 void TranslateCompactInfoBar::SetJavaInfoBar( 82 void TranslateCompactInfoBar::SetJavaInfoBar(
75 const base::android::JavaRef<jobject>& java_info_bar) { 83 const base::android::JavaRef<jobject>& java_info_bar) {
76 InfoBarAndroid::SetJavaInfoBar(java_info_bar); 84 InfoBarAndroid::SetJavaInfoBar(java_info_bar);
77 JNIEnv* env = base::android::AttachCurrentThread(); 85 JNIEnv* env = base::android::AttachCurrentThread();
78 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar, 86 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar,
79 reinterpret_cast<intptr_t>(this)); 87 reinterpret_cast<intptr_t>(this));
80 } 88 }
81 89
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 translate::TranslateErrors::Type error_type) { 137 translate::TranslateErrors::Type error_type) {
130 if (!owner()) 138 if (!owner())
131 return; // We're closing; don't call anything, it might access the owner. 139 return; // We're closing; don't call anything, it might access the owner.
132 140
133 DCHECK(translate_driver_); 141 DCHECK(translate_driver_);
134 JNIEnv* env = base::android::AttachCurrentThread(); 142 JNIEnv* env = base::android::AttachCurrentThread();
135 Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(), 143 Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(),
136 error_type); 144 error_type);
137 } 145 }
138 146
147 bool TranslateCompactInfoBar::ShouldAutoAlwaysTranslate() {
148 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
149 return (delegate->GetTranslationAcceptedCount() == kAcceptCountThreshold);
150 }
151
139 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() { 152 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() {
140 return delegate()->AsTranslateInfoBarDelegate(); 153 return delegate()->AsTranslateInfoBarDelegate();
141 } 154 }
142 155
143 // Native JNI methods --------------------------------------------------------- 156 // Native JNI methods ---------------------------------------------------------
144 157
145 // static 158 // static
146 bool RegisterTranslateCompactInfoBar(JNIEnv* env) { 159 bool RegisterTranslateCompactInfoBar(JNIEnv* env) {
147 return RegisterNativesImpl(env); 160 return RegisterNativesImpl(env);
148 } 161 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698