Index: chrome/android/java/src/org/chromium/chrome/browser/payments/ContactEditor.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ContactEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ContactEditor.java |
index bade26fc6d6b632a2d9da00cf70c9e8ae21ca15c..0fac706861d2a1d9b9edd460691477427df7dc20 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ContactEditor.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ContactEditor.java |
@@ -5,6 +5,7 @@ |
package org.chromium.chrome.browser.payments; |
import android.telephony.PhoneNumberUtils; |
+import android.text.TextUtils; |
import android.util.Patterns; |
import org.chromium.base.Callback; |
@@ -24,8 +25,10 @@ import javax.annotation.Nullable; |
* Contact information editor. |
*/ |
public class ContactEditor extends EditorBase<AutofillContact> { |
+ private final boolean mRequestPayerName; |
private final boolean mRequestPayerPhone; |
private final boolean mRequestPayerEmail; |
+ private final Set<CharSequence> mPayerNames; |
private final Set<CharSequence> mPhoneNumbers; |
private final Set<CharSequence> mEmailAddresses; |
@Nullable private EditorFieldValidator mPhoneValidator; |
@@ -34,13 +37,17 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
/** |
* Builds a contact information editor. |
* |
+ * @param requestPayerName Whether to request the user's name. |
* @param requestPayerPhone Whether to request the user's phone number. |
* @param requestPayerEmail Whether to request the user's email address. |
*/ |
- public ContactEditor(boolean requestPayerPhone, boolean requestPayerEmail) { |
- assert requestPayerPhone || requestPayerEmail; |
+ public ContactEditor(boolean requestPayerName, |
+ boolean requestPayerPhone, boolean requestPayerEmail) { |
+ assert requestPayerName || requestPayerPhone || requestPayerEmail; |
+ mRequestPayerName = requestPayerName; |
mRequestPayerPhone = requestPayerPhone; |
mRequestPayerEmail = requestPayerEmail; |
+ mPayerNames = new HashSet<>(); |
mPhoneNumbers = new HashSet<>(); |
mEmailAddresses = new HashSet<>(); |
} |
@@ -49,16 +56,28 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
* Returns whether the following contact information can be sent to the merchant as-is without |
* editing first. |
* |
+ * @param name The payer name to check. |
* @param phone The phone number to check. |
* @param email The email address to check. |
* @return Whether the contact information is complete. |
*/ |
- public boolean isContactInformationComplete(@Nullable String phone, @Nullable String email) { |
- return (!mRequestPayerPhone || getPhoneValidator().isValid(phone)) |
+ public boolean isContactInformationComplete( |
+ @Nullable String name, @Nullable String phone, @Nullable String email) { |
+ return (!mRequestPayerName || !TextUtils.isEmpty(name)) |
+ && (!mRequestPayerPhone || getPhoneValidator().isValid(phone)) |
&& (!mRequestPayerEmail || getEmailValidator().isValid(email)); |
} |
/** |
+ * Adds the given payer name to the autocomplete set, if it's valid. |
+ * |
+ * @param payerName The payer name to possibly add. |
+ */ |
+ public void addPayerNameIfValid(@Nullable CharSequence payerName) { |
+ if (!TextUtils.isEmpty(payerName)) mPayerNames.add(payerName); |
+ } |
+ |
+ /** |
* Adds the given phone number to the autocomplete set, if it's valid. |
* |
* @param phoneNumber The phone number to possibly add. |
@@ -81,7 +100,15 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
super.edit(toEdit, callback); |
final AutofillContact contact = toEdit == null |
- ? new AutofillContact(new AutofillProfile(), null, null, false) : toEdit; |
+ ? new AutofillContact(new AutofillProfile(), null, null, null, false) : toEdit; |
+ |
+ final EditorFieldModel nameField = mRequestPayerName |
+ ? EditorFieldModel.createTextInput(EditorFieldModel.INPUT_TYPE_HINT_PERSON_NAME, |
+ mContext.getString(R.string.payments_name_field_in_contact_details), |
+ mPayerNames, null, |
+ mContext.getString(R.string.payments_field_required_validation_message), |
+ null, contact.getPayerName()) |
+ : null; |
final EditorFieldModel phoneField = mRequestPayerPhone |
? EditorFieldModel.createTextInput(EditorFieldModel.INPUT_TYPE_HINT_PHONE, |
@@ -104,6 +131,7 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
EditorModel editor = new EditorModel( |
mContext.getString(toEdit == null ? R.string.payments_add_contact_details_label |
: R.string.payments_edit_contact_details_label)); |
+ if (nameField != null) editor.addField(nameField); |
if (phoneField != null) editor.addField(phoneField); |
if (emailField != null) editor.addField(emailField); |
@@ -117,9 +145,15 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
editor.setDoneCallback(new Runnable() { |
@Override |
public void run() { |
+ String name = null; |
String phone = null; |
String email = null; |
+ if (nameField != null) { |
+ name = nameField.getValue().toString(); |
+ contact.getProfile().setFullName(name); |
+ } |
+ |
if (phoneField != null) { |
phone = phoneField.getValue().toString(); |
contact.getProfile().setPhoneNumber(phone); |
@@ -131,7 +165,7 @@ public class ContactEditor extends EditorBase<AutofillContact> { |
} |
String guid = PersonalDataManager.getInstance().setProfile(contact.getProfile()); |
- contact.completeContact(guid, phone, email); |
+ contact.completeContact(guid, name, phone, email); |
callback.onResult(contact); |
} |
}); |