Index: chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillPayerInfo.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillPayerInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillPayerInfo.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a33507c667d1e0d179ddebcacc34d2e104328ff8 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AutofillPayerInfo.java |
@@ -0,0 +1,94 @@ |
+// Copyright 2016 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.payments; |
+ |
+import android.text.TextUtils; |
+ |
+import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; |
+import org.chromium.chrome.browser.payments.ui.PaymentOption; |
+ |
+import javax.annotation.Nullable; |
+ |
+/** |
+ * The locally stored payer information details. |
+ */ |
+public class AutofillPayerInfo extends PaymentOption { |
+ private final AutofillProfile mProfile; |
+ @Nullable private String mPayerName; |
+ @Nullable private String mPayerPhone; |
+ @Nullable private String mPayerEmail; |
+ |
+ /** |
+ * Builds payer information details. |
+ * |
+ * @param profile The autofill profile where this payer information data lives. |
+ * @param name The payer name. If not empty, this will be the primary label. |
+ * @param phone The phone number. If name is empty, this will be the primary label. |
+ * @param email The email address. If name and phone is empty, this will be the primary |
+ * label. |
+ * @param isComplete Whether the data in this payer information can be sent to the merchant |
+ * as-is. If false, user needs to add more information here. |
+ */ |
+ public AutofillPayerInfo(AutofillProfile profile, @Nullable String name, @Nullable String phone, |
+ @Nullable String email, boolean isComplete) { |
+ super(profile.getGUID(), null, null, PaymentOption.NO_ICON); |
+ mProfile = profile; |
+ mIsComplete = isComplete; |
+ setGuidAndPayerInfo(profile.getGUID(), name, phone, email); |
+ } |
+ |
+ /** @return Payer name. Null if the merchant did not request it or data is incomplete. */ |
+ @Nullable public String getPayerName() { |
+ return mPayerName; |
+ } |
+ |
+ /** @return Email address. Null if the merchant did not request it or data is incomplete. */ |
+ @Nullable public String getPayerEmail() { |
+ return mPayerEmail; |
+ } |
+ |
+ /** @return Phone number. Null if the merchant did not request it or data is incomplete. */ |
+ @Nullable public String getPayerPhone() { |
+ return mPayerPhone; |
+ } |
+ |
+ /** @return The autofill profile where this payer information data lives. */ |
+ public AutofillProfile getProfile() { |
+ return mProfile; |
+ } |
+ |
+ /** |
+ * Updates the profile guid, payer name, email address, and phone number and marks this |
+ * information "complete." Called after the user has edited this payer information. |
+ * Updates the identifier, label, and sublabel. |
+ * |
+ * @param guid The new identifier to use. Should not be null or empty. |
+ * @param name The new payer name to use. If not empty, this will be the primary label. |
+ * @param phone The new phone number to use. If name is empty, this will be the primary label. |
+ * @param email The new email address to use. If name and phone is empty, this will be the |
+ * primary label. |
+ */ |
+ public void completePayerInfo( |
+ String guid, @Nullable String name, @Nullable String phone, @Nullable String email) { |
+ mIsComplete = true; |
+ setGuidAndPayerInfo(guid, name, phone, email); |
+ } |
+ |
+ private void setGuidAndPayerInfo( |
+ String guid, @Nullable String name, @Nullable String phone, @Nullable String email) { |
+ mPayerName = TextUtils.isEmpty(name) ? null : name; |
+ mPayerPhone = TextUtils.isEmpty(phone) ? null : phone; |
+ mPayerEmail = TextUtils.isEmpty(email) ? null : email; |
+ |
+ if (mPayerName == null) { |
+ updateIdentifierAndLabels(guid, mPayerPhone == null ? mPayerEmail : mPayerPhone, |
+ mPayerPhone == null ? null : mPayerEmail); |
+ } else { |
+ updateIdentifierAndLabels(guid, mPayerName, |
+ mPayerPhone == null ? mPayerEmail : mPayerPhone, |
+ mPayerPhone == null ? null : mPayerEmail); |
+ } |
+ } |
+} |