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 81470abc1e3e69e7eae1c39b23c79418cfee0a97..a117f225ee5949f187331eee87f027620e040b90 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,7 +4,10 @@ |
package org.chromium.chrome.browser.payments; |
+import android.view.View; |
+import android.view.ViewGroup; |
import android.widget.EditText; |
+import android.widget.Spinner; |
import android.widget.TextView; |
import org.chromium.base.ThreadUtils; |
@@ -16,6 +19,7 @@ import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.autofill.CardUnmaskPrompt; |
import org.chromium.chrome.browser.autofill.CardUnmaskPrompt.CardUnmaskObserverForTest; |
import org.chromium.chrome.browser.payments.PaymentRequestImpl.PaymentRequestServiceObserverForTest; |
+import org.chromium.chrome.browser.payments.ui.EditorTextField; |
import org.chromium.chrome.browser.payments.ui.PaymentRequestUI; |
import org.chromium.chrome.browser.payments.ui.PaymentRequestUI.PaymentRequestObserverForTest; |
import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
@@ -122,6 +126,36 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA |
helper.waitForCallback(callCount); |
} |
+ /** |
+ * Clicks on an element in the "Shipping summary" section of the payments UI. This section |
+ * combines both shipping address and shipping option. It is replaced by "Shipping address" and |
+ * "Shipping option" sections upon expanding the payments UI. |
+ */ |
+ protected void clickInShippingSummaryAndWait(final int resourceId, CallbackHelper helper) |
+ throws InterruptedException, TimeoutException { |
+ int callCount = helper.getCallCount(); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ mUI.getShippingSummarySectionForTest().findViewById(resourceId).performClick(); |
+ } |
+ }); |
+ helper.waitForCallback(callCount); |
+ } |
+ |
+ /** Clicks on an element in the "Shipping address" section of the payments UI. */ |
+ protected void clickInShippingAddressAndWait(final int resourceId, CallbackHelper helper) |
+ throws InterruptedException, TimeoutException { |
+ int callCount = helper.getCallCount(); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ mUI.getShippingAddressSectionForTest().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 { |
@@ -161,25 +195,53 @@ abstract class PaymentRequestTestBase extends ChromeActivityTestCaseBase<ChromeA |
helper.waitForCallback(callCount); |
} |
- /** Returns the left summary label of the "Shipping Address" section. */ |
+ /** Returns the left summary label of the "Shipping summary" section. */ |
protected String getAddressSectionLabel() throws ExecutionException { |
return ThreadUtils.runOnUiThreadBlocking(new Callable<String>() { |
@Override |
public String call() { |
- return ((TextView) mUI.getShippingAddressSectionForTest().findViewById( |
+ return ((TextView) mUI.getShippingSummarySectionForTest().findViewById( |
R.id.payments_left_summary_label)).getText().toString(); |
} |
}); |
} |
+ /** Selects the spinner value in the editor UI. */ |
+ protected void setSpinnerSelectionInEditor(final int selection, CallbackHelper helper) |
+ throws InterruptedException, TimeoutException { |
+ int callCount = helper.getCallCount(); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ ViewGroup contents = (ViewGroup) mUI.getEditorView().findViewById(R.id.contents); |
+ assertNotNull(contents); |
+ for (int i = 0; i < contents.getChildCount(); i++) { |
+ View view = contents.getChildAt(i); |
+ if (view instanceof Spinner) { |
+ ((Spinner) view).setSelection(selection); |
+ return; |
+ } |
+ } |
+ } |
+ }); |
+ helper.waitForCallback(callCount); |
+ } |
+ |
/** Directly sets the text in the editor UI. */ |
- protected void setTextInEditorAndWait(final int resourceId, final String input, |
- CallbackHelper helper) throws InterruptedException, TimeoutException { |
+ protected void setTextInEditorAndWait(final String[] values, CallbackHelper helper) |
+ throws InterruptedException, TimeoutException { |
int callCount = helper.getCallCount(); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- ((EditText) mUI.getEditorView().findViewById(resourceId)).setText(input); |
+ ViewGroup contents = (ViewGroup) mUI.getEditorView().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); |