| 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 |