Loading services/core/java/com/android/server/wm/LaunchParamsPersister.java +7 −2 Original line number Diff line number Diff line Loading @@ -232,6 +232,9 @@ class LaunchParamsPersister { void saveTask(Task task, DisplayContent display) { final ComponentName name = task.realActivity; if (name == null) { return; } final int userId = task.mUserId; PersistableLaunchParams params; ArrayMap<ComponentName, PersistableLaunchParams> map = mLaunchParamsMap.get(userId); Loading Loading @@ -385,9 +388,11 @@ class LaunchParamsPersister { @Override public void onPackageRemoved(String packageName, int uid) { synchronized (mSupervisor.mService.getGlobalLock()) { removeRecordForPackage(packageName); } } } private class LaunchParamsWriteQueueItem implements PersisterQueue.WriteQueueItem<LaunchParamsWriteQueueItem> { Loading services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java +14 −3 Original line number Diff line number Diff line Loading @@ -114,10 +114,10 @@ public class LaunchParamsPersisterTests extends WindowTestsBase { when(mRootWindowContainer.getDisplayContent(eq(mDisplayUniqueId))) .thenReturn(mTestDisplay); Task stack = mTestDisplay.getDefaultTaskDisplayArea() Task rootTask = mTestDisplay.getDefaultTaskDisplayArea() .createRootTask(TEST_WINDOWING_MODE, ACTIVITY_TYPE_STANDARD, /* onTop */ true); mTestTask = new TaskBuilder(mSupervisor).setComponent(TEST_COMPONENT).setParentTask(stack) .build(); mTestTask = new TaskBuilder(mSupervisor).setComponent(TEST_COMPONENT) .setParentTask(rootTask).build(); mTestTask.mUserId = TEST_USER_ID; mTestTask.mLastNonFullscreenBounds = TEST_BOUNDS; mTestTask.setHasBeenVisible(true); Loading Loading @@ -157,6 +157,17 @@ public class LaunchParamsPersisterTests extends WindowTestsBase { assertTrue("Default result should be empty.", mResult.isEmpty()); } @Test public void testSavingTestWithoutRealActivityWontMakePackageRemovalCrash() { Task rootTask = mTestDisplay.getDefaultTaskDisplayArea() .createRootTask(TEST_WINDOWING_MODE, ACTIVITY_TYPE_STANDARD, /* onTop */ true); assertNull(rootTask.realActivity); mTarget.saveTask(rootTask); mTarget.removeRecordForPackage(TEST_COMPONENT.getPackageName()); } @Test public void testSavesAndRestoresLaunchParamsInSameInstance() { mTarget.saveTask(mTestTask); Loading Loading
services/core/java/com/android/server/wm/LaunchParamsPersister.java +7 −2 Original line number Diff line number Diff line Loading @@ -232,6 +232,9 @@ class LaunchParamsPersister { void saveTask(Task task, DisplayContent display) { final ComponentName name = task.realActivity; if (name == null) { return; } final int userId = task.mUserId; PersistableLaunchParams params; ArrayMap<ComponentName, PersistableLaunchParams> map = mLaunchParamsMap.get(userId); Loading Loading @@ -385,9 +388,11 @@ class LaunchParamsPersister { @Override public void onPackageRemoved(String packageName, int uid) { synchronized (mSupervisor.mService.getGlobalLock()) { removeRecordForPackage(packageName); } } } private class LaunchParamsWriteQueueItem implements PersisterQueue.WriteQueueItem<LaunchParamsWriteQueueItem> { Loading
services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java +14 −3 Original line number Diff line number Diff line Loading @@ -114,10 +114,10 @@ public class LaunchParamsPersisterTests extends WindowTestsBase { when(mRootWindowContainer.getDisplayContent(eq(mDisplayUniqueId))) .thenReturn(mTestDisplay); Task stack = mTestDisplay.getDefaultTaskDisplayArea() Task rootTask = mTestDisplay.getDefaultTaskDisplayArea() .createRootTask(TEST_WINDOWING_MODE, ACTIVITY_TYPE_STANDARD, /* onTop */ true); mTestTask = new TaskBuilder(mSupervisor).setComponent(TEST_COMPONENT).setParentTask(stack) .build(); mTestTask = new TaskBuilder(mSupervisor).setComponent(TEST_COMPONENT) .setParentTask(rootTask).build(); mTestTask.mUserId = TEST_USER_ID; mTestTask.mLastNonFullscreenBounds = TEST_BOUNDS; mTestTask.setHasBeenVisible(true); Loading Loading @@ -157,6 +157,17 @@ public class LaunchParamsPersisterTests extends WindowTestsBase { assertTrue("Default result should be empty.", mResult.isEmpty()); } @Test public void testSavingTestWithoutRealActivityWontMakePackageRemovalCrash() { Task rootTask = mTestDisplay.getDefaultTaskDisplayArea() .createRootTask(TEST_WINDOWING_MODE, ACTIVITY_TYPE_STANDARD, /* onTop */ true); assertNull(rootTask.realActivity); mTarget.saveTask(rootTask); mTarget.removeRecordForPackage(TEST_COMPONENT.getPackageName()); } @Test public void testSavesAndRestoresLaunchParamsInSameInstance() { mTarget.saveTask(mTestTask); Loading