| Index: chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
|
| index 8f050bfe2ae427b1de2c2dd77aaf1c11a37d72bf..6b9333c8db9e54428e5d5e417c86312852d87707 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java
|
| @@ -207,6 +207,7 @@ public class PaymentRequestImpl
|
|
|
| private final Handler mHandler = new Handler();
|
| private final ChromeActivity mContext;
|
| + private final WebContents mWebContents;
|
| private final String mMerchantName;
|
| private final String mOrigin;
|
| private final AddressEditor mAddressEditor;
|
| @@ -251,7 +252,6 @@ public class PaymentRequestImpl
|
| private SectionInformation mShippingAddressesSection;
|
| private SectionInformation mContactSection;
|
| private List<PaymentApp> mApps;
|
| - private boolean mAllAppsCreated;
|
| private List<PaymentApp> mPendingApps;
|
| private List<PaymentInstrument> mPendingInstruments;
|
| private List<PaymentInstrument> mPendingAutofillInstruments;
|
| @@ -280,8 +280,8 @@ public class PaymentRequestImpl
|
| /**
|
| * Builds the PaymentRequest service implementation.
|
| *
|
| - * @param context The context where PaymentRequest has been invoked.
|
| - * @param webContents The web contents that have invoked the PaymentRequest API.
|
| + * @param context The context where PaymentRequest has been invoked.
|
| + * @param webContents The web contents that have invoked the PaymentRequest API.
|
| */
|
| public PaymentRequestImpl(Activity context, WebContents webContents) {
|
| assert context != null;
|
| @@ -289,6 +289,7 @@ public class PaymentRequestImpl
|
|
|
| assert context instanceof ChromeActivity;
|
| mContext = (ChromeActivity) context;
|
| + mWebContents = webContents;
|
|
|
| mMerchantName = webContents.getTitle();
|
| // The feature is available only in secure context, so it's OK to not show HTTPS.
|
| @@ -313,7 +314,6 @@ public class PaymentRequestImpl
|
| });
|
|
|
| mApps = new ArrayList<>();
|
| - PaymentAppFactory.getInstance().create(mContext, webContents, this);
|
|
|
| mAddressEditor = new AddressEditor();
|
| mCardEditor = new CardEditor(webContents, mAddressEditor, sObserverForTest);
|
| @@ -349,7 +349,8 @@ public class PaymentRequestImpl
|
|
|
| if (!parseAndValidateDetailsOrDisconnectFromClient(details)) return;
|
|
|
| - getMatchingPaymentInstruments();
|
| + PaymentAppFactory.getInstance().create(
|
| + mContext, mWebContents, Collections.unmodifiableSet(mMethodData.keySet()), this);
|
|
|
| boolean requestShipping = options != null && options.requestShipping;
|
| boolean requestPayerName = options != null && options.requestPayerName;
|
| @@ -552,13 +553,10 @@ public class PaymentRequestImpl
|
|
|
| @Override
|
| public void onAllPaymentAppsCreated() {
|
| - mAllAppsCreated = true;
|
| - getMatchingPaymentInstruments();
|
| - }
|
| + if (mClient == null) return;
|
| +
|
| + assert mPendingApps == null;
|
|
|
| - /** Queries the installed payment apps for their instruments that merchant supports. */
|
| - private void getMatchingPaymentInstruments() {
|
| - if (!mAllAppsCreated || mClient == null || mPendingApps != null) return;
|
| mPendingApps = new ArrayList<>(mApps);
|
| mPendingInstruments = new ArrayList<>();
|
| mPendingAutofillInstruments = new ArrayList<>();
|
|
|