Merge "Ensure process config override tracks the correct activity." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a5dc2651f3
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user