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

Commit 19ab2bd1 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

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

Change-Id: Iac76250bb86d58c97269f729622a9a2ab1c62b6e
parents 1a21c2d3 16349cb0
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 */));
    }
}