Loading services/core/java/com/android/server/wm/RootWindowContainer.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; } } Loading services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */)); } } Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; } } Loading
services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +24 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */)); } }