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

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

Issue 2788343002: Translate page in the new UI. (Closed)
Patch Set: compact unit test Created 3 years, 8 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"
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 "components/translate/core/browser/translate_infobar_delegate.h" 15 #include "components/translate/core/browser/translate_infobar_delegate.h"
15 #include "jni/TranslateCompactInfoBar_jni.h" 16 #include "jni/TranslateCompactInfoBar_jni.h"
16 17
17 using base::android::JavaParamRef; 18 using base::android::JavaParamRef;
18 using base::android::ScopedJavaLocalRef; 19 using base::android::ScopedJavaLocalRef;
19 20
20 // TranslateInfoBar ----------------------------------------------------------- 21 // TranslateInfoBar -----------------------------------------------------------
21 22
22 TranslateCompactInfoBar::TranslateCompactInfoBar( 23 TranslateCompactInfoBar::TranslateCompactInfoBar(
23 std::unique_ptr<translate::TranslateInfoBarDelegate> delegate) 24 std::unique_ptr<translate::TranslateInfoBarDelegate> delegate)
24 : InfoBarAndroid(std::move(delegate)) {} 25 : InfoBarAndroid(std::move(delegate)) {
26 // |translate_driver| must already be bound.
27 DCHECK(GetDelegate()->GetTranslateDriver());
28 translate_driver_ = static_cast<translate::ContentTranslateDriver*>(
29 GetDelegate()->GetTranslateDriver());
30 translate_driver_->AddObserver(this);
31 }
25 32
26 TranslateCompactInfoBar::~TranslateCompactInfoBar() {} 33 TranslateCompactInfoBar::~TranslateCompactInfoBar() {
34 DCHECK(translate_driver_);
35 translate_driver_->RemoveObserver(this);
36 }
27 37
28 ScopedJavaLocalRef<jobject> TranslateCompactInfoBar::CreateRenderInfoBar( 38 ScopedJavaLocalRef<jobject> TranslateCompactInfoBar::CreateRenderInfoBar(
29 JNIEnv* env) { 39 JNIEnv* env) {
30 // TODO(ramyasharma): Implement. 40 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
31 return Java_TranslateCompactInfoBar_create(env); 41
42 base::android::ScopedJavaLocalRef<jobjectArray> java_languages =
43 TranslateUtils::GetJavaLanguages(env, delegate);
44 base::android::ScopedJavaLocalRef<jobjectArray> java_codes =
45 TranslateUtils::GetJavaLanguageCodes(env, delegate);
46
47 ScopedJavaLocalRef<jstring> source_language_code =
48 base::android::ConvertUTF8ToJavaString(
49 env, delegate->original_language_code());
50
51 ScopedJavaLocalRef<jstring> target_language_code =
52 base::android::ConvertUTF8ToJavaString(env,
53 delegate->target_language_code());
54 return Java_TranslateCompactInfoBar_create(env, source_language_code,
55 target_language_code,
56 java_languages, java_codes);
32 } 57 }
33 58
34 void TranslateCompactInfoBar::ProcessButton(int action) { 59 void TranslateCompactInfoBar::ProcessButton(int action) {
35 // TODO(ramyasharma): Implement. 60 if (!owner())
61 return; // We're closing; don't call anything, it might access the owner.
62
63 // TODO(ramyasharma): Handle other button clicks.
64 translate::TranslateInfoBarDelegate* delegate = GetDelegate();
65 if (action == InfoBarAndroid::ACTION_TRANSLATE)
66 delegate->Translate();
67 else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL)
68 delegate->RevertTranslation();
69 else
70 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action);
36 } 71 }
37 72
38 void TranslateCompactInfoBar::SetJavaInfoBar( 73 void TranslateCompactInfoBar::SetJavaInfoBar(
39 const base::android::JavaRef<jobject>& java_info_bar) { 74 const base::android::JavaRef<jobject>& java_info_bar) {
40 InfoBarAndroid::SetJavaInfoBar(java_info_bar); 75 InfoBarAndroid::SetJavaInfoBar(java_info_bar);
41 JNIEnv* env = base::android::AttachCurrentThread(); 76 JNIEnv* env = base::android::AttachCurrentThread();
42 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar, 77 Java_TranslateCompactInfoBar_setNativePtr(env, java_info_bar,
43 reinterpret_cast<intptr_t>(this)); 78 reinterpret_cast<intptr_t>(this));
44 } 79 }
45 80
46 void TranslateCompactInfoBar::ApplyTranslateOptions( 81 void TranslateCompactInfoBar::ApplyTranslateOptions(
47 JNIEnv* env, 82 JNIEnv* env,
48 const JavaParamRef<jobject>& obj) { 83 const JavaParamRef<jobject>& obj) {
49 // TODO(ramyasharma): Implement. 84 // TODO(ramyasharma): Implement.
50 } 85 }
51 86
87 void TranslateCompactInfoBar::OnPageTranslated(
88 const std::string& original_lang,
89 const std::string& translated_lang,
90 translate::TranslateErrors::Type error_type) {
91 if (!owner())
92 return; // We're closing; don't call anything, it might access the owner.
93
94 DCHECK(translate_driver_);
95 JNIEnv* env = base::android::AttachCurrentThread();
96 Java_TranslateCompactInfoBar_onPageTranslated(env, GetJavaInfoBar(),
97 error_type);
98 }
99
52 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() { 100 translate::TranslateInfoBarDelegate* TranslateCompactInfoBar::GetDelegate() {
53 return delegate()->AsTranslateInfoBarDelegate(); 101 return delegate()->AsTranslateInfoBarDelegate();
54 } 102 }
55 103
56 // Native JNI methods --------------------------------------------------------- 104 // Native JNI methods ---------------------------------------------------------
57 105
58 // static 106 // static
59 bool RegisterTranslateCompactInfoBar(JNIEnv* env) { 107 bool RegisterTranslateCompactInfoBar(JNIEnv* env) {
60 return RegisterNativesImpl(env); 108 return RegisterNativesImpl(env);
61 } 109 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698