Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryBridge.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryBridge.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..452feed3f0fda6eb7df1f5a61182e8ac54cd3701 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryBridge.java |
| @@ -0,0 +1,116 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.autofill; |
| + |
| +import org.chromium.base.CalledByNative; |
| +import org.chromium.base.JNINamespace; |
| +import org.chromium.chrome.browser.ResourceId; |
| +import org.chromium.ui.DropdownItem; |
| +import org.chromium.ui.autofill.AutofillKeyboardAccessory; |
| +import org.chromium.ui.autofill.AutofillKeyboardAccessory.AutofillKeyboardAccessoryDelegate; |
| +import org.chromium.ui.autofill.AutofillSuggestion; |
| +import org.chromium.ui.base.WindowAndroid; |
| + |
| +/** |
| +* JNI call glue for AutofillExternalDelagate C++ and Java objects. |
| +* This provides an alternative UI for Autofill suggestions, and replaces AutofillPopupBridge when |
| +* --enable-autofill-keyboard-accessory-view is passed on the command line. |
| +*/ |
| +@JNINamespace("autofill") |
| +public class AutofillKeyboardAccessoryBridge implements AutofillKeyboardAccessoryDelegate { |
| + private long mNativeAutofillKeyboardAccessory; |
| + private AutofillKeyboardAccessory mAccessoryView; |
| + |
| + public AutofillKeyboardAccessoryBridge() { |
|
newt (away)
2015/04/24 17:45:11
It appears this should be private.
Evan Stade
2015/04/24 21:19:18
Done.
|
| + } |
| + |
| + @CalledByNative |
| + private static AutofillKeyboardAccessoryBridge create() { |
| + return new AutofillKeyboardAccessoryBridge(); |
| + } |
| + |
| + @Override |
| + public void dismissed() { |
| + if (mNativeAutofillKeyboardAccessory == 0) return; |
| + nativeViewDismissed(mNativeAutofillKeyboardAccessory); |
| + } |
| + |
| + @Override |
| + public void suggestionSelected(int listIndex) { |
| + if (mNativeAutofillKeyboardAccessory == 0) return; |
| + nativeSuggestionSelected(mNativeAutofillKeyboardAccessory, listIndex); |
| + } |
| + |
| + /** |
| + * Initializes this object. |
| + * This function should be called at most one time. |
| + * @param nativeAutofillKeyboardAccessory Handle to the native counterpart. |
| + * @param windowAndroid The window on which to show the suggestions. |
| + */ |
| + @CalledByNative |
| + public void init(long nativeAutofillKeyboardAccessory, WindowAndroid windowAndroid) { |
|
newt (away)
2015/04/24 17:45:12
can this be private?
Evan Stade
2015/04/24 21:19:18
Done.
|
| + if (windowAndroid == null || windowAndroid.getActivity().get() == null) { |
| + nativeViewDismissed(nativeAutofillKeyboardAccessory); |
| + dismissed(); |
| + return; |
| + } |
| + |
| + mNativeAutofillKeyboardAccessory = nativeAutofillKeyboardAccessory; |
| + mAccessoryView = new AutofillKeyboardAccessory(windowAndroid, this); |
| + } |
| + |
| + /** |
| + * Clears the reference to the native view. |
| + */ |
| + @CalledByNative |
| + private void nativeViewDestroyed() { |
|
Evan Stade
2015/04/24 21:19:18
also changed the name of this because native* is u
|
| + mNativeAutofillKeyboardAccessory = 0; |
| + } |
| + |
| + /** |
| + * Hides the Autofill view. |
| + */ |
| + @CalledByNative |
| + private void dismiss() { |
| + if (mAccessoryView != null) mAccessoryView.dismiss(); |
| + } |
| + |
| + /** |
| + * Shows an Autofill view with specified suggestions. |
| + * @param suggestions Autofill suggestions to be displayed. |
| + */ |
| + @CalledByNative |
| + private void show(AutofillSuggestion[] suggestions, boolean isRtl) { |
| + if (mAccessoryView != null) mAccessoryView.filterAndShow(suggestions, isRtl); |
| + } |
| + |
| + // Helper methods for AutofillSuggestion. These are copied from AutofillPopupBridge (which |
| + // should |
| + // eventually disappear). |
| + |
| + @CalledByNative |
| + private static AutofillSuggestion[] createAutofillSuggestionArray(int size) { |
| + return new AutofillSuggestion[size]; |
| + } |
| + |
| + /** |
| + * @param array AutofillSuggestion array that should get a new suggestion added. |
| + * @param index Index in the array where to place a new suggestion. |
| + * @param label First line of the suggestion. |
| + * @param sublabel Second line of the suggestion. |
| + * @param iconId The resource ID for the icon associated with the suggestion, or 0 for no icon. |
| + * @param suggestionId Identifier for the suggestion type. |
| + */ |
| + @CalledByNative |
| + private static void addToAutofillSuggestionArray(AutofillSuggestion[] array, int index, |
| + String label, String sublabel, int iconId, int suggestionId) { |
| + int drawableId = iconId == 0 ? DropdownItem.NO_ICON : ResourceId.mapToDrawableId(iconId); |
| + array[index] = new AutofillSuggestion(label, sublabel, drawableId, suggestionId); |
| + } |
| + |
| + private native void nativeViewDismissed(long nativeAutofillKeyboardAccessoryView); |
| + private native void nativeSuggestionSelected( |
| + long nativeAutofillKeyboardAccessoryView, int listIndex); |
| +} |