Loading services/core/java/com/android/server/wm/WindowOrganizerController.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -2661,10 +2661,19 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub private int deleteTaskFragment(@NonNull TaskFragment taskFragment, private int deleteTaskFragment(@NonNull TaskFragment taskFragment, @Nullable Transition transition) { @Nullable Transition transition) { if (transition != null) transition.collectExistenceChange(taskFragment); final boolean isEmpty = taskFragment.getNonFinishingActivityCount() == 0; if (transition != null && (taskFragment.isVisibleRequested() // In case to update existing change type. || transition.mChanges.containsKey(taskFragment))) { transition.collectExistenceChange(taskFragment); } mLaunchTaskFragments.remove(taskFragment.getFragmentToken()); mLaunchTaskFragments.remove(taskFragment.getFragmentToken()); taskFragment.remove(true /* withTransition */, "deleteTaskFragment"); taskFragment.remove(true /* withTransition */, "deleteTaskFragment"); if (isEmpty) { // The removal of an empty TaskFragment doesn't affect lifecycle. return 0; } return TRANSACT_EFFECTS_LIFECYCLE; return TRANSACT_EFFECTS_LIFECYCLE; } } Loading services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -638,6 +638,7 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase { @Test @Test public void testApplyTransaction_enforceHierarchyChange_deleteTaskFragment() { public void testApplyTransaction_enforceHierarchyChange_deleteTaskFragment() { doReturn(true).when(mTaskFragment).isAttached(); doReturn(true).when(mTaskFragment).isAttached(); doReturn(1).when(mTaskFragment).getNonFinishingActivityCount(); mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment); mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment); // Throw exception if the transaction is trying to change a window that is not organized by // Throw exception if the transaction is trying to change a window that is not organized by Loading Loading
services/core/java/com/android/server/wm/WindowOrganizerController.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -2661,10 +2661,19 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub private int deleteTaskFragment(@NonNull TaskFragment taskFragment, private int deleteTaskFragment(@NonNull TaskFragment taskFragment, @Nullable Transition transition) { @Nullable Transition transition) { if (transition != null) transition.collectExistenceChange(taskFragment); final boolean isEmpty = taskFragment.getNonFinishingActivityCount() == 0; if (transition != null && (taskFragment.isVisibleRequested() // In case to update existing change type. || transition.mChanges.containsKey(taskFragment))) { transition.collectExistenceChange(taskFragment); } mLaunchTaskFragments.remove(taskFragment.getFragmentToken()); mLaunchTaskFragments.remove(taskFragment.getFragmentToken()); taskFragment.remove(true /* withTransition */, "deleteTaskFragment"); taskFragment.remove(true /* withTransition */, "deleteTaskFragment"); if (isEmpty) { // The removal of an empty TaskFragment doesn't affect lifecycle. return 0; } return TRANSACT_EFFECTS_LIFECYCLE; return TRANSACT_EFFECTS_LIFECYCLE; } } Loading
services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -638,6 +638,7 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase { @Test @Test public void testApplyTransaction_enforceHierarchyChange_deleteTaskFragment() { public void testApplyTransaction_enforceHierarchyChange_deleteTaskFragment() { doReturn(true).when(mTaskFragment).isAttached(); doReturn(true).when(mTaskFragment).isAttached(); doReturn(1).when(mTaskFragment).getNonFinishingActivityCount(); mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment); mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment); // Throw exception if the transaction is trying to change a window that is not organized by // Throw exception if the transaction is trying to change a window that is not organized by Loading