Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +16 −11 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import com.android.internal.os.SomeArgs; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.phone.PipMenuActivityController; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipUpdateThread; Loading Loading @@ -137,7 +136,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final PipBoundsState mPipBoundsState; private final PipBoundsHandler mPipBoundsHandler; private final PipMenuActivityController mMenuActivityController; private final SystemWindows mSystemWindows; private final PipAnimationController mPipAnimationController; private final PipUiEventLogger mPipUiEventLoggerLogger; private final List<PipTransitionCallback> mPipTransitionCallbacks = new ArrayList<>(); Loading Loading @@ -270,14 +268,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, Optional<SplitScreen> splitScreenOptional, @NonNull DisplayController displayController, @NonNull PipUiEventLogger pipUiEventLogger, @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull SystemWindows systemWindows) { @NonNull ShellTaskOrganizer shellTaskOrganizer) { mMainHandler = new Handler(Looper.getMainLooper()); mUpdateHandler = new Handler(PipUpdateThread.get().getLooper(), mUpdateCallbacks); mPipBoundsState = pipBoundsState; mPipBoundsHandler = boundsHandler; mMenuActivityController = menuActivityController; mSystemWindows = systemWindows; mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); mSurfaceTransactionHelper = surfaceTransactionHelper; Loading Loading @@ -499,9 +495,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } if (mShouldIgnoreEnteringPipTransition) { final Rect destinationBounds = mPipBoundsState.getBounds(); // animation is finished in the Launcher and here we directly apply the final touch. applyEnterPipSyncTransaction(mPipBoundsState.getBounds(), () -> sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP)); applyEnterPipSyncTransaction(destinationBounds, () -> { // ensure menu's settled in its final bounds first finishResizeForMenu(destinationBounds); sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); }); mShouldIgnoreEnteringPipTransition = false; return; } Loading Loading @@ -995,16 +995,21 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, return; } else if (isInPipDirection(direction) && type == ANIM_TYPE_ALPHA) { // TODO: Synchronize this correctly in #applyEnterPipSyncTransaction runOnMainHandler(() -> { mMenuActivityController.movePipMenu(null, null, destinationBounds); mMenuActivityController.updateMenuBounds(destinationBounds); }); finishResizeForMenu(destinationBounds); return; } WindowContainerTransaction wct = new WindowContainerTransaction(); prepareFinishResizeTransaction(destinationBounds, direction, tx, wct); applyFinishBoundsResize(wct, direction); finishResizeForMenu(destinationBounds); } private void finishResizeForMenu(Rect destinationBounds) { if (mMenuActivityController == null) { if (DEBUG) Log.d(TAG, "mMenuActivityController is null"); return; } runOnMainHandler(() -> { mMenuActivityController.movePipMenu(null, null, destinationBounds); mMenuActivityController.updateMenuBounds(destinationBounds); Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java +2 −2 Original line number Diff line number Diff line Loading @@ -305,8 +305,8 @@ public class PipMenuActivityController { } private boolean maybeCreateSyncApplier() { if (mPipMenuView == null) { Log.v(TAG, "Not going to move PiP since the menu is not created."); if (mPipMenuView == null || mPipMenuView.getViewRootImpl() == null) { Log.v(TAG, "Not going to move PiP, either menu or its parent is not created."); return false; } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java +1 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.window.WindowContainerToken; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.phone.PipMenuActivityController; import com.android.wm.shell.splitscreen.SplitScreen; Loading Loading @@ -69,7 +68,6 @@ public class PipTaskOrganizerTest extends PipTestCase { @Mock private PipUiEventLogger mMockPipUiEventLogger; @Mock private Optional<SplitScreen> mMockOptionalSplitScreen; @Mock private ShellTaskOrganizer mMockShellTaskOrganizer; @Mock private SystemWindows mSystemWindows; private PipBoundsState mPipBoundsState; private ComponentName mComponent1; Loading @@ -84,7 +82,7 @@ public class PipTaskOrganizerTest extends PipTestCase { mSpiedPipTaskOrganizer = spy(new PipTaskOrganizer(mContext, mPipBoundsState, mMockPipBoundsHandler, mMenuActivityController, mMockPipSurfaceTransactionHelper, mMockOptionalSplitScreen, mMockdDisplayController, mMockPipUiEventLogger, mMockShellTaskOrganizer, mSystemWindows)); mMockShellTaskOrganizer)); preparePipTaskOrg(); } Loading packages/SystemUI/src/com/android/systemui/wmshell/TvPipModule.java +2 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.android.systemui.dagger.WMSingleton; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipBoundsHandler; import com.android.wm.shell.pip.PipBoundsState; Loading Loading @@ -107,10 +106,9 @@ public abstract class TvPipModule { PipBoundsHandler pipBoundsHandler, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreen> splitScreenOptional, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, SystemWindows systemWindows) { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { return new PipTaskOrganizer(context, pipBoundsState, pipBoundsHandler, null /* menuActivityController */, pipSurfaceTransactionHelper, splitScreenOptional, displayController, pipUiEventLogger, shellTaskOrganizer, systemWindows); displayController, pipUiEventLogger, shellTaskOrganizer); } } packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java +2 −3 Original line number Diff line number Diff line Loading @@ -131,10 +131,9 @@ public class WMShellModule { PipMenuActivityController menuActivityController, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreen> splitScreenOptional, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, SystemWindows systemWindows) { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { return new PipTaskOrganizer(context, pipBoundsState, pipBoundsHandler, menuActivityController, pipSurfaceTransactionHelper, splitScreenOptional, displayController, pipUiEventLogger, shellTaskOrganizer, systemWindows); displayController, pipUiEventLogger, shellTaskOrganizer); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +16 −11 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import com.android.internal.os.SomeArgs; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.phone.PipMenuActivityController; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipUpdateThread; Loading Loading @@ -137,7 +136,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private final PipBoundsState mPipBoundsState; private final PipBoundsHandler mPipBoundsHandler; private final PipMenuActivityController mMenuActivityController; private final SystemWindows mSystemWindows; private final PipAnimationController mPipAnimationController; private final PipUiEventLogger mPipUiEventLoggerLogger; private final List<PipTransitionCallback> mPipTransitionCallbacks = new ArrayList<>(); Loading Loading @@ -270,14 +268,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, Optional<SplitScreen> splitScreenOptional, @NonNull DisplayController displayController, @NonNull PipUiEventLogger pipUiEventLogger, @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull SystemWindows systemWindows) { @NonNull ShellTaskOrganizer shellTaskOrganizer) { mMainHandler = new Handler(Looper.getMainLooper()); mUpdateHandler = new Handler(PipUpdateThread.get().getLooper(), mUpdateCallbacks); mPipBoundsState = pipBoundsState; mPipBoundsHandler = boundsHandler; mMenuActivityController = menuActivityController; mSystemWindows = systemWindows; mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); mSurfaceTransactionHelper = surfaceTransactionHelper; Loading Loading @@ -499,9 +495,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, } if (mShouldIgnoreEnteringPipTransition) { final Rect destinationBounds = mPipBoundsState.getBounds(); // animation is finished in the Launcher and here we directly apply the final touch. applyEnterPipSyncTransaction(mPipBoundsState.getBounds(), () -> sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP)); applyEnterPipSyncTransaction(destinationBounds, () -> { // ensure menu's settled in its final bounds first finishResizeForMenu(destinationBounds); sendOnPipTransitionFinished(TRANSITION_DIRECTION_TO_PIP); }); mShouldIgnoreEnteringPipTransition = false; return; } Loading Loading @@ -995,16 +995,21 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, return; } else if (isInPipDirection(direction) && type == ANIM_TYPE_ALPHA) { // TODO: Synchronize this correctly in #applyEnterPipSyncTransaction runOnMainHandler(() -> { mMenuActivityController.movePipMenu(null, null, destinationBounds); mMenuActivityController.updateMenuBounds(destinationBounds); }); finishResizeForMenu(destinationBounds); return; } WindowContainerTransaction wct = new WindowContainerTransaction(); prepareFinishResizeTransaction(destinationBounds, direction, tx, wct); applyFinishBoundsResize(wct, direction); finishResizeForMenu(destinationBounds); } private void finishResizeForMenu(Rect destinationBounds) { if (mMenuActivityController == null) { if (DEBUG) Log.d(TAG, "mMenuActivityController is null"); return; } runOnMainHandler(() -> { mMenuActivityController.movePipMenu(null, null, destinationBounds); mMenuActivityController.updateMenuBounds(destinationBounds); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java +2 −2 Original line number Diff line number Diff line Loading @@ -305,8 +305,8 @@ public class PipMenuActivityController { } private boolean maybeCreateSyncApplier() { if (mPipMenuView == null) { Log.v(TAG, "Not going to move PiP since the menu is not created."); if (mPipMenuView == null || mPipMenuView.getViewRootImpl() == null) { Log.v(TAG, "Not going to move PiP, either menu or its parent is not created."); return false; } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java +1 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,6 @@ import android.window.WindowContainerToken; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.phone.PipMenuActivityController; import com.android.wm.shell.splitscreen.SplitScreen; Loading Loading @@ -69,7 +68,6 @@ public class PipTaskOrganizerTest extends PipTestCase { @Mock private PipUiEventLogger mMockPipUiEventLogger; @Mock private Optional<SplitScreen> mMockOptionalSplitScreen; @Mock private ShellTaskOrganizer mMockShellTaskOrganizer; @Mock private SystemWindows mSystemWindows; private PipBoundsState mPipBoundsState; private ComponentName mComponent1; Loading @@ -84,7 +82,7 @@ public class PipTaskOrganizerTest extends PipTestCase { mSpiedPipTaskOrganizer = spy(new PipTaskOrganizer(mContext, mPipBoundsState, mMockPipBoundsHandler, mMenuActivityController, mMockPipSurfaceTransactionHelper, mMockOptionalSplitScreen, mMockdDisplayController, mMockPipUiEventLogger, mMockShellTaskOrganizer, mSystemWindows)); mMockShellTaskOrganizer)); preparePipTaskOrg(); } Loading
packages/SystemUI/src/com/android/systemui/wmshell/TvPipModule.java +2 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.android.systemui.dagger.WMSingleton; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipBoundsHandler; import com.android.wm.shell.pip.PipBoundsState; Loading Loading @@ -107,10 +106,9 @@ public abstract class TvPipModule { PipBoundsHandler pipBoundsHandler, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreen> splitScreenOptional, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, SystemWindows systemWindows) { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { return new PipTaskOrganizer(context, pipBoundsState, pipBoundsHandler, null /* menuActivityController */, pipSurfaceTransactionHelper, splitScreenOptional, displayController, pipUiEventLogger, shellTaskOrganizer, systemWindows); displayController, pipUiEventLogger, shellTaskOrganizer); } }
packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java +2 −3 Original line number Diff line number Diff line Loading @@ -131,10 +131,9 @@ public class WMShellModule { PipMenuActivityController menuActivityController, PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional<SplitScreen> splitScreenOptional, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, SystemWindows systemWindows) { PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { return new PipTaskOrganizer(context, pipBoundsState, pipBoundsHandler, menuActivityController, pipSurfaceTransactionHelper, splitScreenOptional, displayController, pipUiEventLogger, shellTaskOrganizer, systemWindows); displayController, pipUiEventLogger, shellTaskOrganizer); } }