Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipDisplayTransferHandler.java +5 −3 Original line number Diff line number Diff line Loading @@ -108,8 +108,6 @@ public class PipDisplayTransferHandler implements @Override public void onPipTransitionStateChanged(@PipTransitionState.TransitionState int oldState, @PipTransitionState.TransitionState int newState, @Nullable Bundle extra) { if (extra == null) return; switch (newState) { case PipTransitionState.SCHEDULED_BOUNDS_CHANGE: if (!extra.containsKey(ORIGIN_DISPLAY_ID_KEY) || !extra.containsKey( Loading Loading @@ -182,6 +180,11 @@ public class PipDisplayTransferHandler implements }); animator.start(); break; case PipTransitionState.EXITED_PIP: ProtoLog.v(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s Exited PiP. Removing drag mirrors", TAG); removeMirrors(); break; } } Loading Loading @@ -239,7 +242,6 @@ public class PipDisplayTransferHandler implements /** * Remove all drag indicator mirrors from each connected display. */ // TODO(b/408982524): Remove mirrors on opening app while dragging public void removeMirrors() { final Transaction transaction = mSurfaceControlTransactionFactory.getTransaction(); for (SurfaceControl mirror : mOnDragMirrorPerDisplayId.values()) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipDisplayTransferHandlerTest.kt +20 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,26 @@ class PipDisplayTransferHandlerTest : ShellTestCase() { verify(mockPipResizeAnimator).start() } @Test fun onPipTransitionStateChanged_exitedPip_removesMirrors() { pipDisplayTransferHandler.mOnDragMirrorPerDisplayId = ArrayMap() pipDisplayTransferHandler.mOnDragMirrorPerDisplayId.apply { put(0, mockLeash) put(1, mockLeash) put(2, mockLeash) } pipDisplayTransferHandler.onPipTransitionStateChanged( UNDEFINED, EXITED_PIP, null ) verify(mockTransaction, times(3)).remove(any()) verify(mockTransaction, times(1)).apply() assertThat(pipDisplayTransferHandler.mOnDragMirrorPerDisplayId.isEmpty()).isTrue() } @Test fun showDragMirrorOnConnectedDisplays_hasNotLeftOriginDisplay_shouldNotCreateMirrors() { val globalDpBounds = MultiDisplayDragMoveBoundsCalculator.calculateGlobalDpBoundsForDrag( Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipDisplayTransferHandler.java +5 −3 Original line number Diff line number Diff line Loading @@ -108,8 +108,6 @@ public class PipDisplayTransferHandler implements @Override public void onPipTransitionStateChanged(@PipTransitionState.TransitionState int oldState, @PipTransitionState.TransitionState int newState, @Nullable Bundle extra) { if (extra == null) return; switch (newState) { case PipTransitionState.SCHEDULED_BOUNDS_CHANGE: if (!extra.containsKey(ORIGIN_DISPLAY_ID_KEY) || !extra.containsKey( Loading Loading @@ -182,6 +180,11 @@ public class PipDisplayTransferHandler implements }); animator.start(); break; case PipTransitionState.EXITED_PIP: ProtoLog.v(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s Exited PiP. Removing drag mirrors", TAG); removeMirrors(); break; } } Loading Loading @@ -239,7 +242,6 @@ public class PipDisplayTransferHandler implements /** * Remove all drag indicator mirrors from each connected display. */ // TODO(b/408982524): Remove mirrors on opening app while dragging public void removeMirrors() { final Transaction transaction = mSurfaceControlTransactionFactory.getTransaction(); for (SurfaceControl mirror : mOnDragMirrorPerDisplayId.values()) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipDisplayTransferHandlerTest.kt +20 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,26 @@ class PipDisplayTransferHandlerTest : ShellTestCase() { verify(mockPipResizeAnimator).start() } @Test fun onPipTransitionStateChanged_exitedPip_removesMirrors() { pipDisplayTransferHandler.mOnDragMirrorPerDisplayId = ArrayMap() pipDisplayTransferHandler.mOnDragMirrorPerDisplayId.apply { put(0, mockLeash) put(1, mockLeash) put(2, mockLeash) } pipDisplayTransferHandler.onPipTransitionStateChanged( UNDEFINED, EXITED_PIP, null ) verify(mockTransaction, times(3)).remove(any()) verify(mockTransaction, times(1)).apply() assertThat(pipDisplayTransferHandler.mOnDragMirrorPerDisplayId.isEmpty()).isTrue() } @Test fun showDragMirrorOnConnectedDisplays_hasNotLeftOriginDisplay_shouldNotCreateMirrors() { val globalDpBounds = MultiDisplayDragMoveBoundsCalculator.calculateGlobalDpBoundsForDrag( Loading