OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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/autofill/autofill_keyboard_accessory_view.h" | 5 #include "chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "chrome/browser/android/resource_mapper.h" | 9 #include "chrome/browser/android/resource_mapper.h" |
10 #include "chrome/browser/ui/android/view_android_helper.h" | 10 #include "chrome/browser/ui/android/view_android_helper.h" |
11 #include "chrome/browser/ui/autofill/autofill_popup_controller.h" | 11 #include "chrome/browser/ui/autofill/autofill_popup_controller.h" |
| 12 #include "chrome/browser/ui/autofill/autofill_popup_layout_model.h" |
12 #include "components/autofill/core/browser/popup_item_ids.h" | 13 #include "components/autofill/core/browser/popup_item_ids.h" |
13 #include "components/autofill/core/browser/suggestion.h" | 14 #include "components/autofill/core/browser/suggestion.h" |
14 #include "grit/components_strings.h" | 15 #include "grit/components_strings.h" |
15 #include "jni/AutofillKeyboardAccessoryBridge_jni.h" | 16 #include "jni/AutofillKeyboardAccessoryBridge_jni.h" |
16 #include "ui/android/view_android.h" | 17 #include "ui/android/view_android.h" |
17 #include "ui/android/window_android.h" | 18 #include "ui/android/window_android.h" |
18 #include "ui/base/l10n/l10n_util.h" | 19 #include "ui/base/l10n/l10n_util.h" |
19 #include "ui/base/resource/resource_bundle.h" | 20 #include "ui/base/resource/resource_bundle.h" |
20 #include "ui/gfx/geometry/rect.h" | 21 #include "ui/gfx/geometry/rect.h" |
21 | 22 |
22 namespace autofill { | 23 namespace autofill { |
23 | 24 |
24 namespace { | 25 namespace { |
25 | 26 |
26 void AddToJavaArray(const Suggestion& suggestion, | 27 void AddToJavaArray(const Suggestion& suggestion, |
27 const AutofillPopupController& controller, | 28 int icon_id, |
28 JNIEnv* env, | 29 JNIEnv* env, |
29 jobjectArray data_array, | 30 jobjectArray data_array, |
30 size_t position, | 31 size_t position, |
31 bool deletable) { | 32 bool deletable) { |
32 int android_icon_id = 0; | 33 int android_icon_id = 0; |
33 if (!suggestion.icon.empty()) { | 34 if (!suggestion.icon.empty()) |
34 android_icon_id = ResourceMapper::MapFromChromiumId( | 35 android_icon_id = ResourceMapper::MapFromChromiumId(icon_id); |
35 controller.GetIconResourceID(suggestion.icon)); | |
36 } | |
37 | 36 |
38 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( | 37 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( |
39 env, data_array, position, | 38 env, data_array, position, |
40 base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(), | 39 base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(), |
41 base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(), | 40 base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(), |
42 android_icon_id, suggestion.frontend_id, deletable); | 41 android_icon_id, suggestion.frontend_id, deletable); |
43 } | 42 } |
44 | 43 |
45 } // namespace | 44 } // namespace |
46 | 45 |
47 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView( | 46 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView( |
48 AutofillPopupController* controller) | 47 AutofillPopupController* controller) |
49 : controller_(controller), | 48 : controller_(controller), deleting_index_(-1) { |
50 deleting_index_(-1) { | |
51 JNIEnv* env = base::android::AttachCurrentThread(); | 49 JNIEnv* env = base::android::AttachCurrentThread(); |
52 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env)); | 50 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env)); |
53 } | 51 } |
54 | 52 |
55 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { | 53 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { |
56 JNIEnv* env = base::android::AttachCurrentThread(); | 54 JNIEnv* env = base::android::AttachCurrentThread(); |
57 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer( | 55 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer( |
58 env, java_object_.obj()); | 56 env, java_object_.obj()); |
59 } | 57 } |
60 | 58 |
(...skipping 21 matching lines...) Expand all Loading... |
82 ScopedJavaLocalRef<jobjectArray> data_array = | 80 ScopedJavaLocalRef<jobjectArray> data_array = |
83 Java_AutofillKeyboardAccessoryBridge_createAutofillSuggestionArray(env, | 81 Java_AutofillKeyboardAccessoryBridge_createAutofillSuggestionArray(env, |
84 count); | 82 count); |
85 positions_.resize(count); | 83 positions_.resize(count); |
86 size_t position = 0; | 84 size_t position = 0; |
87 | 85 |
88 // Place "CLEAR FORM" item first in the list. | 86 // Place "CLEAR FORM" item first in the list. |
89 for (size_t i = 0; i < count; ++i) { | 87 for (size_t i = 0; i < count; ++i) { |
90 const Suggestion& suggestion = controller_->GetSuggestionAt(i); | 88 const Suggestion& suggestion = controller_->GetSuggestionAt(i); |
91 if (suggestion.frontend_id == POPUP_ITEM_ID_CLEAR_FORM) { | 89 if (suggestion.frontend_id == POPUP_ITEM_ID_CLEAR_FORM) { |
92 AddToJavaArray(suggestion, *controller_, env, data_array.obj(), position, | 90 AddToJavaArray(suggestion, controller_->layout_model().GetIconResourceID( |
93 false); | 91 suggestion.icon), |
| 92 env, data_array.obj(), position, false); |
94 positions_[position++] = i; | 93 positions_[position++] = i; |
95 } | 94 } |
96 } | 95 } |
97 | 96 |
98 for (size_t i = 0; i < count; ++i) { | 97 for (size_t i = 0; i < count; ++i) { |
99 const Suggestion& suggestion = controller_->GetSuggestionAt(i); | 98 const Suggestion& suggestion = controller_->GetSuggestionAt(i); |
100 if (suggestion.frontend_id != POPUP_ITEM_ID_CLEAR_FORM) { | 99 if (suggestion.frontend_id != POPUP_ITEM_ID_CLEAR_FORM) { |
101 bool deletable = | 100 bool deletable = |
102 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); | 101 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); |
103 AddToJavaArray(suggestion, *controller_, env, data_array.obj(), position, | 102 AddToJavaArray(suggestion, controller_->layout_model().GetIconResourceID( |
104 deletable); | 103 suggestion.icon), |
| 104 env, data_array.obj(), position, deletable); |
105 positions_[position++] = i; | 105 positions_[position++] = i; |
106 } | 106 } |
107 } | 107 } |
108 | 108 |
109 Java_AutofillKeyboardAccessoryBridge_show( | 109 Java_AutofillKeyboardAccessoryBridge_show( |
110 env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); | 110 env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); |
111 } | 111 } |
112 | 112 |
113 void AutofillKeyboardAccessoryView::SuggestionSelected( | 113 void AutofillKeyboardAccessoryView::SuggestionSelected( |
114 JNIEnv* env, | 114 JNIEnv* env, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) { | 161 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) { |
162 } | 162 } |
163 | 163 |
164 // static | 164 // static |
165 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView( | 165 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView( |
166 JNIEnv* env) { | 166 JNIEnv* env) { |
167 return RegisterNativesImpl(env); | 167 return RegisterNativesImpl(env); |
168 } | 168 } |
169 | 169 |
170 } // namespace autofill | 170 } // namespace autofill |
OLD | NEW |