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

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

Issue 2048823004: PaymentRequest.abort() should return a promise. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove DummyPageHolder and TrackExceptionState for haraken@ comment. 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.payments; 5 package org.chromium.chrome.browser.payments;
6 6
7 import android.widget.EditText; 7 import android.widget.EditText;
8 import android.widget.TextView; 8 import android.widget.TextView;
9 9
10 import org.chromium.base.ThreadUtils; 10 import org.chromium.base.ThreadUtils;
11 import org.chromium.base.test.util.CommandLineFlags; 11 import org.chromium.base.test.util.CommandLineFlags;
12 import org.chromium.base.test.util.UrlUtils; 12 import org.chromium.base.test.util.UrlUtils;
13 import org.chromium.chrome.R; 13 import org.chromium.chrome.R;
14 import org.chromium.chrome.browser.ChromeActivity; 14 import org.chromium.chrome.browser.ChromeActivity;
15 import org.chromium.chrome.browser.ChromeSwitches; 15 import org.chromium.chrome.browser.ChromeSwitches;
16 import org.chromium.chrome.browser.autofill.CardUnmaskPrompt; 16 import org.chromium.chrome.browser.autofill.CardUnmaskPrompt;
17 import org.chromium.chrome.browser.autofill.CardUnmaskPrompt.CardUnmaskObserverF orTest; 17 import org.chromium.chrome.browser.autofill.CardUnmaskPrompt.CardUnmaskObserverF orTest;
18 import org.chromium.chrome.browser.payments.PaymentRequestImpl.PaymentRequestSer viceObserverForTest;
18 import org.chromium.chrome.browser.payments.ui.PaymentRequestUI; 19 import org.chromium.chrome.browser.payments.ui.PaymentRequestUI;
19 import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestOb serverForTest; 20 import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestOb serverForTest;
20 import org.chromium.chrome.test.ChromeActivityTestCaseBase; 21 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
21 import org.chromium.content.browser.ContentViewCore; 22 import org.chromium.content.browser.ContentViewCore;
22 import org.chromium.content.browser.test.util.CallbackHelper; 23 import org.chromium.content.browser.test.util.CallbackHelper;
23 import org.chromium.content.browser.test.util.Criteria; 24 import org.chromium.content.browser.test.util.Criteria;
24 import org.chromium.content.browser.test.util.CriteriaHelper; 25 import org.chromium.content.browser.test.util.CriteriaHelper;
25 import org.chromium.content.browser.test.util.DOMUtils; 26 import org.chromium.content.browser.test.util.DOMUtils;
26 import org.chromium.content_public.browser.WebContents; 27 import org.chromium.content_public.browser.WebContents;
27 28
28 import java.util.concurrent.Callable; 29 import java.util.concurrent.Callable;
29 import java.util.concurrent.ExecutionException; 30 import java.util.concurrent.ExecutionException;
30 import java.util.concurrent.TimeoutException; 31 import java.util.concurrent.TimeoutException;
31 import java.util.concurrent.atomic.AtomicReference; 32 import java.util.concurrent.atomic.AtomicReference;
32 33
33 /** 34 /**
34 * A base integration test for payments. 35 * A base integration test for payments.
35 */ 36 */
36 @CommandLineFlags.Add({ChromeSwitches.EXPERIMENTAL_WEB_PLAFTORM_FEATURES}) 37 @CommandLineFlags.Add({ChromeSwitches.EXPERIMENTAL_WEB_PLAFTORM_FEATURES})
37 abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA ctivity> 38 abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA ctivity>
38 implements PaymentRequestObserverForTest, CardUnmaskObserverForTest { 39 implements PaymentRequestObserverForTest, PaymentRequestServiceObserverF orTest,
40 CardUnmaskObserverForTest {
39 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyForInput; 41 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyForInput;
40 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyToPay; 42 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyToPay;
41 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyToClose; 43 protected final PaymentsCallbackHelper<PaymentRequestUI> mReadyToClose;
42 protected final PaymentsCallbackHelper<PaymentRequestUI> mResultReady; 44 protected final PaymentsCallbackHelper<PaymentRequestUI> mResultReady;
43 protected final PaymentsCallbackHelper<CardUnmaskPrompt> mReadyForUnmaskInpu t; 45 protected final PaymentsCallbackHelper<CardUnmaskPrompt> mReadyForUnmaskInpu t;
44 protected final PaymentsCallbackHelper<CardUnmaskPrompt> mReadyToUnmask; 46 protected final PaymentsCallbackHelper<CardUnmaskPrompt> mReadyToUnmask;
45 protected final CallbackHelper mDismissed; 47 protected final CallbackHelper mDismissed;
48 protected final CallbackHelper mUnableToAbort;
46 private final AtomicReference<ContentViewCore> mViewCoreRef; 49 private final AtomicReference<ContentViewCore> mViewCoreRef;
47 private final AtomicReference<WebContents> mWebContentsRef; 50 private final AtomicReference<WebContents> mWebContentsRef;
48 private final String mTestFilePath; 51 private final String mTestFilePath;
49 private PaymentRequestUI mUI; 52 private PaymentRequestUI mUI;
50 53
51 protected PaymentRequestTestBase(String testFileName) { 54 protected PaymentRequestTestBase(String testFileName) {
52 super(ChromeActivity.class); 55 super(ChromeActivity.class);
53 mReadyForInput = new PaymentsCallbackHelper<>(); 56 mReadyForInput = new PaymentsCallbackHelper<>();
54 mReadyToPay = new PaymentsCallbackHelper<>(); 57 mReadyToPay = new PaymentsCallbackHelper<>();
55 mReadyToClose = new PaymentsCallbackHelper<>(); 58 mReadyToClose = new PaymentsCallbackHelper<>();
56 mResultReady = new PaymentsCallbackHelper<>(); 59 mResultReady = new PaymentsCallbackHelper<>();
57 mReadyForUnmaskInput = new PaymentsCallbackHelper<>(); 60 mReadyForUnmaskInput = new PaymentsCallbackHelper<>();
58 mReadyToUnmask = new PaymentsCallbackHelper<>(); 61 mReadyToUnmask = new PaymentsCallbackHelper<>();
59 mDismissed = new CallbackHelper(); 62 mDismissed = new CallbackHelper();
63 mUnableToAbort = new CallbackHelper();
60 mViewCoreRef = new AtomicReference<>(); 64 mViewCoreRef = new AtomicReference<>();
61 mWebContentsRef = new AtomicReference<>(); 65 mWebContentsRef = new AtomicReference<>();
62 mTestFilePath = UrlUtils.getIsolatedTestFilePath( 66 mTestFilePath = UrlUtils.getIsolatedTestFilePath(
63 String.format("chrome/test/data/android/payments/%s", testFileNa me)); 67 String.format("chrome/test/data/android/payments/%s", testFileNa me));
64 } 68 }
65 69
66 @Override 70 @Override
67 public void startMainActivity() throws InterruptedException {} 71 public void startMainActivity() throws InterruptedException {}
68 72
69 protected abstract void onMainActivityStarted() 73 protected abstract void onMainActivityStarted()
70 throws InterruptedException, ExecutionException, TimeoutException; 74 throws InterruptedException, ExecutionException, TimeoutException;
71 75
72 protected void triggerUIAndWait(PaymentsCallbackHelper<PaymentRequestUI> hel per) 76 protected void triggerUIAndWait(PaymentsCallbackHelper<PaymentRequestUI> hel per)
73 throws InterruptedException, ExecutionException, TimeoutException { 77 throws InterruptedException, ExecutionException, TimeoutException {
74 startMainActivityWithURL(mTestFilePath); 78 startMainActivityWithURL(mTestFilePath);
75 onMainActivityStarted(); 79 onMainActivityStarted();
76 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 80 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
77 @Override 81 @Override
78 public void run() { 82 public void run() {
79 mViewCoreRef.set(getActivity().getCurrentContentViewCore()); 83 mViewCoreRef.set(getActivity().getCurrentContentViewCore());
80 mWebContentsRef.set(mViewCoreRef.get().getWebContents()); 84 mWebContentsRef.set(mViewCoreRef.get().getWebContents());
81 PaymentRequestUI.setObserverForTest(PaymentRequestTestBase.this) ; 85 PaymentRequestUI.setObserverForTest(PaymentRequestTestBase.this) ;
86 PaymentRequestImpl.setObserverForTest(PaymentRequestTestBase.thi s);
82 CardUnmaskPrompt.setObserverForTest(PaymentRequestTestBase.this) ; 87 CardUnmaskPrompt.setObserverForTest(PaymentRequestTestBase.this) ;
83 } 88 }
84 }); 89 });
85 assertWaitForPageScaleFactorMatch(1); 90 assertWaitForPageScaleFactorMatch(1);
86 91 clickNodeAndWait("buy", helper);
87 int callCount = helper.getCallCount();
88 DOMUtils.clickNode(this, mViewCoreRef.get(), "buy");
89 helper.waitForCallback(callCount);
90 mUI = helper.getTarget(); 92 mUI = helper.getTarget();
91 } 93 }
92 94
95 protected void clickNodeAndWait(String nodeId, CallbackHelper helper)
96 throws InterruptedException, ExecutionException, TimeoutException {
97 int callCount = helper.getCallCount();
98 DOMUtils.clickNode(this, mViewCoreRef.get(), nodeId);
99 helper.waitForCallback(callCount);
100 }
101
93 protected void clickAndWait(final int resourceId, CallbackHelper helper) 102 protected void clickAndWait(final int resourceId, CallbackHelper helper)
94 throws InterruptedException, TimeoutException { 103 throws InterruptedException, TimeoutException {
95 int callCount = helper.getCallCount(); 104 int callCount = helper.getCallCount();
96 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 105 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
97 @Override 106 @Override
98 public void run() { 107 public void run() {
99 mUI.getDialogForTest().findViewById(resourceId).performClick(); 108 mUI.getDialogForTest().findViewById(resourceId).performClick();
100 } 109 }
101 }); 110 });
102 helper.waitForCallback(callCount); 111 helper.waitForCallback(callCount);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 ThreadUtils.assertOnUiThread(); 193 ThreadUtils.assertOnUiThread();
185 mReadyToClose.notifyCalled(ui); 194 mReadyToClose.notifyCalled(ui);
186 } 195 }
187 196
188 @Override 197 @Override
189 public void onPaymentRequestResultReady(PaymentRequestUI ui) { 198 public void onPaymentRequestResultReady(PaymentRequestUI ui) {
190 ThreadUtils.assertOnUiThread(); 199 ThreadUtils.assertOnUiThread();
191 mResultReady.notifyCalled(ui); 200 mResultReady.notifyCalled(ui);
192 } 201 }
193 202
194
195 @Override 203 @Override
196 public void onPaymentRequestDismiss() { 204 public void onPaymentRequestDismiss() {
197 ThreadUtils.assertOnUiThread(); 205 ThreadUtils.assertOnUiThread();
198 mDismissed.notifyCalled(); 206 mDismissed.notifyCalled();
199 } 207 }
200 208
201 @Override 209 @Override
210 public void onPaymentRequestServiceUnableToAbort() {
211 ThreadUtils.assertOnUiThread();
212 mUnableToAbort.notifyCalled();
213 }
214
215 @Override
202 public void onCardUnmaskPromptReadyForInput(CardUnmaskPrompt prompt) { 216 public void onCardUnmaskPromptReadyForInput(CardUnmaskPrompt prompt) {
203 ThreadUtils.assertOnUiThread(); 217 ThreadUtils.assertOnUiThread();
204 mReadyForUnmaskInput.notifyCalled(prompt); 218 mReadyForUnmaskInput.notifyCalled(prompt);
205 } 219 }
206 220
207 @Override 221 @Override
208 public void onCardUnmaskPromptReadyToUnmask(CardUnmaskPrompt prompt) { 222 public void onCardUnmaskPromptReadyToUnmask(CardUnmaskPrompt prompt) {
209 ThreadUtils.assertOnUiThread(); 223 ThreadUtils.assertOnUiThread();
210 mReadyToUnmask.notifyCalled(prompt); 224 mReadyToUnmask.notifyCalled(prompt);
211 } 225 }
(...skipping 18 matching lines...) Expand all
230 * 244 *
231 * @param ui The UI that is ready for input. 245 * @param ui The UI that is ready for input.
232 */ 246 */
233 public void notifyCalled(T target) { 247 public void notifyCalled(T target) {
234 ThreadUtils.assertOnUiThread(); 248 ThreadUtils.assertOnUiThread();
235 mTarget = target; 249 mTarget = target;
236 notifyCalled(); 250 notifyCalled();
237 } 251 }
238 } 252 }
239 } 253 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698