Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8771dfe3 authored by dakinola's avatar dakinola Committed by Daniel Akinola
Browse files

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
parent 5905d55a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ public class AbstractTaplTestsTaskbar extends AbstractQuickStepTest {
                "com.android.launcher3.testcomponent.BaseTestingActivity");
        mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, layoutBuilder);
        AbstractLauncherUiTest.initialize(this);
        startAppFast(CALCULATOR_APP_PACKAGE);
        startAppFastInFullscreen(CALCULATOR_APP_PACKAGE);
        mLauncher.enableBlockTimeout(true);
        mLauncher.showTaskbarIfHidden();
    }
+31 −2
Original line number Diff line number Diff line
@@ -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);
        }

        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),