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

Commit 0ac31b1d 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 am: a9d60f55

Change-Id: Ib1aab1725ec5aeea13661da22bc22142e52d17b1
parents 7318d100 a9d60f55
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 */));
    }
}