| 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 2444005c8c58698092987572a9b3c28ccaeb72b5..af9daa4d794beae660557c2512dfa9b34cff5f6f 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
|
| @@ -4,6 +4,9 @@
|
|
|
| package org.chromium.chrome.browser.payments;
|
|
|
| +import android.view.View;
|
| +import android.view.ViewGroup;
|
| +import android.widget.CheckBox;
|
| import android.widget.EditText;
|
| import android.widget.Spinner;
|
| import android.widget.TextView;
|
| @@ -54,6 +57,7 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| protected final CallbackHelper mEditorDismissed;
|
| protected final CallbackHelper mDismissed;
|
| protected final CallbackHelper mUnableToAbort;
|
| + protected final CallbackHelper mBillingAddressChangeProcessed;
|
| private final AtomicReference<ContentViewCore> mViewCoreRef;
|
| private final AtomicReference<WebContents> mWebContentsRef;
|
| private final String mTestFilePath;
|
| @@ -74,6 +78,7 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| mEditorDismissed = new CallbackHelper();
|
| mDismissed = new CallbackHelper();
|
| mUnableToAbort = new CallbackHelper();
|
| + mBillingAddressChangeProcessed = new CallbackHelper();
|
| mViewCoreRef = new AtomicReference<>();
|
| mWebContentsRef = new AtomicReference<>();
|
| mTestFilePath = UrlUtils.getIsolatedTestFilePath(
|
| @@ -156,6 +161,19 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| helper.waitForCallback(callCount);
|
| }
|
|
|
| + /** Clicks on an element in the "Payment" section of the payments UI. */
|
| + protected void clickInPaymentMethodAndWait(final int resourceId, CallbackHelper helper)
|
| + throws InterruptedException, TimeoutException {
|
| + int callCount = helper.getCallCount();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mUI.getPaymentMethodSectionForTest().findViewById(resourceId).performClick();
|
| + }
|
| + });
|
| + helper.waitForCallback(callCount);
|
| + }
|
| +
|
| /** Clicks on an element in the "Contact Info" section of the payments UI. */
|
| protected void clickInContactInfoAndWait(final int resourceId, CallbackHelper helper)
|
| throws InterruptedException, TimeoutException {
|
| @@ -169,6 +187,19 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| helper.waitForCallback(callCount);
|
| }
|
|
|
| + /** Clicks on an element in the editor UI for credit cards. */
|
| + protected void clickInCardEditorAndWait(final int resourceId, CallbackHelper helper)
|
| + throws InterruptedException, TimeoutException {
|
| + int callCount = helper.getCallCount();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mUI.getCardEditorView().findViewById(resourceId).performClick();
|
| + }
|
| + });
|
| + helper.waitForCallback(callCount);
|
| + }
|
| +
|
| /** Clicks on an element in the editor UI. */
|
| protected void clickInEditorAndWait(final int resourceId, CallbackHelper helper)
|
| throws InterruptedException, TimeoutException {
|
| @@ -266,8 +297,24 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| });
|
| }
|
|
|
| + /** Selects the spinner value in the editor UI for credit cards. */
|
| + protected void setSpinnerSelectionsInCardEditorAndWait(final int[] selections,
|
| + CallbackHelper helper) throws InterruptedException, TimeoutException {
|
| + int callCount = helper.getCallCount();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + List<Spinner> fields = mUI.getCardEditorView().getDropdownFieldsForTest();
|
| + for (int i = 0; i < selections.length && i < fields.size(); i++) {
|
| + fields.get(i).setSelection(selections[i]);
|
| + }
|
| + }
|
| + });
|
| + helper.waitForCallback(callCount);
|
| + }
|
| +
|
| /** Selects the spinner value in the editor UI. */
|
| - protected void setSpinnerSelectionInEditor(final int selection, CallbackHelper helper)
|
| + protected void setSpinnerSelectionInEditorAndWait(final int selection, CallbackHelper helper)
|
| throws InterruptedException, TimeoutException {
|
| int callCount = helper.getCallCount();
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @@ -279,6 +326,27 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| helper.waitForCallback(callCount);
|
| }
|
|
|
| + /** Directly sets the text in the editor UI for credit cards. */
|
| + protected void setTextInCardEditorAndWait(final String[] values, CallbackHelper helper)
|
| + throws InterruptedException, TimeoutException {
|
| + int callCount = helper.getCallCount();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + ViewGroup contents = (ViewGroup)
|
| + mUI.getCardEditorView().findViewById(R.id.contents);
|
| + assertNotNull(contents);
|
| + for (int i = 0, j = 0; i < contents.getChildCount() && j < values.length; i++) {
|
| + View view = contents.getChildAt(i);
|
| + if (view instanceof EditorTextField) {
|
| + ((EditorTextField) view).getEditText().setText(values[j++]);
|
| + }
|
| + }
|
| + }
|
| + });
|
| + helper.waitForCallback(callCount);
|
| + }
|
| +
|
| /** Directly sets the text in the editor UI. */
|
| protected void setTextInEditorAndWait(final String[] values, CallbackHelper helper)
|
| throws InterruptedException, TimeoutException {
|
| @@ -286,15 +354,28 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @Override
|
| public void run() {
|
| - List<EditorTextField> fields = mUI.getEditorView().getEditorTextFields();
|
| + List<EditText> fields = mUI.getEditorView().getEditableTextFieldsForTest();
|
| for (int i = 0; i < values.length; i++) {
|
| - fields.get(i).getEditText().setText(values[i]);
|
| + fields.get(i).setText(values[i]);
|
| }
|
| }
|
| });
|
| helper.waitForCallback(callCount);
|
| }
|
|
|
| + /** Directly sets the checkbox selection in the editor UI for credit cards. */
|
| + protected void selectCheckboxAndWait(final int resourceId, final boolean isChecked,
|
| + CallbackHelper helper) throws InterruptedException, TimeoutException {
|
| + int callCount = helper.getCallCount();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + ((CheckBox) mUI.getCardEditorView().findViewById(resourceId)).setChecked(isChecked);
|
| + }
|
| + });
|
| + helper.waitForCallback(callCount);
|
| + }
|
| +
|
| /** Directly sets the text in the card unmask UI. */
|
| protected void setTextInCardUnmaskDialogAndWait(final int resourceId, final String input,
|
| CallbackHelper helper) throws InterruptedException, TimeoutException {
|
| @@ -400,6 +481,12 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA
|
| }
|
|
|
| @Override
|
| + public void onPaymentRequestServiceBillingAddressChangeProcessed() {
|
| + ThreadUtils.assertOnUiThread();
|
| + mBillingAddressChangeProcessed.notifyCalled();
|
| + }
|
| +
|
| + @Override
|
| public void onCardUnmaskPromptReadyForInput(CardUnmaskPrompt prompt) {
|
| ThreadUtils.assertOnUiThread();
|
| mReadyForUnmaskInput.notifyCalled(prompt);
|
|
|