Index: chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryTest.java |
index be60094217da5db1ae4a1c03b055193bc6dd43fc..b8313e57918732ca8ea8682faf0e283b6f9c5298 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillKeyboardAccessoryTest.java |
@@ -10,6 +10,11 @@ import android.view.View; |
import android.view.ViewGroup; |
import android.widget.HorizontalScrollView; |
+import org.junit.Assert; |
+import org.junit.Rule; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+ |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.CommandLineFlags; |
import org.chromium.base.test.util.Feature; |
@@ -20,7 +25,8 @@ import org.chromium.base.test.util.UrlUtils; |
import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; |
-import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
+import org.chromium.chrome.test.ChromeActivityTestRule; |
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content.browser.test.util.Criteria; |
import org.chromium.content.browser.test.util.CriteriaHelper; |
@@ -36,9 +42,16 @@ import java.util.concurrent.atomic.AtomicReference; |
/** |
* Integration tests for autofill keyboard accessory. |
*/ |
-@CommandLineFlags.Add({ChromeSwitches.ENABLE_AUTOFILL_KEYBOARD_ACCESSORY}) |
+@RunWith(ChromeJUnit4ClassRunner.class) |
@RetryOnFailure |
-public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<ChromeActivity> { |
+@CommandLineFlags.Add({ChromeSwitches.ENABLE_AUTOFILL_KEYBOARD_ACCESSORY, |
+ ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, |
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG}) |
+public class AutofillKeyboardAccessoryTest { |
+ @Rule |
+ public ChromeActivityTestRule<ChromeActivity> mActivityTestRule = |
+ new ChromeActivityTestRule<>(ChromeActivity.class); |
+ |
private final AtomicReference<ContentViewCore> mViewCoreRef = |
new AtomicReference<ContentViewCore>(); |
private final AtomicReference<WebContents> mWebContentsRef = new AtomicReference<WebContents>(); |
@@ -46,18 +59,10 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
private final AtomicReference<ViewGroup> mKeyboardAccessoryRef = |
new AtomicReference<ViewGroup>(); |
- public AutofillKeyboardAccessoryTest() { |
- super(ChromeActivity.class); |
- } |
- |
- @Override |
- public void startMainActivity() throws InterruptedException {} |
- |
private void loadTestPage(boolean isRtl) throws InterruptedException, ExecutionException, |
TimeoutException { |
- startMainActivityWithURL(UrlUtils.encodeHtmlDataUri("<html" |
- + (isRtl ? " dir=\"rtl\"" : "") |
- + "><head>" |
+ mActivityTestRule.startMainActivityWithURL(UrlUtils.encodeHtmlDataUri("<html" |
+ + (isRtl ? " dir=\"rtl\"" : "") + "><head>" |
+ "<meta name=\"viewport\"" |
+ "content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\" /></head>" |
+ "<body><form method=\"POST\">" |
@@ -90,11 +95,12 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- mViewCoreRef.set(getActivity().getCurrentContentViewCore()); |
+ mViewCoreRef.set(mActivityTestRule.getActivity().getCurrentContentViewCore()); |
mWebContentsRef.set(mViewCoreRef.get().getWebContents()); |
mContainerRef.set(mViewCoreRef.get().getContainerView()); |
- mKeyboardAccessoryRef.set( |
- getActivity().getWindowAndroid().getKeyboardAccessoryView()); |
+ mKeyboardAccessoryRef.set(mActivityTestRule.getActivity() |
+ .getWindowAndroid() |
+ .getKeyboardAccessoryView()); |
} |
}); |
DOMUtils.waitForNonZeroNodeBounds(mWebContentsRef.get(), "fn"); |
@@ -103,42 +109,49 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
/** |
* Autofocused fields should not show a keyboard accessory. |
*/ |
+ @Test |
@MediumTest |
@Feature({"keyboard-accessory"}) |
- public void testAutofocusedFieldDoesNotShowKeyboardAccessory() throws InterruptedException, |
- ExecutionException, TimeoutException { |
+ public void testAutofocusedFieldDoesNotShowKeyboardAccessory() |
+ throws InterruptedException, ExecutionException, TimeoutException { |
loadTestPage(false); |
- assertTrue("Keyboard accessory should be hidden.", |
- ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
- @Override |
- public Boolean call() { |
- return mKeyboardAccessoryRef.get().getVisibility() == View.GONE; |
- } |
- }).booleanValue()); |
+ Assert.assertTrue("Keyboard accessory should be hidden.", |
+ ThreadUtils |
+ .runOnUiThreadBlocking(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() { |
+ return mKeyboardAccessoryRef.get().getVisibility() == View.GONE; |
+ } |
+ }) |
+ .booleanValue()); |
} |
/** |
* Tapping on an input field should show a keyboard and its keyboard accessory. |
*/ |
+ @Test |
@MediumTest |
@Feature({"keyboard-accessory"}) |
- public void testTapInputFieldShowsKeyboardAccessory() throws ExecutionException, |
- InterruptedException, TimeoutException { |
+ public void testTapInputFieldShowsKeyboardAccessory() |
+ throws ExecutionException, InterruptedException, TimeoutException { |
loadTestPage(false); |
DOMUtils.clickNode(mViewCoreRef.get(), "fn"); |
CriteriaHelper.pollUiThread(new Criteria("Keyboard should be showing.") { |
@Override |
public boolean isSatisfied() { |
- return UiUtils.isKeyboardShowing(getActivity(), mContainerRef.get()); |
+ return UiUtils.isKeyboardShowing( |
+ mActivityTestRule.getActivity(), mContainerRef.get()); |
} |
}); |
- assertTrue("Keyboard accessory should be showing.", |
- ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
- @Override |
- public Boolean call() { |
- return mKeyboardAccessoryRef.get().getVisibility() == View.VISIBLE; |
- } |
- }).booleanValue()); |
+ Assert.assertTrue("Keyboard accessory should be showing.", |
+ ThreadUtils |
+ .runOnUiThreadBlocking(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() { |
+ return mKeyboardAccessoryRef.get().getVisibility() == View.VISIBLE; |
+ } |
+ }) |
+ .booleanValue()); |
} |
/** |
@@ -148,15 +161,17 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
@MediumTest |
@Feature({"keyboard-accessory"}) |
*/ |
+ @Test |
@FlakyTest(message = "https://crbug.com/563640") |
- public void testSwitchFieldsRescrollsKeyboardAccessory() throws ExecutionException, |
- InterruptedException, TimeoutException { |
+ public void testSwitchFieldsRescrollsKeyboardAccessory() |
+ throws ExecutionException, InterruptedException, TimeoutException { |
loadTestPage(false); |
DOMUtils.clickNode(mViewCoreRef.get(), "fn"); |
CriteriaHelper.pollUiThread(new Criteria("Keyboard should be showing.") { |
@Override |
public boolean isSatisfied() { |
- return UiUtils.isKeyboardShowing(getActivity(), mContainerRef.get()); |
+ return UiUtils.isKeyboardShowing( |
+ mActivityTestRule.getActivity(), mContainerRef.get()); |
} |
}); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@@ -197,17 +212,19 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
* RTL is only supported on Jelly Bean MR 1+. |
* http://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html |
*/ |
+ @Test |
@MediumTest |
@Feature({"keyboard-accessory"}) |
@MinAndroidSdkLevel(Build.VERSION_CODES.JELLY_BEAN_MR1) |
- public void testSwitchFieldsRescrollsKeyboardAccessoryRtl() throws ExecutionException, |
- InterruptedException, TimeoutException { |
+ public void testSwitchFieldsRescrollsKeyboardAccessoryRtl() |
+ throws ExecutionException, InterruptedException, TimeoutException { |
loadTestPage(true); |
DOMUtils.clickNode(mViewCoreRef.get(), "fn"); |
CriteriaHelper.pollUiThread(new Criteria("Keyboard should be showing.") { |
@Override |
public boolean isSatisfied() { |
- return UiUtils.isKeyboardShowing(getActivity(), mContainerRef.get()); |
+ return UiUtils.isKeyboardShowing( |
+ mActivityTestRule.getActivity(), mContainerRef.get()); |
} |
}); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@@ -251,16 +268,18 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
* Selecting a keyboard accessory suggestion should hide the keyboard and its keyboard |
* accessory. |
*/ |
+ @Test |
@MediumTest |
@Feature({"keyboard-accessory"}) |
- public void testSelectSuggestionHidesKeyboardAccessory() throws ExecutionException, |
- InterruptedException, TimeoutException { |
+ public void testSelectSuggestionHidesKeyboardAccessory() |
+ throws ExecutionException, InterruptedException, TimeoutException { |
loadTestPage(false); |
DOMUtils.clickNode(mViewCoreRef.get(), "fn"); |
CriteriaHelper.pollUiThread(new Criteria("Keyboard should be showing.") { |
@Override |
public boolean isSatisfied() { |
- return UiUtils.isKeyboardShowing(getActivity(), mContainerRef.get()); |
+ return UiUtils.isKeyboardShowing( |
+ mActivityTestRule.getActivity(), mContainerRef.get()); |
} |
}); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@@ -275,16 +294,19 @@ public class AutofillKeyboardAccessoryTest extends ChromeActivityTestCaseBase<Ch |
CriteriaHelper.pollUiThread(new Criteria("Keyboard should be hidden.") { |
@Override |
public boolean isSatisfied() { |
- return !UiUtils.isKeyboardShowing(getActivity(), mContainerRef.get()); |
+ return !UiUtils.isKeyboardShowing( |
+ mActivityTestRule.getActivity(), mContainerRef.get()); |
} |
}); |
- assertTrue("Keyboard accessory should be hidden.", |
- ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
- @Override |
- public Boolean call() { |
- return mKeyboardAccessoryRef.get().getVisibility() == View.GONE; |
- } |
- }).booleanValue()); |
+ Assert.assertTrue("Keyboard accessory should be hidden.", |
+ ThreadUtils |
+ .runOnUiThreadBlocking(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() { |
+ return mKeyboardAccessoryRef.get().getVisibility() == View.GONE; |
+ } |
+ }) |
+ .booleanValue()); |
} |
private View getSuggestionAt(int index) { |