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

Commit 9dedfafc 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: Ifa2ed80c4148bfd16ba3ca15d4f7947ed6ba7dd8
parents d2926f3d 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 */));
    }
}