Loading services/core/java/com/android/server/wm/WindowProcessController.java +2 −2 Original line number Diff line number Diff line Loading @@ -1058,7 +1058,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio } private void registerActivityConfigurationListener(ActivityRecord activityRecord) { if (activityRecord == null) { if (activityRecord == null || activityRecord.containsListener(this)) { return; } // A process can only register to one activityRecord to listen to the override configuration Loading Loading @@ -1093,7 +1093,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio for (int i = mActivities.size() - 1; i >= 0; i--) { final ActivityRecord activityRecord = mActivities.get(i); if (!activityRecord.finishing && !activityRecord.containsListener(this)) { if (!activityRecord.finishing) { // Eligible activity is found, update listener. registerActivityConfigurationListener(activityRecord); return; Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +34 −0 Original line number Diff line number Diff line Loading @@ -1332,6 +1332,40 @@ public class ActivityRecordTests extends ActivityTestsBase { assertNotEquals(initialConf, wpc.getRequestedOverrideConfiguration()); } @Test public void testActivityDestroyDoesntChangeProcessOverride() { final ActivityRecord firstActivity = createActivityOnDisplay(true /* defaultDisplay */, null /* process */); final WindowProcessController wpc = firstActivity.app; assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, firstActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); final ActivityRecord secondActivity = createActivityOnDisplay(false /* defaultDisplay */, wpc); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, secondActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); final ActivityRecord thirdActivity = createActivityOnDisplay(false /* defaultDisplay */, wpc); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); secondActivity.destroyImmediately(true, ""); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); firstActivity.destroyImmediately(true, ""); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); } /** * Creates an activity on display. For non-default display request it will also create a new * display with custom DisplayInfo. Loading Loading
services/core/java/com/android/server/wm/WindowProcessController.java +2 −2 Original line number Diff line number Diff line Loading @@ -1058,7 +1058,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio } private void registerActivityConfigurationListener(ActivityRecord activityRecord) { if (activityRecord == null) { if (activityRecord == null || activityRecord.containsListener(this)) { return; } // A process can only register to one activityRecord to listen to the override configuration Loading Loading @@ -1093,7 +1093,7 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio for (int i = mActivities.size() - 1; i >= 0; i--) { final ActivityRecord activityRecord = mActivities.get(i); if (!activityRecord.finishing && !activityRecord.containsListener(this)) { if (!activityRecord.finishing) { // Eligible activity is found, update listener. registerActivityConfigurationListener(activityRecord); return; Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +34 −0 Original line number Diff line number Diff line Loading @@ -1332,6 +1332,40 @@ public class ActivityRecordTests extends ActivityTestsBase { assertNotEquals(initialConf, wpc.getRequestedOverrideConfiguration()); } @Test public void testActivityDestroyDoesntChangeProcessOverride() { final ActivityRecord firstActivity = createActivityOnDisplay(true /* defaultDisplay */, null /* process */); final WindowProcessController wpc = firstActivity.app; assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, firstActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); final ActivityRecord secondActivity = createActivityOnDisplay(false /* defaultDisplay */, wpc); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, secondActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); final ActivityRecord thirdActivity = createActivityOnDisplay(false /* defaultDisplay */, wpc); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); secondActivity.destroyImmediately(true, ""); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); firstActivity.destroyImmediately(true, ""); assertTrue(wpc.registeredForActivityConfigChanges()); assertEquals(0, thirdActivity.getMergedOverrideConfiguration() .diff(wpc.getRequestedOverrideConfiguration())); } /** * Creates an activity on display. For non-default display request it will also create a new * display with custom DisplayInfo. Loading