Scroll list of documents when offscreen.
Make Documents tests more robust by offering to scroll, since the
requested document may be offscreen.
Bug: 18245993
Change-Id: Id05b86203851a21bdc2dee61c8d0c87645729b79
diff --git a/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java b/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
index 18ee963..98610a0 100644
--- a/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
+++ b/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
@@ -82,6 +82,25 @@
return new UiObject(rootsList.childSelector(new UiSelector().text(label)));
}
+ private UiObject findDocument(String label) throws UiObjectNotFoundException {
+ final UiSelector docList = new UiSelector().resourceId(
+ "com.android.documentsui:id/container_directory").childSelector(
+ new UiSelector().resourceId("com.android.documentsui:id/list"));
+
+ // Wait for the first list item to appear
+ assertTrue("First list item",
+ new UiObject(docList.childSelector(new UiSelector())).waitForExists(TIMEOUT));
+
+ // Now scroll around to find our item
+ new UiScrollable(docList).scrollIntoView(new UiSelector().text(label));
+ return new UiObject(docList.childSelector(new UiSelector().text(label)));
+ }
+
+ private UiObject findSaveButton() throws UiObjectNotFoundException {
+ return new UiObject(new UiSelector().resourceId("com.android.documentsui:id/container_save")
+ .childSelector(new UiSelector().resourceId("android:id/button1")));
+ }
+
public void testOpenSimple() throws Exception {
if (!supportedHardware()) return;
@@ -108,7 +127,7 @@
findRoot("CtsLocal").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().text("FILE1")).click();
+ findDocument("FILE1").click();
final Result result = mActivity.getResult();
final Uri uri = result.data.getData();
@@ -137,8 +156,7 @@
findRoot("CtsCreate").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().resourceId("com.android.documentsui:id/container_save")
- .childSelector(new UiSelector().resourceId("android:id/button1"))).click();
+ findSaveButton().click();
final Result result = mActivity.getResult();
final Uri uri = result.data.getData();
@@ -164,13 +182,12 @@
// Pick file2, which should be selected since MIME matches, then try
// picking a non-matching MIME, which should leave file2 selected.
mDevice.waitForIdle();
- new UiObject(new UiSelector().text("FILE2")).click();
+ findDocument("FILE2").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().text("FILE1")).click();
+ findDocument("FILE1").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().resourceId("com.android.documentsui:id/container_save")
- .childSelector(new UiSelector().resourceId("android:id/button1"))).click();
+ findSaveButton().click();
final Result result = mActivity.getResult();
final Uri uri = result.data.getData();
@@ -188,10 +205,9 @@
findRoot("CtsCreate").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().text("DIR2")).click();
+ findDocument("DIR2").click();
mDevice.waitForIdle();
- new UiObject(new UiSelector().resourceId("com.android.documentsui:id/container_save")
- .childSelector(new UiSelector().resourceId("android:id/button1"))).click();
+ findSaveButton().click();
final Result result = mActivity.getResult();
final Uri uri = result.data.getData();