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

Commit a9d60f55 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Use target component to find existing single instance activity" into...

Merge "Use target component to find existing single instance activity" into rvc-dev am: 16349cb0 am: 19ab2bd1

Change-Id: I7cc224520216701da09ddffc8b4b721767a62a72
parents da909181 19ab2bd1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2695,7 +2695,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
                return true;
            }
        } else {
            if (r.intent.getComponent().equals(cls)) {
            // Compare the target component instead of intent component so we don't miss if the
            // activity uses alias.
            if (r.mActivityComponent.equals(cls)) {
                return true;
            }
        }
+24 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.platform.test.annotations.Presubmit;

import androidx.test.filters.SmallTest;
@@ -109,5 +111,27 @@ public class RootWindowContainerTests extends WindowTestsBase {
        assertEquals(WindowConfiguration.WINDOWING_MODE_FREEFORM,
                mWm.getDefaultDisplayContentLocked().getWindowingMode());
    }

    /**
     * This test ensures that an existing single instance activity with alias name can be found by
     * the same activity info. So {@link ActivityStarter#getReusableTask} won't miss it that leads
     * to create an unexpected new instance.
     */
    @Test
    public void testFindActivityByTargetComponent() {
        final ComponentName aliasComponent = ComponentName.createRelative(
                ActivityTestsBase.DEFAULT_COMPONENT_PACKAGE_NAME, ".AliasActivity");
        final ComponentName targetComponent = ComponentName.createRelative(
                aliasComponent.getPackageName(), ".TargetActivity");
        final ActivityRecord activity = new ActivityTestsBase.ActivityBuilder(mWm.mAtmService)
                .setComponent(aliasComponent)
                .setTargetActivity(targetComponent.getClassName())
                .setLaunchMode(ActivityInfo.LAUNCH_SINGLE_INSTANCE)
                .setCreateTask(true)
                .build();

        assertEquals(activity, mWm.mRoot.findActivity(activity.intent, activity.info,
                false /* compareIntentFilters */));
    }
}