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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java

Issue 2559153002: PaymentApp: Make the PaymentAppFactory asynchronous (Closed)
Patch Set: Rebase onto latest master Created 4 years 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestServiceWorkerPaymentAppTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java
index 7612cd0b4af5a29bd3cba6223448630061d8d807..0507e19a1425df13f94528b7fd64e2504966e4ba 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestTestBase.java
@@ -65,6 +65,12 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeT
/** Flag for installing a slow payment app. */
protected static final int DELAYED_RESPONSE = 1;
+ /** Flag for immediately installing a payment app. */
+ protected static final int IMMEDIATE_CREATION = 0;
+
+ /** Flag for installing a payment app with a delay. */
+ protected static final int DELAYED_CREATION = 1;
+
/** The expiration month dropdown index for December. */
protected static final int DECEMBER = 11;
@@ -122,7 +128,9 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeT
}
@Override
- public void startMainActivity() throws InterruptedException {}
+ public void startMainActivity() throws InterruptedException {
+ startMainActivityWithURL(mTestFilePath);
+ }
protected abstract void onMainActivityStarted()
throws InterruptedException, ExecutionException, TimeoutException;
@@ -146,7 +154,6 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeT
protected void openPageAndClickNodeAndWait(String nodeId, CallbackHelper helper)
throws InterruptedException, ExecutionException, TimeoutException {
- startMainActivityWithURL(mTestFilePath);
onMainActivityStarted();
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
@@ -776,7 +783,7 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeT
* @param instrumentPresence Whether the app has any payment instruments. Either NO_INSTRUMENTS
* or HAVE_INSTRUMENTS.
* @param responseSpeed How quickly the app will respond to "get instruments" query. Either
- * IMMEDIATE_RESPONSE, DELAYED_RESPONSE, or NO_RESPONSE.
+ * IMMEDIATE_RESPONSE or DELAYED_RESPONSE.
* @return The installed payment app.
*/
protected TestPay installPaymentApp(final int instrumentPresence, final int responseSpeed) {
@@ -790,18 +797,45 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeT
* @param instrumentPresence Whether the app has any payment instruments. Either NO_INSTRUMENTS
* or HAVE_INSTRUMENTS.
* @param responseSpeed How quickly the app will respond to "get instruments" query. Either
- * IMMEDIATE_RESPONSE, DELAYED_RESPONSE, or NO_RESPONSE.
+ * IMMEDIATE_RESPONSE or DELAYED_RESPONSE.
* @return The installed payment app.
*/
protected TestPay installPaymentApp(final String methodName, final int instrumentPresence,
final int responseSpeed) {
+ return installPaymentApp(methodName, instrumentPresence, responseSpeed, IMMEDIATE_CREATION);
+ }
+
+ /**
+ * Installs a payment app for testing.
+ *
+ * @param methodName The name of the payment method used in the payment app.
+ * @param instrumentPresence Whether the app has any payment instruments. Either NO_INSTRUMENTS
+ * or HAVE_INSTRUMENTS.
+ * @param responseSpeed How quickly the app will respond to "get instruments" query. Either
+ * IMMEDIATE_RESPONSE or DELAYED_RESPONSE.
+ * @param creationSpeed How quickly the app factory will create this app. Either
+ * IMMEDIATE_CREATION or DELAYED_CREATION.
+ * @return The installed payment app.
+ */
+ protected TestPay installPaymentApp(final String methodName, final int instrumentPresence,
+ final int responseSpeed, final int creationSpeed) {
final TestPay app = new TestPay(methodName, instrumentPresence, responseSpeed);
- PaymentAppFactory.setAdditionalFactory(new PaymentAppFactoryAddition() {
- @Override
- public List<PaymentApp> create(Context context, WebContents webContents) {
- List<PaymentApp> additionalApps = new ArrayList<>();
- additionalApps.add(app);
- return additionalApps;
+ PaymentAppFactory.getInstance().addAdditionalFactory(new PaymentAppFactoryAddition() {
+ @Override
+ public void create(Context context, WebContents webContents,
+ final PaymentAppFactory.PaymentAppCreatedCallback callback) {
+ if (creationSpeed == IMMEDIATE_CREATION) {
+ callback.onPaymentAppCreated(app);
+ callback.onAllPaymentAppsCreated();
+ } else {
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ callback.onPaymentAppCreated(app);
+ callback.onAllPaymentAppsCreated();
+ }
+ }, 100);
+ }
}
});
return app;
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestServiceWorkerPaymentAppTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698