Merge "Wait for launcher is shown after calling pressHome"
This commit is contained in:
@@ -50,6 +50,15 @@
|
|||||||
<uses-permission android:name="android.permission.NETWORK_STATS_PROVIDER" />
|
<uses-permission android:name="android.permission.NETWORK_STATS_PROVIDER" />
|
||||||
<uses-permission android:name="android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE" />
|
<uses-permission android:name="android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE" />
|
||||||
|
|
||||||
|
<!-- Declare the intent that the test intends to query. This is necessary for
|
||||||
|
UiDevice.getLauncherPackageName which is used in NetworkNotificationManagerTest
|
||||||
|
-->
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.HOME"/>
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
<application android:testOnly="true">
|
<application android:testOnly="true">
|
||||||
<uses-library android:name="android.test.runner" />
|
<uses-library android:name="android.test.runner" />
|
||||||
<uses-library android:name="android.net.ipsec.ike" />
|
<uses-library android:name="android.net.ipsec.ike" />
|
||||||
|
|||||||
@@ -65,9 +65,11 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.platform.app.InstrumentationRegistry;
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
import androidx.test.uiautomator.By;
|
||||||
import androidx.test.uiautomator.UiDevice;
|
import androidx.test.uiautomator.UiDevice;
|
||||||
import androidx.test.uiautomator.UiObject;
|
import androidx.test.uiautomator.UiObject;
|
||||||
import androidx.test.uiautomator.UiSelector;
|
import androidx.test.uiautomator.UiSelector;
|
||||||
|
import androidx.test.uiautomator.Until;
|
||||||
|
|
||||||
import com.android.connectivity.resources.R;
|
import com.android.connectivity.resources.R;
|
||||||
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
|
import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
|
||||||
@@ -99,6 +101,8 @@ public class NetworkNotificationManagerTest {
|
|||||||
private static final int TEST_NOTIF_ID = 101;
|
private static final int TEST_NOTIF_ID = 101;
|
||||||
private static final String TEST_NOTIF_TAG = NetworkNotificationManager.tagFor(TEST_NOTIF_ID);
|
private static final String TEST_NOTIF_TAG = NetworkNotificationManager.tagFor(TEST_NOTIF_ID);
|
||||||
private static final long TEST_TIMEOUT_MS = 10_000L;
|
private static final long TEST_TIMEOUT_MS = 10_000L;
|
||||||
|
private static final long UI_AUTOMATOR_WAIT_TIME_MILLIS = TEST_TIMEOUT_MS;
|
||||||
|
|
||||||
static final NetworkCapabilities CELL_CAPABILITIES = new NetworkCapabilities();
|
static final NetworkCapabilities CELL_CAPABILITIES = new NetworkCapabilities();
|
||||||
static final NetworkCapabilities WIFI_CAPABILITIES = new NetworkCapabilities();
|
static final NetworkCapabilities WIFI_CAPABILITIES = new NetworkCapabilities();
|
||||||
static final NetworkCapabilities VPN_CAPABILITIES = new NetworkCapabilities();
|
static final NetworkCapabilities VPN_CAPABILITIES = new NetworkCapabilities();
|
||||||
@@ -386,8 +390,16 @@ public class NetworkNotificationManagerTest {
|
|||||||
R.bool.config_notifyNoInternetAsDialogWhenHighPriority);
|
R.bool.config_notifyNoInternetAsDialogWhenHighPriority);
|
||||||
|
|
||||||
final Instrumentation instr = InstrumentationRegistry.getInstrumentation();
|
final Instrumentation instr = InstrumentationRegistry.getInstrumentation();
|
||||||
|
final UiDevice uiDevice = UiDevice.getInstance(instr);
|
||||||
UiDevice.getInstance(instr).pressHome();
|
UiDevice.getInstance(instr).pressHome();
|
||||||
|
|
||||||
|
// UiDevice.getLauncherPackageName() requires the test manifest to have a <queries> tag for
|
||||||
|
// the launcher intent.
|
||||||
|
final String launcherPackageName = uiDevice.getLauncherPackageName();
|
||||||
|
assertTrue(String.format("Launcher (%s) is not shown", launcherPackageName),
|
||||||
|
uiDevice.wait(Until.hasObject(By.pkg(launcherPackageName)),
|
||||||
|
UI_AUTOMATOR_WAIT_TIME_MILLIS));
|
||||||
|
|
||||||
mManager.showNotification(TEST_NOTIF_ID, NETWORK_SWITCH, mWifiNai, mCellNai, null, false);
|
mManager.showNotification(TEST_NOTIF_ID, NETWORK_SWITCH, mWifiNai, mCellNai, null, false);
|
||||||
// Non-"no internet" notifications are not affected
|
// Non-"no internet" notifications are not affected
|
||||||
verify(mNotificationManager).notify(eq(TEST_NOTIF_TAG), eq(NETWORK_SWITCH.eventId), any());
|
verify(mNotificationManager).notify(eq(TEST_NOTIF_TAG), eq(NETWORK_SWITCH.eventId), any());
|
||||||
@@ -407,8 +419,7 @@ public class NetworkNotificationManagerTest {
|
|||||||
verify(mNotificationManager).cancel(TEST_NOTIF_TAG, NETWORK_SWITCH.eventId);
|
verify(mNotificationManager).cancel(TEST_NOTIF_TAG, NETWORK_SWITCH.eventId);
|
||||||
|
|
||||||
// Verify that the activity is shown (the activity shows the action on screen)
|
// Verify that the activity is shown (the activity shows the action on screen)
|
||||||
final UiObject actionText = UiDevice.getInstance(instr).findObject(
|
final UiObject actionText = uiDevice.findObject(new UiSelector().text(testAction));
|
||||||
new UiSelector().text(testAction));
|
|
||||||
assertTrue("Activity not shown", actionText.waitForExists(TEST_TIMEOUT_MS));
|
assertTrue("Activity not shown", actionText.waitForExists(TEST_TIMEOUT_MS));
|
||||||
|
|
||||||
// Tapping the text should dismiss the dialog
|
// Tapping the text should dismiss the dialog
|
||||||
|
|||||||
Reference in New Issue
Block a user