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 |