Merge "Fix first-time usage." into nyc-dev
This commit is contained in:
@@ -113,7 +113,9 @@ public class ActionSendMultipleConsumerActivity extends Activity {
|
|||||||
Bundle getExtras() {
|
Bundle getExtras() {
|
||||||
Bundle bundle = null;
|
Bundle bundle = null;
|
||||||
try {
|
try {
|
||||||
bundle = mQueue.poll(TIMEOUT, TimeUnit.SECONDS);
|
// UI operations can be slower the very first time the tests are run due
|
||||||
|
// because ActionSendMultipleConsumer is not the default activity chosen.
|
||||||
|
bundle = mQueue.poll(2 * TIMEOUT, TimeUnit.SECONDS);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,37 +144,44 @@ final class UiBot {
|
|||||||
String shareText = "Share with " + name;
|
String shareText = "Share with " + name;
|
||||||
Log.v(TAG, "Waiting for ActivityChooser text: '" + shareText + "'");
|
Log.v(TAG, "Waiting for ActivityChooser text: '" + shareText + "'");
|
||||||
boolean gotIt = mDevice.wait(Until.hasObject(By.text(shareText)), mTimeout);
|
boolean gotIt = mDevice.wait(Until.hasObject(By.text(shareText)), mTimeout);
|
||||||
|
boolean justOnceHack = false;
|
||||||
|
|
||||||
if (gotIt) {
|
if (gotIt) {
|
||||||
Log.v(TAG, "Found activity " + name + ", it's the default action");
|
Log.v(TAG, "Found activity " + name + ", it's the default action");
|
||||||
// Clicks the "Just Once" button.
|
clickJustOnce();
|
||||||
gotIt = mDevice
|
|
||||||
.wait(Until.hasObject(By.res("android", "button_once")), mTimeout);
|
|
||||||
assertTrue("'Just Once' button not visible yet", gotIt);
|
|
||||||
|
|
||||||
UiObject justOnce = mDevice
|
|
||||||
.findObject(new UiSelector().resourceId("android:id/button_once"));
|
|
||||||
assertTrue("'Just Once' button not found", justOnce.exists());
|
|
||||||
|
|
||||||
click(justOnce, "Just Once");
|
|
||||||
} else {
|
} else {
|
||||||
// Since it's not, need to find it in the scrollable list...
|
// Since it's not, need to find it in the scrollable list...
|
||||||
Log.v(TAG, "Activity " + name + " is not default action");
|
Log.v(TAG, "Activity " + name + " is not default action");
|
||||||
UiScrollable activitiesList = new UiScrollable(new UiSelector().scrollable(true));
|
UiScrollable activitiesList = new UiScrollable(new UiSelector().scrollable(true));
|
||||||
|
|
||||||
UiObject activity;
|
|
||||||
try {
|
try {
|
||||||
activitiesList.scrollForward();
|
activitiesList.scrollForward();
|
||||||
activity = getVisibleObject(name);
|
|
||||||
} catch (UiObjectNotFoundException e) {
|
} catch (UiObjectNotFoundException e) {
|
||||||
throw new IllegalStateException("didn't find activity '" + name
|
// TODO: for some paranormal issue, the first time a test is run the scrollable
|
||||||
+ "' on activities chooser", e);
|
// activity list is displayed but calling scrollForwad() (or even isScrollable())
|
||||||
|
// throws a "UiObjectNotFoundException: UiSelector[SCROLLABLE=true]" exception
|
||||||
|
justOnceHack = true;
|
||||||
|
Log.d(TAG, "could not scroll forward", e);
|
||||||
}
|
}
|
||||||
|
UiObject activity = getVisibleObject(name);
|
||||||
// ... then select it.
|
// ... then select it.
|
||||||
click(activity, name);
|
click(activity, name);
|
||||||
|
if (justOnceHack) {
|
||||||
|
clickJustOnce();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void clickJustOnce() {
|
||||||
|
boolean gotIt = mDevice.wait(Until.hasObject(By.res("android", "button_once")), mTimeout);
|
||||||
|
assertTrue("'Just Once' button not visible yet", gotIt);
|
||||||
|
|
||||||
|
UiObject justOnce = mDevice
|
||||||
|
.findObject(new UiSelector().resourceId("android:id/button_once"));
|
||||||
|
assertTrue("'Just Once' button not found", justOnce.exists());
|
||||||
|
|
||||||
|
click(justOnce, "Just Once");
|
||||||
|
}
|
||||||
|
|
||||||
public void pressBack() {
|
public void pressBack() {
|
||||||
mDevice.pressBack();
|
mDevice.pressBack();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user