Add polling and logging when launcher is settings
getLauncherPackageName sometimes returns "com.android.settings", causing the test to fail. Add polling for the launcher to not return settings, and logging to try to understand why this happens, especially if polling does not solve the issue. Bug: 286550950 Test: atest Change-Id: I90963d5db326732dfc82db07f36676190ffdcce9
This commit is contained in:
@@ -50,6 +50,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
@@ -60,6 +61,7 @@ import android.os.UserHandle;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.testing.PollingCheck;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -404,6 +406,22 @@ public class NetworkNotificationManagerTest {
|
||||
|
||||
// UiDevice.getLauncherPackageName() requires the test manifest to have a <queries> tag for
|
||||
// the launcher intent.
|
||||
// Attempted workaround for b/286550950 where Settings is reported as the launcher
|
||||
PollingCheck.check(
|
||||
"Launcher package name was still settings after " + TEST_TIMEOUT_MS + "ms",
|
||||
TEST_TIMEOUT_MS,
|
||||
() -> {
|
||||
if ("com.android.settings".equals(uiDevice.getLauncherPackageName())) {
|
||||
final Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_HOME);
|
||||
final List<ResolveInfo> acts = ctx.getPackageManager()
|
||||
.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
|
||||
Log.e(NetworkNotificationManagerTest.class.getSimpleName(),
|
||||
"Got settings as launcher name; launcher activities: " + acts);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
final String launcherPackageName = uiDevice.getLauncherPackageName();
|
||||
assertTrue(String.format("Launcher (%s) is not shown", launcherPackageName),
|
||||
uiDevice.wait(Until.hasObject(By.pkg(launcherPackageName)),
|
||||
|
||||
Reference in New Issue
Block a user