Force calculator to launch in fullscreen for taskbar tests

Taskbar tests are flaking when desktop windowing is enabled due to calculator app being launched in splitscreen unexpectedly during test setup (due to unexpected effect of DesktopModeLaunchParamsModifier on activity launch.) While looking into root cause, this temporary fix to address the test failures ensures that calculator app is always launched in fullscreen, by enforcing it with ActivityOptions.

Bug: 333446588
Bug: 333446588
Flag: None
Test: atest NexusLauncherTests:com.android.quickstep.TaplTestsTaskbar
Test: forrest build with CL (https://android-build.corp.google.com/builds/abtd/run/L47500030003265061)
Change-Id: If12e8490214aa1dd5de89ff8535495c2a0c1fe82
This commit is contained in:
dakinola
2024-04-22 10:11:35 +00:00
committed by Daniel Akinola
parent 5905d55a9d
commit 8771dfe3dd
2 changed files with 32 additions and 3 deletions
@@ -15,7 +15,10 @@
*/
package com.android.launcher3.ui;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
import static android.view.Display.DEFAULT_DISPLAY;
import static androidx.test.InstrumentationRegistry.getInstrumentation;
@@ -26,6 +29,7 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.app.ActivityOptions;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -571,6 +575,21 @@ public abstract class AbstractLauncherUiTest<LAUNCHER_TYPE extends Launcher> {
true /* newTask */);
}
/** alternative of startAppFast where app is guaranteed to launch in fullscreen mode */
public static void startAppFastInFullscreen(String packageName) {
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN);
options.setLaunchDisplayId(DEFAULT_DISPLAY);
options.setLaunchActivityType(ACTIVITY_TYPE_STANDARD);
startIntent(
getInstrumentation().getContext().getPackageManager().getLaunchIntentForPackage(
packageName),
By.pkg(packageName).depth(0),
true /* newTask */,
options);
}
public static void startTestActivity(String activityName, String activityLabel) {
final String packageName = getAppPackageName();
final Intent intent = getInstrumentation().getContext().getPackageManager().
@@ -606,7 +625,8 @@ public abstract class AbstractLauncherUiTest<LAUNCHER_TYPE extends Launcher> {
false /* newTask */);
}
private static void startIntent(Intent intent, BySelector selector, boolean newTask) {
private static void startIntent(
Intent intent, BySelector selector, boolean newTask, ActivityOptions options) {
intent.addCategory(Intent.CATEGORY_LAUNCHER);
if (newTask) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
@@ -614,7 +634,12 @@ public abstract class AbstractLauncherUiTest<LAUNCHER_TYPE extends Launcher> {
intent.addFlags(
Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
}
getInstrumentation().getTargetContext().startActivity(intent);
if (options != null) {
getInstrumentation().getTargetContext().startActivity(intent, options.toBundle());
} else {
getInstrumentation().getTargetContext().startActivity(intent);
}
assertTrue("App didn't start: " + selector,
TestHelpers.wait(Until.hasObject(selector), DEFAULT_UI_TIMEOUT));
@@ -625,6 +650,10 @@ public abstract class AbstractLauncherUiTest<LAUNCHER_TYPE extends Launcher> {
DEFAULT_ACTIVITY_TIMEOUT, launcherInstrumentation);
}
private static void startIntent(Intent intent, BySelector selector, boolean newTask) {
startIntent(intent, selector, newTask, null);
}
public static ActivityInfo resolveSystemAppInfo(String category) {
return getInstrumentation().getContext().getPackageManager().resolveActivity(
new Intent(Intent.ACTION_MAIN).addCategory(category),