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" |
(...skipping 21 matching lines...) Expand all Loading... |
32 JNIEnv* env, | 32 JNIEnv* env, |
33 jobjectArray data_array, | 33 jobjectArray data_array, |
34 size_t position, | 34 size_t position, |
35 bool deletable) { | 35 bool deletable) { |
36 int android_icon_id = 0; | 36 int android_icon_id = 0; |
37 if (!suggestion.icon.empty()) | 37 if (!suggestion.icon.empty()) |
38 android_icon_id = ResourceMapper::MapFromChromiumId(icon_id); | 38 android_icon_id = ResourceMapper::MapFromChromiumId(icon_id); |
39 | 39 |
40 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( | 40 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( |
41 env, data_array, position, | 41 env, data_array, position, |
42 base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(), | 42 base::android::ConvertUTF16ToJavaString(env, suggestion.value), |
43 base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(), | 43 base::android::ConvertUTF16ToJavaString(env, suggestion.label), |
44 android_icon_id, suggestion.frontend_id, deletable); | 44 android_icon_id, suggestion.frontend_id, deletable); |
45 } | 45 } |
46 | 46 |
47 } // namespace | 47 } // namespace |
48 | 48 |
49 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView( | 49 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView( |
50 AutofillPopupController* controller) | 50 AutofillPopupController* controller) |
51 : controller_(controller), deleting_index_(-1) { | 51 : controller_(controller), deleting_index_(-1) { |
52 JNIEnv* env = base::android::AttachCurrentThread(); | 52 JNIEnv* env = base::android::AttachCurrentThread(); |
53 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env)); | 53 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env)); |
54 } | 54 } |
55 | 55 |
56 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { | 56 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { |
57 JNIEnv* env = base::android::AttachCurrentThread(); | 57 JNIEnv* env = base::android::AttachCurrentThread(); |
58 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer( | 58 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer(env, |
59 env, java_object_.obj()); | 59 java_object_); |
60 } | 60 } |
61 | 61 |
62 void AutofillKeyboardAccessoryView::Show() { | 62 void AutofillKeyboardAccessoryView::Show() { |
63 JNIEnv* env = base::android::AttachCurrentThread(); | 63 JNIEnv* env = base::android::AttachCurrentThread(); |
64 ui::ViewAndroid* view_android = controller_->container_view(); | 64 ui::ViewAndroid* view_android = controller_->container_view(); |
65 DCHECK(view_android); | 65 DCHECK(view_android); |
66 Java_AutofillKeyboardAccessoryBridge_init( | 66 Java_AutofillKeyboardAccessoryBridge_init( |
67 env, java_object_.obj(), | 67 env, java_object_, reinterpret_cast<intptr_t>(this), |
68 reinterpret_cast<intptr_t>(this), | 68 view_android->GetWindowAndroid()->GetJavaObject()); |
69 view_android->GetWindowAndroid()->GetJavaObject().obj()); | |
70 | 69 |
71 UpdateBoundsAndRedrawPopup(); | 70 UpdateBoundsAndRedrawPopup(); |
72 } | 71 } |
73 | 72 |
74 void AutofillKeyboardAccessoryView::Hide() { | 73 void AutofillKeyboardAccessoryView::Hide() { |
75 controller_ = nullptr; | 74 controller_ = nullptr; |
76 JNIEnv* env = base::android::AttachCurrentThread(); | 75 JNIEnv* env = base::android::AttachCurrentThread(); |
77 Java_AutofillKeyboardAccessoryBridge_dismiss(env, java_object_.obj()); | 76 Java_AutofillKeyboardAccessoryBridge_dismiss(env, java_object_); |
78 } | 77 } |
79 | 78 |
80 void AutofillKeyboardAccessoryView::UpdateBoundsAndRedrawPopup() { | 79 void AutofillKeyboardAccessoryView::UpdateBoundsAndRedrawPopup() { |
81 JNIEnv* env = base::android::AttachCurrentThread(); | 80 JNIEnv* env = base::android::AttachCurrentThread(); |
82 size_t count = controller_->GetLineCount(); | 81 size_t count = controller_->GetLineCount(); |
83 ScopedJavaLocalRef<jobjectArray> data_array = | 82 ScopedJavaLocalRef<jobjectArray> data_array = |
84 Java_AutofillKeyboardAccessoryBridge_createAutofillSuggestionArray(env, | 83 Java_AutofillKeyboardAccessoryBridge_createAutofillSuggestionArray(env, |
85 count); | 84 count); |
86 positions_.resize(count); | 85 positions_.resize(count); |
87 size_t position = 0; | 86 size_t position = 0; |
(...skipping 14 matching lines...) Expand all Loading... |
102 if (suggestion.frontend_id != POPUP_ITEM_ID_CLEAR_FORM) { | 101 if (suggestion.frontend_id != POPUP_ITEM_ID_CLEAR_FORM) { |
103 bool deletable = | 102 bool deletable = |
104 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); | 103 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); |
105 AddToJavaArray(suggestion, controller_->layout_model().GetIconResourceID( | 104 AddToJavaArray(suggestion, controller_->layout_model().GetIconResourceID( |
106 suggestion.icon), | 105 suggestion.icon), |
107 env, data_array.obj(), position, deletable); | 106 env, data_array.obj(), position, deletable); |
108 positions_[position++] = i; | 107 positions_[position++] = i; |
109 } | 108 } |
110 } | 109 } |
111 | 110 |
112 Java_AutofillKeyboardAccessoryBridge_show( | 111 Java_AutofillKeyboardAccessoryBridge_show(env, java_object_, data_array, |
113 env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); | 112 controller_->IsRTL()); |
114 } | 113 } |
115 | 114 |
116 void AutofillKeyboardAccessoryView::SuggestionSelected( | 115 void AutofillKeyboardAccessoryView::SuggestionSelected( |
117 JNIEnv* env, | 116 JNIEnv* env, |
118 const JavaParamRef<jobject>& obj, | 117 const JavaParamRef<jobject>& obj, |
119 jint list_index) { | 118 jint list_index) { |
120 // Race: Hide() may have already run. | 119 // Race: Hide() may have already run. |
121 if (controller_) | 120 if (controller_) |
122 controller_->AcceptSuggestion(positions_[list_index]); | 121 controller_->AcceptSuggestion(positions_[list_index]); |
123 } | 122 } |
124 | 123 |
125 void AutofillKeyboardAccessoryView::DeletionRequested( | 124 void AutofillKeyboardAccessoryView::DeletionRequested( |
126 JNIEnv* env, | 125 JNIEnv* env, |
127 const JavaParamRef<jobject>& obj, | 126 const JavaParamRef<jobject>& obj, |
128 jint list_index) { | 127 jint list_index) { |
129 if (!controller_) | 128 if (!controller_) |
130 return; | 129 return; |
131 | 130 |
132 base::string16 confirmation_title, confirmation_body; | 131 base::string16 confirmation_title, confirmation_body; |
133 if (!controller_->GetRemovalConfirmationText( | 132 if (!controller_->GetRemovalConfirmationText( |
134 positions_[list_index], &confirmation_title, &confirmation_body)) { | 133 positions_[list_index], &confirmation_title, &confirmation_body)) { |
135 return; | 134 return; |
136 } | 135 } |
137 | 136 |
138 deleting_index_ = positions_[list_index]; | 137 deleting_index_ = positions_[list_index]; |
139 Java_AutofillKeyboardAccessoryBridge_confirmDeletion( | 138 Java_AutofillKeyboardAccessoryBridge_confirmDeletion( |
140 env, java_object_.obj(), | 139 env, java_object_, |
141 base::android::ConvertUTF16ToJavaString(env, confirmation_title).obj(), | 140 base::android::ConvertUTF16ToJavaString(env, confirmation_title), |
142 base::android::ConvertUTF16ToJavaString(env, confirmation_body).obj()); | 141 base::android::ConvertUTF16ToJavaString(env, confirmation_body)); |
143 } | 142 } |
144 | 143 |
145 void AutofillKeyboardAccessoryView::DeletionConfirmed( | 144 void AutofillKeyboardAccessoryView::DeletionConfirmed( |
146 JNIEnv* env, | 145 JNIEnv* env, |
147 const JavaParamRef<jobject>& obj) { | 146 const JavaParamRef<jobject>& obj) { |
148 if (!controller_) | 147 if (!controller_) |
149 return; | 148 return; |
150 | 149 |
151 CHECK_GE(deleting_index_, 0); | 150 CHECK_GE(deleting_index_, 0); |
152 controller_->RemoveSuggestion(deleting_index_); | 151 controller_->RemoveSuggestion(deleting_index_); |
(...skipping 11 matching lines...) Expand all Loading... |
164 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) { | 163 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) { |
165 } | 164 } |
166 | 165 |
167 // static | 166 // static |
168 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView( | 167 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView( |
169 JNIEnv* env) { | 168 JNIEnv* env) { |
170 return RegisterNativesImpl(env); | 169 return RegisterNativesImpl(env); |
171 } | 170 } |
172 | 171 |
173 } // namespace autofill | 172 } // namespace autofill |
OLD | NEW |