OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_infobar.h" | 5 #include "chrome/browser/ui/android/infobars/translate_infobar.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_weak_ref.h" | 9 #include "base/android/jni_weak_ref.h" |
10 #include "chrome/browser/translate/chrome_translate_client.h" | 10 #include "chrome/browser/translate/chrome_translate_client.h" |
11 #include "components/translate/core/browser/translate_infobar_delegate.h" | 11 #include "components/translate/core/browser/translate_infobar_delegate.h" |
12 #include "grit/generated_resources.h" | 12 #include "grit/generated_resources.h" |
13 #include "jni/TranslateInfoBarDelegate_jni.h" | 13 #include "jni/TranslateInfoBarDelegate_jni.h" |
14 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" |
15 | 15 |
16 // ChromeTranslateClient | 16 // ChromeTranslateClient |
17 // ---------------------------------------------------------- | 17 // ---------------------------------------------------------- |
18 | 18 |
19 scoped_ptr<infobars::InfoBar> ChromeTranslateClient::CreateInfoBar( | 19 scoped_ptr<infobars::InfoBar> ChromeTranslateClient::CreateInfoBar( |
20 scoped_ptr<TranslateInfoBarDelegate> delegate) const { | 20 scoped_ptr<translate::TranslateInfoBarDelegate> delegate) const { |
21 return scoped_ptr<infobars::InfoBar>(new TranslateInfoBar(delegate.Pass())); | 21 return scoped_ptr<infobars::InfoBar>(new TranslateInfoBar(delegate.Pass())); |
22 } | 22 } |
23 | 23 |
24 | 24 |
25 // TranslateInfoBar ----------------------------------------------------------- | 25 // TranslateInfoBar ----------------------------------------------------------- |
26 | 26 |
27 TranslateInfoBar::TranslateInfoBar( | 27 TranslateInfoBar::TranslateInfoBar( |
28 scoped_ptr<TranslateInfoBarDelegate> delegate) | 28 scoped_ptr<translate::TranslateInfoBarDelegate> delegate) |
29 : InfoBarAndroid(delegate.PassAs<infobars::InfoBarDelegate>()), | 29 : InfoBarAndroid(delegate.PassAs<infobars::InfoBarDelegate>()), |
30 java_translate_delegate_() { | 30 java_translate_delegate_() { |
31 } | 31 } |
32 | 32 |
33 TranslateInfoBar::~TranslateInfoBar() { | 33 TranslateInfoBar::~TranslateInfoBar() { |
34 } | 34 } |
35 | 35 |
36 ScopedJavaLocalRef<jobject> TranslateInfoBar::CreateRenderInfoBar(JNIEnv* env) { | 36 ScopedJavaLocalRef<jobject> TranslateInfoBar::CreateRenderInfoBar(JNIEnv* env) { |
37 java_translate_delegate_.Reset(Java_TranslateInfoBarDelegate_create(env)); | 37 java_translate_delegate_.Reset(Java_TranslateInfoBarDelegate_create(env)); |
38 TranslateInfoBarDelegate* delegate = GetDelegate(); | 38 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
39 std::vector<base::string16> languages; | 39 std::vector<base::string16> languages; |
40 languages.reserve(delegate->num_languages()); | 40 languages.reserve(delegate->num_languages()); |
41 for (size_t i = 0; i < delegate->num_languages(); ++i) | 41 for (size_t i = 0; i < delegate->num_languages(); ++i) |
42 languages.push_back(delegate->language_name_at(i)); | 42 languages.push_back(delegate->language_name_at(i)); |
43 | 43 |
44 base::android::ScopedJavaLocalRef<jobjectArray> java_languages = | 44 base::android::ScopedJavaLocalRef<jobjectArray> java_languages = |
45 base::android::ToJavaArrayOfStrings(env, languages); | 45 base::android::ToJavaArrayOfStrings(env, languages); |
46 return Java_TranslateInfoBarDelegate_showTranslateInfoBar( | 46 return Java_TranslateInfoBarDelegate_showTranslateInfoBar( |
47 env, java_translate_delegate_.obj(), reinterpret_cast<intptr_t>(this), | 47 env, java_translate_delegate_.obj(), reinterpret_cast<intptr_t>(this), |
48 delegate->translate_step(), delegate->original_language_index(), | 48 delegate->translate_step(), delegate->original_language_index(), |
49 delegate->target_language_index(), delegate->ShouldAlwaysTranslate(), | 49 delegate->target_language_index(), delegate->ShouldAlwaysTranslate(), |
50 ShouldDisplayNeverTranslateInfoBarOnCancel(), | 50 ShouldDisplayNeverTranslateInfoBarOnCancel(), |
51 delegate->triggered_from_menu(), java_languages.obj()); | 51 delegate->triggered_from_menu(), java_languages.obj()); |
52 } | 52 } |
53 | 53 |
54 void TranslateInfoBar::ProcessButton(int action, | 54 void TranslateInfoBar::ProcessButton(int action, |
55 const std::string& action_value) { | 55 const std::string& action_value) { |
56 if (!owner()) | 56 if (!owner()) |
57 return; // We're closing; don't call anything, it might access the owner. | 57 return; // We're closing; don't call anything, it might access the owner. |
58 | 58 |
59 TranslateInfoBarDelegate* delegate = GetDelegate(); | 59 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
60 if (action == InfoBarAndroid::ACTION_TRANSLATE) { | 60 if (action == InfoBarAndroid::ACTION_TRANSLATE) { |
61 delegate->Translate(); | 61 delegate->Translate(); |
62 return; | 62 return; |
63 } | 63 } |
64 | 64 |
65 if (action == InfoBarAndroid::ACTION_CANCEL) | 65 if (action == InfoBarAndroid::ACTION_CANCEL) |
66 delegate->TranslationDeclined(); | 66 delegate->TranslationDeclined(); |
67 else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) | 67 else if (action == InfoBarAndroid::ACTION_TRANSLATE_SHOW_ORIGINAL) |
68 delegate->RevertTranslation(); | 68 delegate->RevertTranslation(); |
69 else | 69 else |
70 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action); | 70 DCHECK_EQ(InfoBarAndroid::ACTION_NONE, action); |
71 | 71 |
72 RemoveSelf(); | 72 RemoveSelf(); |
73 } | 73 } |
74 | 74 |
75 void TranslateInfoBar::PassJavaInfoBar(InfoBarAndroid* source) { | 75 void TranslateInfoBar::PassJavaInfoBar(InfoBarAndroid* source) { |
76 TranslateInfoBarDelegate* delegate = GetDelegate(); | 76 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
77 DCHECK_NE(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, | 77 DCHECK_NE(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, |
78 delegate->translate_step()); | 78 delegate->translate_step()); |
79 | 79 |
80 // Ask the former bar to transfer ownership to us. | 80 // Ask the former bar to transfer ownership to us. |
81 DCHECK(source != NULL); | 81 DCHECK(source != NULL); |
82 static_cast<TranslateInfoBar*>(source)->TransferOwnership( | 82 static_cast<TranslateInfoBar*>(source)->TransferOwnership( |
83 this, delegate->translate_step()); | 83 this, delegate->translate_step()); |
84 } | 84 } |
85 | 85 |
86 void TranslateInfoBar::ApplyTranslateOptions(JNIEnv* env, | 86 void TranslateInfoBar::ApplyTranslateOptions(JNIEnv* env, |
87 jobject obj, | 87 jobject obj, |
88 int source_language_index, | 88 int source_language_index, |
89 int target_language_index, | 89 int target_language_index, |
90 bool always_translate, | 90 bool always_translate, |
91 bool never_translate_language, | 91 bool never_translate_language, |
92 bool never_translate_site) { | 92 bool never_translate_site) { |
93 TranslateInfoBarDelegate* delegate = GetDelegate(); | 93 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
94 delegate->UpdateOriginalLanguageIndex(source_language_index); | 94 delegate->UpdateOriginalLanguageIndex(source_language_index); |
95 delegate->UpdateTargetLanguageIndex(target_language_index); | 95 delegate->UpdateTargetLanguageIndex(target_language_index); |
96 | 96 |
97 if (delegate->ShouldAlwaysTranslate() != always_translate) | 97 if (delegate->ShouldAlwaysTranslate() != always_translate) |
98 delegate->ToggleAlwaysTranslate(); | 98 delegate->ToggleAlwaysTranslate(); |
99 | 99 |
100 if (never_translate_language && delegate->IsTranslatableLanguageByPrefs()) | 100 if (never_translate_language && delegate->IsTranslatableLanguageByPrefs()) |
101 delegate->ToggleTranslatableLanguageByPrefs(); | 101 delegate->ToggleTranslatableLanguageByPrefs(); |
102 | 102 |
103 if (never_translate_site && !delegate->IsSiteBlacklisted()) | 103 if (never_translate_site && !delegate->IsSiteBlacklisted()) |
(...skipping 10 matching lines...) Expand all Loading... |
114 destination->SetJavaDelegate(java_translate_delegate_.Release()); | 114 destination->SetJavaDelegate(java_translate_delegate_.Release()); |
115 } | 115 } |
116 } | 116 } |
117 | 117 |
118 void TranslateInfoBar::SetJavaDelegate(jobject delegate) { | 118 void TranslateInfoBar::SetJavaDelegate(jobject delegate) { |
119 JNIEnv* env = base::android::AttachCurrentThread(); | 119 JNIEnv* env = base::android::AttachCurrentThread(); |
120 java_translate_delegate_.Reset(env, delegate); | 120 java_translate_delegate_.Reset(env, delegate); |
121 } | 121 } |
122 | 122 |
123 bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() { | 123 bool TranslateInfoBar::ShouldDisplayNeverTranslateInfoBarOnCancel() { |
124 TranslateInfoBarDelegate* delegate = GetDelegate(); | 124 translate::TranslateInfoBarDelegate* delegate = GetDelegate(); |
125 return (delegate->translate_step() == | 125 return (delegate->translate_step() == |
126 translate::TRANSLATE_STEP_BEFORE_TRANSLATE) && | 126 translate::TRANSLATE_STEP_BEFORE_TRANSLATE) && |
127 delegate->ShouldShowNeverTranslateShortcut(); | 127 delegate->ShouldShowNeverTranslateShortcut(); |
128 } | 128 } |
129 | 129 |
130 TranslateInfoBarDelegate* TranslateInfoBar::GetDelegate() { | 130 translate::TranslateInfoBarDelegate* TranslateInfoBar::GetDelegate() { |
131 return delegate()->AsTranslateInfoBarDelegate(); | 131 return delegate()->AsTranslateInfoBarDelegate(); |
132 } | 132 } |
133 | 133 |
134 | 134 |
135 // Native JNI methods --------------------------------------------------------- | 135 // Native JNI methods --------------------------------------------------------- |
136 | 136 |
137 bool RegisterTranslateInfoBarDelegate(JNIEnv* env) { | 137 bool RegisterTranslateInfoBarDelegate(JNIEnv* env) { |
138 return RegisterNativesImpl(env); | 138 return RegisterNativesImpl(env); |
139 } | 139 } |
OLD | NEW |