Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc

Issue 1281323003: Remove items on long press in keyboard accessory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixups Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/window_android_helper.h" 10 #include "chrome/browser/ui/android/window_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 "components/autofill/core/browser/suggestion.h" 12 #include "components/autofill/core/browser/suggestion.h"
13 #include "grit/components_strings.h" 13 #include "grit/components_strings.h"
14 #include "jni/AutofillKeyboardAccessoryBridge_jni.h" 14 #include "jni/AutofillKeyboardAccessoryBridge_jni.h"
15 #include "ui/android/view_android.h" 15 #include "ui/android/view_android.h"
16 #include "ui/android/window_android.h" 16 #include "ui/android/window_android.h"
17 #include "ui/base/l10n/l10n_util.h" 17 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 18 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/geometry/rect.h" 19 #include "ui/gfx/geometry/rect.h"
20 20
21 namespace autofill { 21 namespace autofill {
22 22
23 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView( 23 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView(
24 AutofillPopupController* controller) 24 AutofillPopupController* controller)
25 : controller_(controller) { 25 : controller_(controller),
26 deleting_index_(-1) {
26 JNIEnv* env = base::android::AttachCurrentThread(); 27 JNIEnv* env = base::android::AttachCurrentThread();
27 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env)); 28 java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(env));
28 } 29 }
29 30
30 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { 31 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() {
31 JNIEnv* env = base::android::AttachCurrentThread(); 32 JNIEnv* env = base::android::AttachCurrentThread();
32 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer( 33 Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer(
33 env, java_object_.obj()); 34 env, java_object_.obj());
34 } 35 }
35 36
(...skipping 23 matching lines...) Expand all
59 count); 60 count);
60 61
61 for (size_t i = 0; i < count; ++i) { 62 for (size_t i = 0; i < count; ++i) {
62 const autofill::Suggestion& suggestion = controller_->GetSuggestionAt(i); 63 const autofill::Suggestion& suggestion = controller_->GetSuggestionAt(i);
63 int android_icon_id = 0; 64 int android_icon_id = 0;
64 if (!suggestion.icon.empty()) { 65 if (!suggestion.icon.empty()) {
65 android_icon_id = ResourceMapper::MapFromChromiumId( 66 android_icon_id = ResourceMapper::MapFromChromiumId(
66 controller_->GetIconResourceID(suggestion.icon)); 67 controller_->GetIconResourceID(suggestion.icon));
67 } 68 }
68 69
70 bool deletable =
71 controller_->GetRemovalConfirmationText(i, nullptr, nullptr);
69 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( 72 Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray(
70 env, data_array.obj(), i, 73 env, data_array.obj(), i,
71 base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(), 74 base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(),
72 base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(), 75 base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(),
73 android_icon_id, suggestion.frontend_id); 76 android_icon_id, suggestion.frontend_id, deletable);
74 } 77 }
75 78
76 Java_AutofillKeyboardAccessoryBridge_show( 79 Java_AutofillKeyboardAccessoryBridge_show(
77 env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); 80 env, java_object_.obj(), data_array.obj(), controller_->IsRTL());
78 } 81 }
79 82
80 void AutofillKeyboardAccessoryView::SuggestionSelected(JNIEnv* env, 83 void AutofillKeyboardAccessoryView::SuggestionSelected(JNIEnv* env,
81 jobject obj, 84 jobject obj,
82 jint list_index) { 85 jint list_index) {
83 // Race: Hide() may have already run. 86 // Race: Hide() may have already run.
84 if (controller_) 87 if (controller_)
85 controller_->AcceptSuggestion(list_index); 88 controller_->AcceptSuggestion(list_index);
86 } 89 }
87 90
91 void AutofillKeyboardAccessoryView::DeletionRequested(JNIEnv* env,
92 jobject obj,
93 jint list_index) {
94 if (!controller_)
95 return;
96
97 base::string16 confirmation_title, confirmation_body;
98 if (!controller_->GetRemovalConfirmationText(list_index, &confirmation_title,
99 &confirmation_body)) {
100 return;
101 }
102
103 deleting_index_ = list_index;
Yaron 2015/08/14 18:13:42 i would much prefer it the way newt@ suggested of
please use gerrit instead 2015/08/14 20:23:31 Done.
104 Java_AutofillKeyboardAccessoryBridge_confirmDeletion(
105 env, java_object_.obj(),
106 base::android::ConvertUTF16ToJavaString(env, confirmation_title).obj(),
107 base::android::ConvertUTF16ToJavaString(env, confirmation_body).obj());
108 }
109
110 void AutofillKeyboardAccessoryView::DeletionConfirmed(JNIEnv* env,
111 jobject obj) {
112 if (!controller_)
113 return;
114
115 CHECK_GE(deleting_index_, 0);
116 controller_->RemoveSuggestion(deleting_index_);
117 }
118
88 void AutofillKeyboardAccessoryView::ViewDismissed(JNIEnv* env, jobject obj) { 119 void AutofillKeyboardAccessoryView::ViewDismissed(JNIEnv* env, jobject obj) {
89 if (controller_) 120 if (controller_)
90 controller_->ViewDestroyed(); 121 controller_->ViewDestroyed();
91 122
92 delete this; 123 delete this;
93 } 124 }
94 125
95 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) { 126 void AutofillKeyboardAccessoryView::InvalidateRow(size_t) {
96 } 127 }
97 128
98 // static 129 // static
99 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView( 130 bool AutofillKeyboardAccessoryView::RegisterAutofillKeyboardAccessoryView(
100 JNIEnv* env) { 131 JNIEnv* env) {
101 return RegisterNativesImpl(env); 132 return RegisterNativesImpl(env);
102 } 133 }
103 134
104 } // namespace autofill 135 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698