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

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

Issue 2899893004: Code cleanup for Translate Compact Infobar. (Closed)
Patch Set: Merge branch 'master' into code-cleanup-5 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
« no previous file with comments | « chrome/browser/ui/android/infobars/translate_compact_infobar.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/android/jni_string.h" 11 #include "base/android/jni_string.h"
12 #include "base/android/jni_weak_ref.h" 12 #include "base/android/jni_weak_ref.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "chrome/browser/translate/android/translate_utils.h" 14 #include "chrome/browser/translate/android/translate_utils.h"
15 #include "components/translate/core/browser/translate_infobar_delegate.h" 15 #include "components/translate/core/browser/translate_infobar_delegate.h"
16 #include "jni/TranslateCompactInfoBar_jni.h" 16 #include "jni/TranslateCompactInfoBar_jni.h"
17 17
18 using base::android::JavaParamRef; 18 using base::android::JavaParamRef;
19 using base::android::ScopedJavaLocalRef; 19 using base::android::ScopedJavaLocalRef;
20 20
21 // TranslateInfoBar ----------------------------------------------------------- 21 // TranslateInfoBar -----------------------------------------------------------
22 22
23 TranslateCompactInfoBar::TranslateCompactInfoBar( 23 TranslateCompactInfoBar::TranslateCompactInfoBar(
24 std::unique_ptr<translate::TranslateInfoBarDelegate> delegate) 24 std::unique_ptr<translate::TranslateInfoBarDelegate> delegate)
25 : InfoBarAndroid(std::move(delegate)), action_flags_(FLAG_NONE) { 25 : InfoBarAndroid(std::move(delegate)), action_flags_(FLAG_NONE) {
26 GetDelegate()->SetObserver(this); 26 GetDelegate()->SetObserver(this);
27
28 // Flip the translate bit if auto translate is enabled.
29 if (GetDelegate()->translate_step() == translate::TRANSLATE_STEP_TRANSLATING)
30 action_flags_ |= FLAG_TRANSLATE;
27 } 31 }
28 32
29 TranslateCompactInfoBar::~TranslateCompactInfoBar() { 33 TranslateCompactInfoBar::~TranslateCompactInfoBar() {
30 GetDelegate()->SetObserver(nullptr); 34 GetDelegate()->SetObserver(nullptr);
31 } 35 }
32 36
33 ScopedJavaLocalRef<jobject> TranslateCompactInfoBar::CreateRenderInfoBar( 37 ScopedJavaLocalRef<jobject> TranslateCompactInfoBar::CreateRenderInfoBar(
34 JNIEnv* env) { 38 JNIEnv* env) {
35 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 39 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
36 40
(...skipping 15 matching lines...) Expand all
52 env, delegate->translate_step(), source_language_code, 56 env, delegate->translate_step(), source_language_code,
53 target_language_code, delegate->ShouldAlwaysTranslate(), 57 target_language_code, delegate->ShouldAlwaysTranslate(),
54 delegate->triggered_from_menu(), java_languages, java_codes, 58 delegate->triggered_from_menu(), java_languages, java_codes,
55 java_hash_codes); 59 java_hash_codes);
56 } 60 }
57 61
58 void TranslateCompactInfoBar::ProcessButton(int action) { 62 void TranslateCompactInfoBar::ProcessButton(int action) {
59 if (!owner()) 63 if (!owner())
60 return; // We're closing; don't call anything, it might access the owner. 64 return; // We're closing; don't call anything, it might access the owner.
61 65
62 // TODO(ramyasharma): Handle other button clicks.
63 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 66 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
64 if (action == InfoBarAndroid::ACTION_TRANSLATE) { 67 if (action == InfoBarAndroid::ACTION_TRANSLATE) {
65 action_flags_ |= FLAG_TRANSLATE; 68 action_flags_ |= FLAG_TRANSLATE;
66 delegate->Translate(); 69 delegate->Translate();
67 if (!delegate->ShouldAlwaysTranslate() && ShouldAutoAlwaysTranslate()) { 70 if (!delegate->ShouldAlwaysTranslate() && ShouldAutoAlwaysTranslate()) {
68 JNIEnv* env = base::android::AttachCurrentThread(); 71 JNIEnv* env = base::android::AttachCurrentThread();
69 Java_TranslateCompactInfoBar_setAutoAlwaysTranslate(env, 72 Java_TranslateCompactInfoBar_setAutoAlwaysTranslate(env,
70 GetJavaInfoBar()); 73 GetJavaInfoBar());
71 } 74 }
72 } else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) { 75 } else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) {
73 action_flags_ |= FLAG_REVERT; 76 action_flags_ |= FLAG_REVERT;
74 delegate->RevertWithoutClosingInfobar(); 77 delegate->RevertWithoutClosingInfobar();
75 } else if (action == InfoBarAndroid::ACTION_CANCEL) {
76 delegate->TranslationDeclined();
77 } else { 78 } else {
78 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action); 79 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action);
79 } 80 }
80 } 81 }
81 82
82 void TranslateCompactInfoBar::SetJavaInfoBar( 83 void TranslateCompactInfoBar::SetJavaInfoBar(
83 const base::android::JavaRef<jobject>& java_info_bar) { 84 const base::android::JavaRef<jobject>& java_info_bar) {
84 InfoBarAndroid::SetJavaInfoBar(java_info_bar); 85 InfoBarAndroid::SetJavaInfoBar(java_info_bar);
85 JNIEnv* env = base::android::AttachCurrentThread(); 86 JNIEnv* env = base::android::AttachCurrentThread();
86 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar, 87 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 } 135 }
135 } 136 }
136 137
137 bool TranslateCompactInfoBar::ShouldAutoAlwaysTranslate() { 138 bool TranslateCompactInfoBar::ShouldAutoAlwaysTranslate() {
138 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 139 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
139 return (delegate->GetTranslationAcceptedCount() == kAcceptCountThreshold); 140 return (delegate->GetTranslationAcceptedCount() == kAcceptCountThreshold);
140 } 141 }
141 142
142 jboolean TranslateCompactInfoBar::ShouldAutoNeverTranslate( 143 jboolean TranslateCompactInfoBar::ShouldAutoNeverTranslate(
143 JNIEnv* env, 144 JNIEnv* env,
144 const base::android::JavaParamRef<jobject>& obj) { 145 const base::android::JavaParamRef<jobject>& obj,
146 jboolean menu_expanded) {
147 // Flip menu expanded bit.
148 if (menu_expanded)
149 action_flags_ |= FLAG_EXPAND_MENU;
150
151 if (!IsDeclinedByUser())
152 return false;
153
145 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); 154 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
155 // Don't trigger if it's off the record or already blocked.
156 if (delegate->is_off_the_record() ||
157 !delegate->IsTranslatableLanguageByPrefs())
158 return false;
159
146 return (delegate->GetTranslationDeniedCount() == kDeniedCountThreshold); 160 return (delegate->GetTranslationDeniedCount() == kDeniedCountThreshold);
147 } 161 }
148 162
149 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() { 163 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() {
150 return delegate()->AsTranslateInfoBarDelegate(); 164 return delegate()->AsTranslateInfoBarDelegate();
151 } 165 }
152 166
153 void TranslateCompactInfoBar::OnTranslateStepChanged( 167 void TranslateCompactInfoBar::OnTranslateStepChanged(
154 translate::TranslateStep step, 168 translate::TranslateStep step,
155 translate::TranslateErrors::Type error_type) { 169 translate::TranslateErrors::Type error_type) {
156 if (!owner()) 170 if (!owner())
157 return; // We're closing; don't call anything. 171 return; // We're closing; don't call anything.
158 172
159 if ((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || 173 if ((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) ||
160 (step == translate::TRANSLATE_STEP_TRANSLATE_ERROR)) { 174 (step == translate::TRANSLATE_STEP_TRANSLATE_ERROR)) {
161 JNIEnv* env = base::android::AttachCurrentThread(); 175 JNIEnv* env = base::android::AttachCurrentThread();
162 Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(), 176 Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(),
163 error_type); 177 error_type);
164 } 178 }
165 } 179 }
166 180
167 bool TranslateCompactInfoBar::IsDeclinedByUser() { 181 bool TranslateCompactInfoBar::IsDeclinedByUser() {
182 // Whether there is any affirmative action bit.
168 return action_flags_ == FLAG_NONE; 183 return action_flags_ == FLAG_NONE;
169 }; 184 }
170 185
171 // Native JNI methods --------------------------------------------------------- 186 // Native JNI methods ---------------------------------------------------------
172 187
173 // static 188 // static
174 bool RegisterTranslateCompactInfoBar(JNIEnv* env) { 189 bool RegisterTranslateCompactInfoBar(JNIEnv* env) {
175 return RegisterNativesImpl(env); 190 return RegisterNativesImpl(env);
176 } 191 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/android/infobars/translate_compact_infobar.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698