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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.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/PaymentRequestUI.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java
index 5f483cd6fb4d7318dcda4a8452e0ec4ad58f9018..c16c2cf098e990f2a4bc5d453db44078d71cbfa8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java
@@ -97,10 +97,14 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
@DataType int optionType, Callback<SectionInformation> callback);
/**
- * Called when the user changes one of their payment options. This method returns true if
- * this section should be disabled and show a spinner while it's being checked. If this
- * method returns true, then the checkedCallback will be invoked with the results of the
- * check and updated information.
+ * Called when the user changes one of their payment options.
+ *
+ * If this method returns true, then:
+ * + The added option should be asynchronously verified.
+ * + The section should be disabled and a progress spinny should be shown while the option
+ * is being verified.
+ * + The checkedCallback will be invoked with the results of the check and updated
+ * information.
*
* For example, if the website needs a shipping address to calculate shipping options, then
* calling onSectionOptionSelected(TYPE_SHIPPING_ADDRESS, option, checkedCallback) will
@@ -117,8 +121,20 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
/**
* Called when the user clicks on the "Add" button for a section.
+ *
+ * If this method returns true, then:
+ * + The added option should be asynchronously verified.
+ * + The section should be disabled and a progress spinny should be shown while the option
+ * is being verified.
+ * + The checkedCallback will be invoked with the results of the check and updated
+ * information.
+ *
+ * @param optionType Data being updated.
+ * @param checkedCallback The callback after an asynchronous check has completed.
+ * @return True if the option needs to be asynchronously checked.
*/
- void onSectionAddOption(@DataType int optionType);
+ boolean onSectionAddOption(
+ @DataType int optionType, Callback<PaymentInformation> checkedCallback);
/**
* Called when the user clicks on the “Pay” button. At this point, the UI is disabled and is
@@ -209,6 +225,7 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
private final ViewGroup mFullContainer;
private final ViewGroup mRequestView;
private final PaymentRequestUiErrorView mErrorView;
+ private final Callback<PaymentInformation> mUpdateSectionsCallback;
private ScrollView mPaymentContainer;
private LinearLayout mPaymentContainerLayout;
@@ -272,6 +289,30 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
R.layout.payment_request_error, null);
mErrorView.initialize(title, origin);
+ // This callback will be fired if mIsClientCheckingSelection is true.
+ mUpdateSectionsCallback = new Callback<PaymentInformation>() {
+ @Override
+ public void onResult(PaymentInformation result) {
+ mIsClientCheckingSelection = false;
+ updateOrderSummarySection(result.getShoppingCart());
+ if (mRequestShipping) {
+ updateSection(TYPE_SHIPPING_ADDRESSES, result.getShippingAddresses());
+ updateSection(TYPE_SHIPPING_OPTIONS, result.getShippingOptions());
+ }
+ if (mRequestContactDetails) {
+ updateSection(TYPE_CONTACT_DETAILS, result.getContactDetails());
+ }
+ updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods());
+ if (mShippingAddressSectionInformation.getSelectedItem() == null) {
+ mShippingAddressSection.setDisplayMode(
+ PaymentRequestSection.DISPLAY_MODE_FOCUSED);
+ } else {
+ expand(null);
+ }
+ updatePayButtonEnabled();
+ }
+ };
+
mRequestView =
(ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.payment_request, null);
prepareRequestView(activity, title, origin);
@@ -531,29 +572,7 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
&& mShippingAddressSectionInformation.getSelectedItem() != option) {
mShippingAddressSectionInformation.setSelectedItem(option);
mIsClientCheckingSelection = mClient.onSectionOptionSelected(
- TYPE_SHIPPING_ADDRESSES, option, new Callback<PaymentInformation>() {
- // The callback will be fired only if mIsClientCheckingSelection is true.
- @Override
- public void onResult(PaymentInformation result) {
- mIsClientCheckingSelection = false;
- updateOrderSummarySection(result.getShoppingCart());
- if (mRequestShipping) {
- updateSection(TYPE_SHIPPING_ADDRESSES,
- result.getShippingAddresses());
- updateSection(TYPE_SHIPPING_OPTIONS, result.getShippingOptions());
- }
- if (mRequestContactDetails) {
- updateSection(TYPE_CONTACT_DETAILS, result.getContactDetails());
- }
- updateSection(TYPE_PAYMENT_METHODS, result.getPaymentMethods());
- if (mShippingAddressSectionInformation.getSelectedItem() == null) {
- section.setDisplayMode(PaymentRequestSection.DISPLAY_MODE_FOCUSED);
- } else {
- expand(null);
- }
- updatePayButtonEnabled();
- }
- });
+ TYPE_SHIPPING_ADDRESSES, option, mUpdateSectionsCallback);
} else if (section == mShippingOptionSection) {
mShippingOptionsSectionInformation.setSelectedItem(option);
mClient.onSectionOptionSelected(TYPE_SHIPPING_OPTIONS, option, null);
@@ -579,12 +598,20 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
assert section != mShippingOptionSection;
if (section == mShippingAddressSection) {
- mClient.onSectionAddOption(TYPE_SHIPPING_ADDRESSES);
+ mIsClientCheckingSelection =
+ mClient.onSectionAddOption(TYPE_SHIPPING_ADDRESSES, mUpdateSectionsCallback);
} else if (section == mContactDetailsSection) {
- mClient.onSectionAddOption(TYPE_CONTACT_DETAILS);
+ mClient.onSectionAddOption(TYPE_CONTACT_DETAILS, null);
} else if (section == mPaymentMethodSection) {
- mClient.onSectionAddOption(TYPE_PAYMENT_METHODS);
+ mClient.onSectionAddOption(TYPE_PAYMENT_METHODS, null);
}
+
+ if (mIsClientCheckingSelection) {
+ startSectionResizeAnimation();
+ section.setDisplayMode(PaymentRequestSection.DISPLAY_MODE_CHECKING);
+ }
+
+ updatePayButtonEnabled();
}
/** @return The editor user interface. */
@@ -1017,6 +1044,11 @@ public class PaymentRequestUI implements DialogInterface.OnDismissListener, View
}
@VisibleForTesting
+ public ViewGroup getShippingSummarySectionForTest() {
+ return mShippingSummarySection;
+ }
+
+ @VisibleForTesting
public ViewGroup getShippingAddressSectionForTest() {
return mShippingAddressSection;
}

Powered by Google App Engine
This is Rietveld 408576698