| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_popup_view_android.h" | 5 #include "chrome/browser/ui/android/autofill/autofill_popup_view_android.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 "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "chrome/browser/android/resource_mapper.h" | 10 #include "chrome/browser/android/resource_mapper.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 JNIEnv* env = base::android::AttachCurrentThread(); | 38 JNIEnv* env = base::android::AttachCurrentThread(); |
| 39 ui::ViewAndroid* view_android = controller_->container_view(); | 39 ui::ViewAndroid* view_android = controller_->container_view(); |
| 40 | 40 |
| 41 DCHECK(view_android); | 41 DCHECK(view_android); |
| 42 popup_view_ = view_android->AcquireAnchorView(); | 42 popup_view_ = view_android->AcquireAnchorView(); |
| 43 const ScopedJavaLocalRef<jobject> view = popup_view_.view(); | 43 const ScopedJavaLocalRef<jobject> view = popup_view_.view(); |
| 44 if (view.is_null()) | 44 if (view.is_null()) |
| 45 return; | 45 return; |
| 46 | 46 |
| 47 java_object_.Reset(Java_AutofillPopupBridge_create( | 47 java_object_.Reset(Java_AutofillPopupBridge_create( |
| 48 env, view.obj(), reinterpret_cast<intptr_t>(this), | 48 env, view, reinterpret_cast<intptr_t>(this), |
| 49 view_android->GetWindowAndroid()->GetJavaObject().obj())); | 49 view_android->GetWindowAndroid()->GetJavaObject())); |
| 50 | 50 |
| 51 UpdateBoundsAndRedrawPopup(); | 51 UpdateBoundsAndRedrawPopup(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 void AutofillPopupViewAndroid::Hide() { | 54 void AutofillPopupViewAndroid::Hide() { |
| 55 controller_ = NULL; | 55 controller_ = NULL; |
| 56 JNIEnv* env = base::android::AttachCurrentThread(); | 56 JNIEnv* env = base::android::AttachCurrentThread(); |
| 57 if (!java_object_.is_null()) { | 57 if (!java_object_.is_null()) { |
| 58 Java_AutofillPopupBridge_dismiss(env, java_object_.obj()); | 58 Java_AutofillPopupBridge_dismiss(env, java_object_); |
| 59 } else { | 59 } else { |
| 60 // Hide() should delete |this| either via Java dismiss or directly. | 60 // Hide() should delete |this| either via Java dismiss or directly. |
| 61 delete this; | 61 delete this; |
| 62 } | 62 } |
| 63 } | 63 } |
| 64 | 64 |
| 65 void AutofillPopupViewAndroid::UpdateBoundsAndRedrawPopup() { | 65 void AutofillPopupViewAndroid::UpdateBoundsAndRedrawPopup() { |
| 66 if (java_object_.is_null()) | 66 if (java_object_.is_null()) |
| 67 return; | 67 return; |
| 68 | 68 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 93 android_icon_id = ResourceMapper::MapFromChromiumId( | 93 android_icon_id = ResourceMapper::MapFromChromiumId( |
| 94 controller_->layout_model().GetIconResourceID(suggestion.icon)); | 94 controller_->layout_model().GetIconResourceID(suggestion.icon)); |
| 95 } | 95 } |
| 96 | 96 |
| 97 bool deletable = | 97 bool deletable = |
| 98 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); | 98 controller_->GetRemovalConfirmationText(i, nullptr, nullptr); |
| 99 bool is_label_multiline = | 99 bool is_label_multiline = |
| 100 suggestion.frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE || | 100 suggestion.frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE || |
| 101 suggestion.frontend_id == POPUP_ITEM_ID_CREDIT_CARD_SIGNIN_PROMO; | 101 suggestion.frontend_id == POPUP_ITEM_ID_CREDIT_CARD_SIGNIN_PROMO; |
| 102 Java_AutofillPopupBridge_addToAutofillSuggestionArray( | 102 Java_AutofillPopupBridge_addToAutofillSuggestionArray( |
| 103 env, data_array.obj(), i, value.obj(), label.obj(), android_icon_id, | 103 env, data_array, i, value, label, android_icon_id, |
| 104 suggestion.frontend_id, deletable, is_label_multiline); | 104 suggestion.frontend_id, deletable, is_label_multiline); |
| 105 } | 105 } |
| 106 | 106 |
| 107 Java_AutofillPopupBridge_show( | 107 Java_AutofillPopupBridge_show(env, java_object_, data_array, |
| 108 env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); | 108 controller_->IsRTL()); |
| 109 } | 109 } |
| 110 | 110 |
| 111 void AutofillPopupViewAndroid::SuggestionSelected( | 111 void AutofillPopupViewAndroid::SuggestionSelected( |
| 112 JNIEnv* env, | 112 JNIEnv* env, |
| 113 const JavaParamRef<jobject>& obj, | 113 const JavaParamRef<jobject>& obj, |
| 114 jint list_index) { | 114 jint list_index) { |
| 115 // Race: Hide() may have already run. | 115 // Race: Hide() may have already run. |
| 116 if (controller_) | 116 if (controller_) |
| 117 controller_->AcceptSuggestion(list_index); | 117 controller_->AcceptSuggestion(list_index); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void AutofillPopupViewAndroid::DeletionRequested( | 120 void AutofillPopupViewAndroid::DeletionRequested( |
| 121 JNIEnv* env, | 121 JNIEnv* env, |
| 122 const JavaParamRef<jobject>& obj, | 122 const JavaParamRef<jobject>& obj, |
| 123 jint list_index) { | 123 jint list_index) { |
| 124 if (!controller_ || java_object_.is_null()) | 124 if (!controller_ || java_object_.is_null()) |
| 125 return; | 125 return; |
| 126 | 126 |
| 127 base::string16 confirmation_title, confirmation_body; | 127 base::string16 confirmation_title, confirmation_body; |
| 128 if (!controller_->GetRemovalConfirmationText(list_index, &confirmation_title, | 128 if (!controller_->GetRemovalConfirmationText(list_index, &confirmation_title, |
| 129 &confirmation_body)) { | 129 &confirmation_body)) { |
| 130 return; | 130 return; |
| 131 } | 131 } |
| 132 | 132 |
| 133 deleting_index_ = list_index; | 133 deleting_index_ = list_index; |
| 134 Java_AutofillPopupBridge_confirmDeletion( | 134 Java_AutofillPopupBridge_confirmDeletion( |
| 135 env, | 135 env, java_object_, |
| 136 java_object_.obj(), | 136 base::android::ConvertUTF16ToJavaString(env, confirmation_title), |
| 137 base::android::ConvertUTF16ToJavaString( | 137 base::android::ConvertUTF16ToJavaString(env, confirmation_body)); |
| 138 env, confirmation_title).obj(), | |
| 139 base::android::ConvertUTF16ToJavaString( | |
| 140 env, confirmation_body).obj()); | |
| 141 } | 138 } |
| 142 | 139 |
| 143 void AutofillPopupViewAndroid::DeletionConfirmed( | 140 void AutofillPopupViewAndroid::DeletionConfirmed( |
| 144 JNIEnv* env, | 141 JNIEnv* env, |
| 145 const JavaParamRef<jobject>& obj) { | 142 const JavaParamRef<jobject>& obj) { |
| 146 if (!controller_) | 143 if (!controller_) |
| 147 return; | 144 return; |
| 148 | 145 |
| 149 CHECK_GE(deleting_index_, 0); | 146 CHECK_GE(deleting_index_, 0); |
| 150 controller_->RemoveSuggestion(deleting_index_); | 147 controller_->RemoveSuggestion(deleting_index_); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 169 // static | 166 // static |
| 170 AutofillPopupView* AutofillPopupView::Create( | 167 AutofillPopupView* AutofillPopupView::Create( |
| 171 AutofillPopupController* controller) { | 168 AutofillPopupController* controller) { |
| 172 if (IsKeyboardAccessoryEnabled()) | 169 if (IsKeyboardAccessoryEnabled()) |
| 173 return new AutofillKeyboardAccessoryView(controller); | 170 return new AutofillKeyboardAccessoryView(controller); |
| 174 | 171 |
| 175 return new AutofillPopupViewAndroid(controller); | 172 return new AutofillPopupViewAndroid(controller); |
| 176 } | 173 } |
| 177 | 174 |
| 178 } // namespace autofill | 175 } // namespace autofill |
| OLD | NEW |