Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +4 −0 Original line number Diff line number Diff line Loading @@ -4873,6 +4873,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { return; } if (isInPictureInPictureMode(activity)) { throw new IllegalStateException("Activity is already in PIP mode"); } final boolean canEnterPictureInPicture = activity.checkEnterPictureInPictureState( "requestPictureInPictureMode", /* beforeStopping */ false); if (!canEnterPictureInPicture) { Loading services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java +14 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.server.wm; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; Loading Loading @@ -111,7 +110,7 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); final ActivityRecord activity = stack.getBottomMostTask().getTopNonFinishingActivity(); ClientLifecycleManager lifecycleManager = mService.getLifecycleManager(); doNothing().when(lifecycleManager).scheduleTransaction(any()); doReturn(false).when(activity).inPinnedWindowingMode(); doReturn(false).when(activity).checkEnterPictureInPictureState(anyString(), anyBoolean()); mService.requestPictureInPictureMode(activity.token); Loading @@ -120,6 +119,19 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase { verify(lifecycleManager, times(0)).scheduleTransaction(any()); } @Test(expected = IllegalStateException.class) public void testOnPictureInPictureRequested_alreadyInPIPMode() throws RemoteException { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); final ActivityRecord activity = stack.getBottomMostTask().getTopNonFinishingActivity(); ClientLifecycleManager lifecycleManager = mService.getLifecycleManager(); doReturn(true).when(activity).inPinnedWindowingMode(); mService.requestPictureInPictureMode(activity.token); // Check that no transactions with enter pip requests are made. verify(lifecycleManager, times(0)).scheduleTransaction(any()); } @Test public void testDisplayWindowListener() { final ArrayList<Integer> added = new ArrayList<>(); Loading Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +4 −0 Original line number Diff line number Diff line Loading @@ -4873,6 +4873,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { return; } if (isInPictureInPictureMode(activity)) { throw new IllegalStateException("Activity is already in PIP mode"); } final boolean canEnterPictureInPicture = activity.checkEnterPictureInPictureState( "requestPictureInPictureMode", /* beforeStopping */ false); if (!canEnterPictureInPicture) { Loading
services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java +14 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.server.wm; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; Loading Loading @@ -111,7 +110,7 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); final ActivityRecord activity = stack.getBottomMostTask().getTopNonFinishingActivity(); ClientLifecycleManager lifecycleManager = mService.getLifecycleManager(); doNothing().when(lifecycleManager).scheduleTransaction(any()); doReturn(false).when(activity).inPinnedWindowingMode(); doReturn(false).when(activity).checkEnterPictureInPictureState(anyString(), anyBoolean()); mService.requestPictureInPictureMode(activity.token); Loading @@ -120,6 +119,19 @@ public class ActivityTaskManagerServiceTests extends ActivityTestsBase { verify(lifecycleManager, times(0)).scheduleTransaction(any()); } @Test(expected = IllegalStateException.class) public void testOnPictureInPictureRequested_alreadyInPIPMode() throws RemoteException { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); final ActivityRecord activity = stack.getBottomMostTask().getTopNonFinishingActivity(); ClientLifecycleManager lifecycleManager = mService.getLifecycleManager(); doReturn(true).when(activity).inPinnedWindowingMode(); mService.requestPictureInPictureMode(activity.token); // Check that no transactions with enter pip requests are made. verify(lifecycleManager, times(0)).scheduleTransaction(any()); } @Test public void testDisplayWindowListener() { final ArrayList<Integer> added = new ArrayList<>(); Loading