Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +2 −1 Original line number Diff line number Diff line Loading @@ -212,12 +212,13 @@ public abstract class Pip1Module { @WMSingleton @Provides static PipMotionHelper providePipMotionHelper(Context context, @ShellMainThread ShellExecutor mainExecutor, PipBoundsState pipBoundsState, PipTaskOrganizer pipTaskOrganizer, PhonePipMenuController menuController, PipSnapAlgorithm pipSnapAlgorithm, PipTransitionController pipTransitionController, FloatingContentCoordinator floatingContentCoordinator, Optional<PipPerfHintController> pipPerfHintControllerOptional) { return new PipMotionHelper(context, pipBoundsState, pipTaskOrganizer, return new PipMotionHelper(context, mainExecutor, pipBoundsState, pipTaskOrganizer, menuController, pipSnapAlgorithm, pipTransitionController, floatingContentCoordinator, pipPerfHintControllerOptional); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/Pip.java +7 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.wm.shell.pip; import android.annotation.NonNull; import android.graphics.Rect; import com.android.wm.shell.shared.annotations.ExternalThread; import java.util.concurrent.Executor; import java.util.function.Consumer; /** Loading Loading @@ -69,9 +71,10 @@ public interface Pip { default void removePipExclusionBoundsChangeListener(Consumer<Rect> listener) { } /** * @return {@link PipTransitionController} instance. * Register {@link PipTransitionController.PipTransitionCallback} to listen on PiP transition * started / finished callbacks. */ default PipTransitionController getPipTransitionController() { return null; } default void registerPipTransitionCallback( @NonNull PipTransitionController.PipTransitionCallback callback, @NonNull Executor executor) { } } libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +2 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, }); mPipTransitionController.setPipOrganizer(this); displayController.addDisplayWindowListener(this); pipTransitionController.registerPipTransitionCallback(mPipTransitionCallback); pipTransitionController.registerPipTransitionCallback( mPipTransitionCallback, mMainExecutor); } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java +19 −14 Original line number Diff line number Diff line Loading @@ -53,8 +53,9 @@ import com.android.wm.shell.transition.DefaultMixedHandler; import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executor; /** * Responsible supplying PiP Transitions. Loading @@ -66,7 +67,7 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected final ShellTaskOrganizer mShellTaskOrganizer; protected final PipMenuController mPipMenuController; protected final Transitions mTransitions; private final List<PipTransitionCallback> mPipTransitionCallbacks = new ArrayList<>(); private final Map<PipTransitionCallback, Executor> mPipTransitionCallbacks = new HashMap<>(); protected PipTaskOrganizer mPipOrganizer; protected DefaultMixedHandler mMixedHandler; Loading Loading @@ -181,16 +182,18 @@ public abstract class PipTransitionController implements Transitions.TransitionH /** * Registers {@link PipTransitionCallback} to receive transition callbacks. */ public void registerPipTransitionCallback(PipTransitionCallback callback) { mPipTransitionCallbacks.add(callback); public void registerPipTransitionCallback( @NonNull PipTransitionCallback callback, @NonNull Executor executor) { mPipTransitionCallbacks.put(callback, executor); } protected void sendOnPipTransitionStarted( @PipAnimationController.TransitionDirection int direction) { final Rect pipBounds = mPipBoundsState.getBounds(); for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionStarted(direction, pipBounds); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionStarted(direction, pipBounds)); } if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) { try { Loading @@ -207,9 +210,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected void sendOnPipTransitionFinished( @PipAnimationController.TransitionDirection int direction) { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionFinished(direction); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionFinished(direction)); } if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) { try { Loading @@ -226,9 +230,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected void sendOnPipTransitionCancelled( @PipAnimationController.TransitionDirection int direction) { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionCanceled(direction); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionCanceled(direction)); } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +7 −3 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.Consumer; /** Loading Loading @@ -487,7 +488,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb mShellCommandHandler.addDumpCallback(this::dump, this); mPipInputConsumer = new PipInputConsumer(WindowManagerGlobal.getWindowManagerService(), INPUT_CONSUMER_PIP, mMainExecutor); mPipTransitionController.registerPipTransitionCallback(this); mPipTransitionController.registerPipTransitionCallback(this, mMainExecutor); mPipTaskOrganizer.registerOnDisplayIdChangeCallback((int displayId) -> { mPipDisplayLayoutState.setDisplayId(displayId); onDisplayChanged(mDisplayController.getDisplayLayout(displayId), Loading Loading @@ -1229,8 +1230,11 @@ public class PipController implements PipTransitionController.PipTransitionCallb } @Override public PipTransitionController getPipTransitionController() { return mPipTransitionController; public void registerPipTransitionCallback( PipTransitionController.PipTransitionCallback callback, Executor executor) { mMainExecutor.execute(() -> mPipTransitionController.registerPipTransitionCallback( callback, executor)); } } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +2 −1 Original line number Diff line number Diff line Loading @@ -212,12 +212,13 @@ public abstract class Pip1Module { @WMSingleton @Provides static PipMotionHelper providePipMotionHelper(Context context, @ShellMainThread ShellExecutor mainExecutor, PipBoundsState pipBoundsState, PipTaskOrganizer pipTaskOrganizer, PhonePipMenuController menuController, PipSnapAlgorithm pipSnapAlgorithm, PipTransitionController pipTransitionController, FloatingContentCoordinator floatingContentCoordinator, Optional<PipPerfHintController> pipPerfHintControllerOptional) { return new PipMotionHelper(context, pipBoundsState, pipTaskOrganizer, return new PipMotionHelper(context, mainExecutor, pipBoundsState, pipTaskOrganizer, menuController, pipSnapAlgorithm, pipTransitionController, floatingContentCoordinator, pipPerfHintControllerOptional); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/Pip.java +7 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.wm.shell.pip; import android.annotation.NonNull; import android.graphics.Rect; import com.android.wm.shell.shared.annotations.ExternalThread; import java.util.concurrent.Executor; import java.util.function.Consumer; /** Loading Loading @@ -69,9 +71,10 @@ public interface Pip { default void removePipExclusionBoundsChangeListener(Consumer<Rect> listener) { } /** * @return {@link PipTransitionController} instance. * Register {@link PipTransitionController.PipTransitionCallback} to listen on PiP transition * started / finished callbacks. */ default PipTransitionController getPipTransitionController() { return null; } default void registerPipTransitionCallback( @NonNull PipTransitionController.PipTransitionCallback callback, @NonNull Executor executor) { } }
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +2 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, }); mPipTransitionController.setPipOrganizer(this); displayController.addDisplayWindowListener(this); pipTransitionController.registerPipTransitionCallback(mPipTransitionCallback); pipTransitionController.registerPipTransitionCallback( mPipTransitionCallback, mMainExecutor); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java +19 −14 Original line number Diff line number Diff line Loading @@ -53,8 +53,9 @@ import com.android.wm.shell.transition.DefaultMixedHandler; import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executor; /** * Responsible supplying PiP Transitions. Loading @@ -66,7 +67,7 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected final ShellTaskOrganizer mShellTaskOrganizer; protected final PipMenuController mPipMenuController; protected final Transitions mTransitions; private final List<PipTransitionCallback> mPipTransitionCallbacks = new ArrayList<>(); private final Map<PipTransitionCallback, Executor> mPipTransitionCallbacks = new HashMap<>(); protected PipTaskOrganizer mPipOrganizer; protected DefaultMixedHandler mMixedHandler; Loading Loading @@ -181,16 +182,18 @@ public abstract class PipTransitionController implements Transitions.TransitionH /** * Registers {@link PipTransitionCallback} to receive transition callbacks. */ public void registerPipTransitionCallback(PipTransitionCallback callback) { mPipTransitionCallbacks.add(callback); public void registerPipTransitionCallback( @NonNull PipTransitionCallback callback, @NonNull Executor executor) { mPipTransitionCallbacks.put(callback, executor); } protected void sendOnPipTransitionStarted( @PipAnimationController.TransitionDirection int direction) { final Rect pipBounds = mPipBoundsState.getBounds(); for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionStarted(direction, pipBounds); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionStarted(direction, pipBounds)); } if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) { try { Loading @@ -207,9 +210,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected void sendOnPipTransitionFinished( @PipAnimationController.TransitionDirection int direction) { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionFinished(direction); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionFinished(direction)); } if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) { try { Loading @@ -226,9 +230,10 @@ public abstract class PipTransitionController implements Transitions.TransitionH protected void sendOnPipTransitionCancelled( @PipAnimationController.TransitionDirection int direction) { for (int i = mPipTransitionCallbacks.size() - 1; i >= 0; i--) { final PipTransitionCallback callback = mPipTransitionCallbacks.get(i); callback.onPipTransitionCanceled(direction); for (Map.Entry<PipTransitionCallback, Executor> entry : mPipTransitionCallbacks.entrySet()) { entry.getValue().execute( () -> entry.getKey().onPipTransitionCanceled(direction)); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +7 −3 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.Executor; import java.util.function.Consumer; /** Loading Loading @@ -487,7 +488,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb mShellCommandHandler.addDumpCallback(this::dump, this); mPipInputConsumer = new PipInputConsumer(WindowManagerGlobal.getWindowManagerService(), INPUT_CONSUMER_PIP, mMainExecutor); mPipTransitionController.registerPipTransitionCallback(this); mPipTransitionController.registerPipTransitionCallback(this, mMainExecutor); mPipTaskOrganizer.registerOnDisplayIdChangeCallback((int displayId) -> { mPipDisplayLayoutState.setDisplayId(displayId); onDisplayChanged(mDisplayController.getDisplayLayout(displayId), Loading Loading @@ -1229,8 +1230,11 @@ public class PipController implements PipTransitionController.PipTransitionCallb } @Override public PipTransitionController getPipTransitionController() { return mPipTransitionController; public void registerPipTransitionCallback( PipTransitionController.PipTransitionCallback callback, Executor executor) { mMainExecutor.execute(() -> mPipTransitionController.registerPipTransitionCallback( callback, executor)); } } Loading