OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |