Loading core/java/android/app/ActivityOptions.java +0 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,6 @@ public class ActivityOptions extends ComponentOptions { opts.mLaunchIntoPipParams = new PictureInPictureParams.Builder(pictureInPictureParams) .setIsLaunchIntoPip(true) .build(); opts.mLaunchBounds = new Rect(pictureInPictureParams.getSourceRectHint()); return opts; } Loading services/core/java/com/android/server/wm/ActivityRecord.java +16 −0 Original line number Diff line number Diff line Loading @@ -1993,6 +1993,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (options.getLaunchIntoPipParams() != null) { pictureInPictureArgs = options.getLaunchIntoPipParams(); if (sourceRecord != null) { adjustPictureInPictureParamsIfNeeded(sourceRecord.getBounds()); } } mOverrideTaskTransition = options.getOverrideTaskTransition(); Loading Loading @@ -9764,6 +9767,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void setPictureInPictureParams(PictureInPictureParams p) { pictureInPictureArgs.copyOnlySet(p); adjustPictureInPictureParamsIfNeeded(getBounds()); getTask().getRootTask().onPictureInPictureParamsChanged(); } Loading Loading @@ -9815,6 +9819,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return new Point(windowLayout.minWidth, windowLayout.minHeight); } /** * Adjust the source rect hint in {@link #pictureInPictureArgs} by window bounds since * it is relative to its root view (see also b/235599028). * It is caller's responsibility to make sure this is called exactly once when we update * {@link #pictureInPictureArgs} to avoid double offset. */ private void adjustPictureInPictureParamsIfNeeded(Rect windowBounds) { if (pictureInPictureArgs != null && pictureInPictureArgs.hasSourceBoundsHint()) { pictureInPictureArgs.getSourceRectHint().offset(windowBounds.left, windowBounds.top); } } static class Builder { private final ActivityTaskManagerService mAtmService; private WindowProcessController mCallerApp; Loading services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -2118,7 +2118,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // entering content-pip animation. mWindowManager.mTaskSnapshotController.recordTaskSnapshot( task, false /* allowSnapshotHome */); rootTask.setBounds(r.getOptions().getLaunchBounds()); rootTask.setBounds(r.pictureInPictureArgs.getSourceRectHint()); } rootTask.setDeferTaskAppear(false); Loading Loading
core/java/android/app/ActivityOptions.java +0 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,6 @@ public class ActivityOptions extends ComponentOptions { opts.mLaunchIntoPipParams = new PictureInPictureParams.Builder(pictureInPictureParams) .setIsLaunchIntoPip(true) .build(); opts.mLaunchBounds = new Rect(pictureInPictureParams.getSourceRectHint()); return opts; } Loading
services/core/java/com/android/server/wm/ActivityRecord.java +16 −0 Original line number Diff line number Diff line Loading @@ -1993,6 +1993,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (options.getLaunchIntoPipParams() != null) { pictureInPictureArgs = options.getLaunchIntoPipParams(); if (sourceRecord != null) { adjustPictureInPictureParamsIfNeeded(sourceRecord.getBounds()); } } mOverrideTaskTransition = options.getOverrideTaskTransition(); Loading Loading @@ -9764,6 +9767,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void setPictureInPictureParams(PictureInPictureParams p) { pictureInPictureArgs.copyOnlySet(p); adjustPictureInPictureParamsIfNeeded(getBounds()); getTask().getRootTask().onPictureInPictureParamsChanged(); } Loading Loading @@ -9815,6 +9819,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return new Point(windowLayout.minWidth, windowLayout.minHeight); } /** * Adjust the source rect hint in {@link #pictureInPictureArgs} by window bounds since * it is relative to its root view (see also b/235599028). * It is caller's responsibility to make sure this is called exactly once when we update * {@link #pictureInPictureArgs} to avoid double offset. */ private void adjustPictureInPictureParamsIfNeeded(Rect windowBounds) { if (pictureInPictureArgs != null && pictureInPictureArgs.hasSourceBoundsHint()) { pictureInPictureArgs.getSourceRectHint().offset(windowBounds.left, windowBounds.top); } } static class Builder { private final ActivityTaskManagerService mAtmService; private WindowProcessController mCallerApp; Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -2118,7 +2118,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> // entering content-pip animation. mWindowManager.mTaskSnapshotController.recordTaskSnapshot( task, false /* allowSnapshotHome */); rootTask.setBounds(r.getOptions().getLaunchBounds()); rootTask.setBounds(r.pictureInPictureArgs.getSourceRectHint()); } rootTask.setDeferTaskAppear(false); Loading