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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java

Issue 2093363002: Autofill address editor in PaymentRequest UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@contact-editor
Patch Set: Fix try-bot Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java
index 7a68d2e54a178111949d16f7dd81dc970f16bda6..cad157ccee467e88198d609e90f5ef5c84100e58 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/EditorFieldModel.java
@@ -5,6 +5,10 @@
package org.chromium.chrome.browser.payments.ui;
import android.text.TextUtils;
+import android.util.Pair;
+
+import org.chromium.base.Callback;
+import org.chromium.chrome.browser.preferences.autofill.AutofillProfileBridge.DropdownKeyValue;
import java.util.List;
@@ -34,17 +38,66 @@ public class EditorFieldModel {
/** Indicates an email field. */
public static final int INPUT_TYPE_HINT_EMAIL = 2;
+ /** Indicates a multi-line address field that may include numbers. */
+ public static final int INPUT_TYPE_HINT_STREET_LINES = 3;
+
+ /** Indicates a person's name. */
+ public static final int INPUT_TYPE_HINT_PERSON_NAME = 4;
+
+ /** Indicates a region or an administrative area, e.g., a state or a province. */
+ public static final int INPUT_TYPE_HINT_REGION = 5;
+
+ /** Indicates an alpha-numeric value, e.g., postal code or sorting code. */
+ public static final int INPUT_TYPE_HINT_ALPHA_NUMERIC = 6;
+
+ /** Indicates a dropdown. */
+ public static final int INPUT_TYPE_HINT_DROPDOWN = 7;
+
private final int mInputTypeHint;
- private final CharSequence mLabel;
+ @Nullable private final List<DropdownKeyValue> mDropdownKeyValues;
@Nullable private final List<CharSequence> mSuggestions;
@Nullable private final EditorFieldValidator mValidator;
- @Nullable private final CharSequence mRequiredErrorMessage;
@Nullable private final CharSequence mInvalidErrorMessage;
+ @Nullable private CharSequence mLabel;
+ @Nullable private CharSequence mRequiredErrorMessage;
@Nullable private CharSequence mErrorMessage;
@Nullable private CharSequence mValue;
+ @Nullable private Callback<Pair<String, Runnable>> mDropdownCallback;
+ private boolean mIsFullLine = true;
+
+ /**
+ * Constructs a dropdown field model.
+ *
+ * @param label The human-readable label for user to understand the type of data
+ * that should be entered into this field.
+ * @param dropdownKeyValues The keyed values to display in the dropdown.
+ */
+ public EditorFieldModel(CharSequence label, List<DropdownKeyValue> dropdownKeyValues) {
+ mInputTypeHint = INPUT_TYPE_HINT_DROPDOWN;
+ mDropdownKeyValues = dropdownKeyValues;
+ mSuggestions = null;
+ mValidator = null;
+ mInvalidErrorMessage = null;
+ mLabel = label;
+ }
/**
- * Constructs a field model.
+ * Constructs a text input field model.
+ *
+ * @param inputTypeHint The type of input. For example, INPUT_TYPE_HINT_PHONE.
+ */
+ public EditorFieldModel(int inputTypeHint) {
+ assert inputTypeHint != INPUT_TYPE_HINT_DROPDOWN;
+ mInputTypeHint = inputTypeHint;
+ mDropdownKeyValues = null;
+ mSuggestions = null;
+ mValidator = null;
+ mInvalidErrorMessage = null;
+ mLabel = null;
+ }
+
+ /**
+ * Constructs a text input field model.
*
* @param inputTypeHint The type of input. For example, INPUT_TYPE_HINT_PHONE.
* @param label The human-readable label for user to understand the type of data
@@ -61,12 +114,14 @@ public class EditorFieldModel {
@Nullable List<CharSequence> suggestions, @Nullable EditorFieldValidator validator,
@Nullable CharSequence requiredErrorMessage, @Nullable CharSequence invalidErrorMessage,
@Nullable CharSequence value) {
+ assert inputTypeHint != INPUT_TYPE_HINT_DROPDOWN;
mInputTypeHint = inputTypeHint;
- mLabel = label;
+ mDropdownKeyValues = null;
mSuggestions = suggestions;
mValidator = validator;
- mRequiredErrorMessage = requiredErrorMessage;
mInvalidErrorMessage = invalidErrorMessage;
+ mLabel = label;
+ mRequiredErrorMessage = requiredErrorMessage;
mValue = value;
}
@@ -75,11 +130,26 @@ public class EditorFieldModel {
return mInputTypeHint;
}
+ /** @return The spinner key values. */
+ public List<DropdownKeyValue> getDropdownKeyValues() {
+ assert mInputTypeHint == INPUT_TYPE_HINT_DROPDOWN;
+ return mDropdownKeyValues;
+ }
+
/** @return The human-readable label for this field. */
public CharSequence getLabel() {
return mLabel;
}
+ /**
+ * Updates the label.
+ *
+ * @param label The new label to use.
+ */
+ public void setLabel(CharSequence label) {
+ mLabel = label;
+ }
+
/** @return Suggested values for this field. Can be null. */
@Nullable public List<CharSequence> getSuggestions() {
return mSuggestions;
@@ -90,27 +160,53 @@ public class EditorFieldModel {
return mErrorMessage;
}
- /** @return The value that the user has entered into the field. Can be null. */
+ /** @return The value that the user has typed into the field or the key of the value that the
+ * user has selected in the dropdown. Can be null. */
@Nullable public CharSequence getValue() {
return mValue;
}
/**
* Updates the value of this field. Does not trigger validation or update the last error
- * message.
+ * message. Should be called only for text fields.
*
- * @param value The new value that the user has entered.
+ * @param value The new value that the user has typed in.
*/
public void setValue(@Nullable CharSequence value) {
+ assert mInputTypeHint != INPUT_TYPE_HINT_DROPDOWN;
mValue = value;
}
+ /**
+ * Updates the dropdown selection.
+ *
+ * @param key The new dropdown key.
+ * @param callback The callback to invoke when the change has been processed.
+ */
+ public void setDropdownKey(String key, Runnable callback) {
+ assert mInputTypeHint == INPUT_TYPE_HINT_DROPDOWN;
+ mValue = key;
+ if (mDropdownCallback != null) {
+ mDropdownCallback.onResult(new Pair<String, Runnable>(key, callback));
+ }
+ }
+
/** @return Whether or not the field is required. */
public boolean isRequired() {
return !TextUtils.isEmpty(mRequiredErrorMessage);
}
/**
+ * Updates the required error message.
+ *
+ * @param message The error message to use if this field is required, but empty. If null, then
+ * this field is optional.
+ */
+ public void setRequiredErrorMessage(@Nullable CharSequence message) {
+ mRequiredErrorMessage = message;
+ }
+
+ /**
* Returns true if the field value is valid. Also updates the error message.
*
* @return Whether the field value is valid.
@@ -130,4 +226,32 @@ public class EditorFieldModel {
mErrorMessage = null;
return true;
}
+
+ /**
+ * Sets the dropdown callback.
+ *
+ * @param callback The callback to invoke when the dropdown selection has changed. The first
+ * element in the callback pair is the dropdown key. The second element is the
+ * callback to invoke after the dropdown change has been processed.
+ */
+ public void setDropdownCallback(Callback<Pair<String, Runnable>> callback) {
+ assert mInputTypeHint == INPUT_TYPE_HINT_DROPDOWN;
+ mDropdownCallback = callback;
+ }
+
+ /** @return True if the input field should take up the full line, instead of sharing with other
+ * input fields. This is the default.*/
+ public boolean isFullLine() {
+ return mIsFullLine;
+ }
+
+ /**
+ * Sets whether this input field should take up the full line. All fields take up the full line
+ * by default.
+ *
+ * @param isFullLine Whether the input field should take up the full line.
+ */
+ public void setIsFullLine(boolean isFullLine) {
+ mIsFullLine = isFullLine;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698