Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java +38 −7 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.graphics.Rect; import android.os.Bundle; import android.view.InsetsState; import android.view.SurfaceControl; import android.window.DisplayAreaInfo; import android.window.WindowContainerTransaction; import androidx.annotation.BinderThread; import androidx.annotation.Nullable; Loading @@ -40,6 +42,7 @@ import com.android.internal.protolog.ProtoLog; import com.android.internal.util.Preconditions; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayLayout; Loading Loading @@ -71,7 +74,8 @@ import java.util.function.Consumer; */ public class PipController implements ConfigurationChangeListener, PipTransitionState.PipTransitionStateChangedListener, DisplayController.OnDisplaysChangedListener, RemoteCallable<PipController> { DisplayController.OnDisplaysChangedListener, DisplayChangeController.OnDisplayChangingListener, RemoteCallable<PipController> { private static final String TAG = PipController.class.getSimpleName(); private static final String SWIPE_TO_PIP_APP_BOUNDS = "pip_app_bounds"; private static final String SWIPE_TO_PIP_OVERLAY = "swipe_to_pip_overlay"; Loading Loading @@ -197,11 +201,12 @@ public class PipController implements ConfigurationChangeListener, mPipDisplayLayoutState.setDisplayLayout(layout); mDisplayController.addDisplayWindowListener(this); mDisplayController.addDisplayChangingController(this); mDisplayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new DisplayInsetsController.OnInsetsChangedListener() { @Override public void insetsChanged(InsetsState insetsState) { onDisplayChanged(mDisplayController setDisplayLayout(mDisplayController .getDisplayLayout(mPipDisplayLayoutState.getDisplayId())); } }); Loading Loading @@ -264,11 +269,12 @@ public class PipController implements ConfigurationChangeListener, @Override public void onThemeChanged() { onDisplayChanged(new DisplayLayout(mContext, mContext.getDisplay())); setDisplayLayout(new DisplayLayout(mContext, mContext.getDisplay())); } // // DisplayController.OnDisplaysChangedListener implementations // DisplayController.OnDisplaysChangedListener and // DisplayChangeController.OnDisplayChangingListener implementations // @Override Loading @@ -276,7 +282,7 @@ public class PipController implements ConfigurationChangeListener, if (displayId != mPipDisplayLayoutState.getDisplayId()) { return; } onDisplayChanged(mDisplayController.getDisplayLayout(displayId)); setDisplayLayout(mDisplayController.getDisplayLayout(displayId)); } @Override Loading @@ -284,10 +290,35 @@ public class PipController implements ConfigurationChangeListener, if (displayId != mPipDisplayLayoutState.getDisplayId()) { return; } onDisplayChanged(mDisplayController.getDisplayLayout(displayId)); setDisplayLayout(mDisplayController.getDisplayLayout(displayId)); } private void onDisplayChanged(DisplayLayout layout) { /** * A callback for any observed transition that contains a display change in its * {@link android.window.TransitionRequestInfo} with a non-zero rotation delta. */ @Override public void onDisplayChange(int displayId, int fromRotation, int toRotation, @Nullable DisplayAreaInfo newDisplayAreaInfo, WindowContainerTransaction t) { if (!mPipTransitionState.isInPip()) { return; } // Calculate the snap fraction pre-rotation. float snapFraction = mPipBoundsAlgorithm.getSnapFraction(mPipBoundsState.getBounds()); // Update the caches to reflect the new display layout and movement bounds. mPipDisplayLayoutState.rotateTo(toRotation); mPipTouchHandler.updateMovementBounds(); // The policy is to keep PiP width, height and snap fraction invariant. Rect toBounds = mPipBoundsState.getBounds(); mPipBoundsAlgorithm.applySnapFraction(toBounds, snapFraction); mPipBoundsState.setBounds(toBounds); t.setBounds(mPipTransitionState.mPipTaskToken, toBounds); } private void setDisplayLayout(DisplayLayout layout) { mPipDisplayLayoutState.setDisplayLayout(layout); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -1081,7 +1081,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha * Updates the current movement bounds based on whether the menu is currently visible and * resized. */ private void updateMovementBounds() { void updateMovementBounds() { Rect insetBounds = new Rect(); mPipBoundsAlgorithm.getInsetBounds(insetBounds); mPipBoundsAlgorithm.getMovementBounds(mPipBoundsState.getBounds(), Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipController.java +38 −7 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.graphics.Rect; import android.os.Bundle; import android.view.InsetsState; import android.view.SurfaceControl; import android.window.DisplayAreaInfo; import android.window.WindowContainerTransaction; import androidx.annotation.BinderThread; import androidx.annotation.Nullable; Loading @@ -40,6 +42,7 @@ import com.android.internal.protolog.ProtoLog; import com.android.internal.util.Preconditions; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.DisplayLayout; Loading Loading @@ -71,7 +74,8 @@ import java.util.function.Consumer; */ public class PipController implements ConfigurationChangeListener, PipTransitionState.PipTransitionStateChangedListener, DisplayController.OnDisplaysChangedListener, RemoteCallable<PipController> { DisplayController.OnDisplaysChangedListener, DisplayChangeController.OnDisplayChangingListener, RemoteCallable<PipController> { private static final String TAG = PipController.class.getSimpleName(); private static final String SWIPE_TO_PIP_APP_BOUNDS = "pip_app_bounds"; private static final String SWIPE_TO_PIP_OVERLAY = "swipe_to_pip_overlay"; Loading Loading @@ -197,11 +201,12 @@ public class PipController implements ConfigurationChangeListener, mPipDisplayLayoutState.setDisplayLayout(layout); mDisplayController.addDisplayWindowListener(this); mDisplayController.addDisplayChangingController(this); mDisplayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new DisplayInsetsController.OnInsetsChangedListener() { @Override public void insetsChanged(InsetsState insetsState) { onDisplayChanged(mDisplayController setDisplayLayout(mDisplayController .getDisplayLayout(mPipDisplayLayoutState.getDisplayId())); } }); Loading Loading @@ -264,11 +269,12 @@ public class PipController implements ConfigurationChangeListener, @Override public void onThemeChanged() { onDisplayChanged(new DisplayLayout(mContext, mContext.getDisplay())); setDisplayLayout(new DisplayLayout(mContext, mContext.getDisplay())); } // // DisplayController.OnDisplaysChangedListener implementations // DisplayController.OnDisplaysChangedListener and // DisplayChangeController.OnDisplayChangingListener implementations // @Override Loading @@ -276,7 +282,7 @@ public class PipController implements ConfigurationChangeListener, if (displayId != mPipDisplayLayoutState.getDisplayId()) { return; } onDisplayChanged(mDisplayController.getDisplayLayout(displayId)); setDisplayLayout(mDisplayController.getDisplayLayout(displayId)); } @Override Loading @@ -284,10 +290,35 @@ public class PipController implements ConfigurationChangeListener, if (displayId != mPipDisplayLayoutState.getDisplayId()) { return; } onDisplayChanged(mDisplayController.getDisplayLayout(displayId)); setDisplayLayout(mDisplayController.getDisplayLayout(displayId)); } private void onDisplayChanged(DisplayLayout layout) { /** * A callback for any observed transition that contains a display change in its * {@link android.window.TransitionRequestInfo} with a non-zero rotation delta. */ @Override public void onDisplayChange(int displayId, int fromRotation, int toRotation, @Nullable DisplayAreaInfo newDisplayAreaInfo, WindowContainerTransaction t) { if (!mPipTransitionState.isInPip()) { return; } // Calculate the snap fraction pre-rotation. float snapFraction = mPipBoundsAlgorithm.getSnapFraction(mPipBoundsState.getBounds()); // Update the caches to reflect the new display layout and movement bounds. mPipDisplayLayoutState.rotateTo(toRotation); mPipTouchHandler.updateMovementBounds(); // The policy is to keep PiP width, height and snap fraction invariant. Rect toBounds = mPipBoundsState.getBounds(); mPipBoundsAlgorithm.applySnapFraction(toBounds, snapFraction); mPipBoundsState.setBounds(toBounds); t.setBounds(mPipTransitionState.mPipTaskToken, toBounds); } private void setDisplayLayout(DisplayLayout layout) { mPipDisplayLayoutState.setDisplayLayout(layout); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTouchHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -1081,7 +1081,7 @@ public class PipTouchHandler implements PipTransitionState.PipTransitionStateCha * Updates the current movement bounds based on whether the menu is currently visible and * resized. */ private void updateMovementBounds() { void updateMovementBounds() { Rect insetBounds = new Rect(); mPipBoundsAlgorithm.getInsetBounds(insetBounds); mPipBoundsAlgorithm.getMovementBounds(mPipBoundsState.getBounds(), Loading