diff options
| author | 2022-03-16 14:48:19 +0000 | |
|---|---|---|
| committer | 2022-03-16 14:48:19 +0000 | |
| commit | aa61eeefa7a5a90f4d277c8a134ba697a44a4dcb (patch) | |
| tree | 90e27804d347e8fa460a561d01a2f8fc6744fe4b | |
| parent | be65de9fc09c9276df47f1115947b8a6401f1596 (diff) | |
| parent | dce27c482268ec58ace47c14379b112c7e642136 (diff) | |
Merge "Add symmetric Getters to PictureInPictureParams" into tm-dev
9 files changed, 84 insertions, 46 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 2a0867f30b93..24d48ab5996a 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -6645,6 +6645,15 @@ package android.app { public final class PictureInPictureParams implements android.os.Parcelable { method public int describeContents(); + method @NonNull public java.util.List<android.app.RemoteAction> getActions(); + method @Nullable public android.util.Rational getAspectRatio(); + method @Nullable public android.app.RemoteAction getCloseAction(); + method @Nullable public android.util.Rational getExpandedAspectRatio(); + method @Nullable public android.graphics.Rect getSourceRectHint(); + method @Nullable public CharSequence getSubtitle(); + method @Nullable public CharSequence getTitle(); + method public boolean isAutoEnterEnabled(); + method public boolean isSeamlessResizeEnabled(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureParams> CREATOR; } diff --git a/core/api/test-current.txt b/core/api/test-current.txt index db95a1feec91..2e8bed32665c 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -356,14 +356,8 @@ package android.app { } public final class PictureInPictureParams implements android.os.Parcelable { - method public java.util.List<android.app.RemoteAction> getActions(); - method public float getAspectRatio(); - method @Nullable public android.app.RemoteAction getCloseAction(); - method public float getExpandedAspectRatio(); - method public android.graphics.Rect getSourceRectHint(); - method @Nullable public CharSequence getSubtitle(); - method @Nullable public CharSequence getTitle(); - method public boolean isSeamlessResizeEnabled(); + method public float getAspectRatioFloat(); + method public float getExpandedAspectRatioFloat(); } public final class PictureInPictureUiState implements android.os.Parcelable { diff --git a/core/java/android/app/PictureInPictureParams.java b/core/java/android/app/PictureInPictureParams.java index 2d2788ca91a3..3f1844e2ba8a 100644 --- a/core/java/android/app/PictureInPictureParams.java +++ b/core/java/android/app/PictureInPictureParams.java @@ -280,7 +280,7 @@ public final class PictureInPictureParams implements Parcelable { private Rational mAspectRatio; /** - * The expected aspect ratio of the vertically expanded picture-in-picture window. + * The expected aspect ratio of the expanded picture-in-picture window. */ @Nullable private Rational mExpandedAspectRatio; @@ -441,15 +441,21 @@ public final class PictureInPictureParams implements Parcelable { * @hide */ @TestApi - public float getAspectRatio() { + public float getAspectRatioFloat() { if (mAspectRatio != null) { return mAspectRatio.floatValue(); } return 0f; } - /** @hide */ - public Rational getAspectRatioRational() { + /** + * Returns the expected aspect ratio of the picture-in-picture window. + * + * @return aspect ratio as the desired width / height or {@code null} if not set. + * @see PictureInPictureParams.Builder#setAspectRatio(Rational) + */ + @Nullable + public Rational getAspectRatio() { return mAspectRatio; } @@ -466,7 +472,7 @@ public final class PictureInPictureParams implements Parcelable { * @hide */ @TestApi - public float getExpandedAspectRatio() { + public float getExpandedAspectRatioFloat() { if (mExpandedAspectRatio != null) { return mExpandedAspectRatio.floatValue(); } @@ -474,6 +480,17 @@ public final class PictureInPictureParams implements Parcelable { } /** + * Returns the desired aspect ratio of the expanded picture-in-picture window. + * + * @return aspect ratio as the desired width / height or {@code null} if not set. + * @see PictureInPictureParams.Builder#setExpandedAspectRatio(Rational) + */ + @Nullable + public Rational getExpandedAspectRatio() { + return mExpandedAspectRatio; + } + + /** * @return whether the expanded aspect ratio is set * @hide */ @@ -482,11 +499,17 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return the set of user actions. - * @hide + * Returns the list of user actions that are associated with the activity when in + * picture-in-picture mode. + * + * @return the user actions in a new list. + * @see PictureInPictureParams.Builder#setActions(List) */ - @TestApi + @NonNull public List<RemoteAction> getActions() { + if (mUserActions == null) { + return new ArrayList<>(); + } return mUserActions; } @@ -499,10 +522,11 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return the close action. - * @hide + * Returns the action that is to replace the system close action. + * + * @return the close action or {@code null} if not set. + * @see PictureInPictureParams.Builder#setCloseAction(RemoteAction) */ - @TestApi @Nullable public RemoteAction getCloseAction() { return mCloseAction; @@ -528,10 +552,12 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return the source rect hint - * @hide + * Returns the source rect hint. + * + * @return the source rect hint also known as launch bounds or {@code null} if not set. + * @see PictureInPictureParams.Builder#setSourceRectHint(Rect) */ - @TestApi + @Nullable public Rect getSourceRectHint() { return mSourceRectHint; } @@ -545,18 +571,23 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return whether auto pip is enabled. - * @hide + * Returns whether auto enter picture-in-picture is enabled. + * + * @return {@code true} if the system will automatically put the activity in + * picture-in-picture mode. + * @see PictureInPictureParams.Builder#setAutoEnterEnabled(boolean) */ public boolean isAutoEnterEnabled() { return mAutoEnterEnabled == null ? false : mAutoEnterEnabled; } /** - * @return whether seamless resize is enabled. - * @hide + * Returns whether seamless resize is enabled. + * + * @return true if the system can seamlessly resize the window while activity is in + * picture-in-picture mode. + * @see PictureInPictureParams.Builder#setSeamlessResizeEnabled(boolean) */ - @TestApi public boolean isSeamlessResizeEnabled() { return mSeamlessResizeEnabled == null ? true : mSeamlessResizeEnabled; } @@ -570,10 +601,11 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return title of the pip. - * @hide + * Returns the title of the picture-in-picture window that may be displayed to the user. + * + * @return title of the picture-in-picture window. + * @see PictureInPictureParams.Builder#setTitle(CharSequence) */ - @TestApi @Nullable public CharSequence getTitle() { return mTitle; @@ -588,10 +620,11 @@ public final class PictureInPictureParams implements Parcelable { } /** - * @return subtitle of the pip. - * @hide + * Returns the subtitle of the picture-in-picture window that may be displayed to the user. + * + * @return subtitle of the picture-in-picture window. + * @see PictureInPictureParams.Builder#setSubtitle(CharSequence) */ - @TestApi @Nullable public CharSequence getSubtitle() { return mSubtitle; @@ -716,7 +749,7 @@ public final class PictureInPictureParams implements Parcelable { @Override public String toString() { return "PictureInPictureParams(" - + " aspectRatio=" + getAspectRatioRational() + + " aspectRatio=" + getAspectRatio() + " expandedAspectRatio=" + mExpandedAspectRatio + " sourceRectHint=" + getSourceRectHint() + " hasSetActions=" + hasSetActions() diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java index c2d582354b13..7397e5273753 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java @@ -194,7 +194,7 @@ public class PipBoundsAlgorithm { public float getAspectRatioOrDefault( @android.annotation.Nullable PictureInPictureParams params) { return params != null && params.hasSetAspectRatio() - ? params.getAspectRatio() + ? params.getAspectRatioFloat() : getDefaultAspectRatio(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index c1e78251da2b..5d6b041f9006 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -1071,13 +1071,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, */ private boolean applyPictureInPictureParams(@NonNull PictureInPictureParams params) { final Rational currentAspectRatio = - mPictureInPictureParams != null ? mPictureInPictureParams.getAspectRatioRational() + mPictureInPictureParams != null ? mPictureInPictureParams.getAspectRatio() : null; final boolean aspectRatioChanged = !Objects.equals(currentAspectRatio, - params.getAspectRatioRational()); + params.getAspectRatio()); mPictureInPictureParams = params; if (aspectRatioChanged) { - mPipBoundsState.setAspectRatio(params.getAspectRatio()); + mPipBoundsState.setAspectRatio(params.getAspectRatioFloat()); } return aspectRatioChanged; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java index d880f821ee73..986554853034 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java @@ -75,7 +75,7 @@ public class TvPipBoundsState extends PipBoundsState { public void setBoundsStateForEntry(ComponentName componentName, ActivityInfo activityInfo, PictureInPictureParams params, PipBoundsAlgorithm pipBoundsAlgorithm) { super.setBoundsStateForEntry(componentName, activityInfo, params, pipBoundsAlgorithm); - setDesiredTvExpandedAspectRatio(params.getExpandedAspectRatio(), true); + setDesiredTvExpandedAspectRatio(params.getExpandedAspectRatioFloat(), true); } /** Resets the TV PiP state for a new activity. */ diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index 543e44cce8b6..ffc438834658 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -746,8 +746,9 @@ class ActivityClientController extends IActivityClientController.Stub { // if it is not already expanding to fullscreen. Otherwise, the arguments will // be used the next time the activity enters PiP. final Task rootTask = r.getRootTask(); - rootTask.setPictureInPictureAspectRatio(r.pictureInPictureArgs.getAspectRatio(), - r.pictureInPictureArgs.getExpandedAspectRatio()); + rootTask.setPictureInPictureAspectRatio( + r.pictureInPictureArgs.getAspectRatioFloat(), + r.pictureInPictureArgs.getExpandedAspectRatioFloat()); rootTask.setPictureInPictureActions(r.pictureInPictureArgs.getActions()); } } @@ -828,7 +829,7 @@ class ActivityClientController extends IActivityClientController.Stub { if (params.hasSetAspectRatio() && !mService.mWindowManager.isValidPictureInPictureAspectRatio( - r.mDisplayContent, params.getAspectRatio())) { + r.mDisplayContent, params.getAspectRatioFloat())) { throw new IllegalArgumentException(String.format(caller + ": Aspect ratio is too extreme (must be between %f and %f).", minAspectRatio, maxAspectRatio)); @@ -836,7 +837,7 @@ class ActivityClientController extends IActivityClientController.Stub { if (mService.mSupportsExpandedPictureInPicture && params.hasSetExpandedAspectRatio() && !mService.mWindowManager.isValidExpandedPictureInPictureAspectRatio( - r.mDisplayContent, params.getExpandedAspectRatio())) { + r.mDisplayContent, params.getExpandedAspectRatioFloat())) { throw new IllegalArgumentException(String.format(caller + ": Expanded aspect ratio is not extreme enough (must not be between" + " %f and %f).", diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index b5312c4de437..988a7c6cde9a 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -3523,8 +3523,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } // Only update the saved args from the args that are set r.setPictureInPictureParams(params); - final float aspectRatio = r.pictureInPictureArgs.getAspectRatio(); - final float expandedAspectRatio = r.pictureInPictureArgs.getExpandedAspectRatio(); + final float aspectRatio = r.pictureInPictureArgs.getAspectRatioFloat(); + final float expandedAspectRatio = + r.pictureInPictureArgs.getExpandedAspectRatioFloat(); final List<RemoteAction> actions = r.pictureInPictureArgs.getActions(); mRootWindowContainer.moveActivityToPinnedRootTask(r, null /* launchIntoPipHostActivity */, "enterPictureInPictureMode"); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index 25d7334a529c..b4d305bbe4d0 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -932,7 +932,7 @@ public class WindowOrganizerTests extends WindowTestsBase { mWm.mAtmService.mTaskOrganizerController.dispatchPendingEvents(); assertNotNull(o.mChangedInfo); assertNotNull(o.mChangedInfo.pictureInPictureParams); - final Rational ratio = o.mChangedInfo.pictureInPictureParams.getAspectRatioRational(); + final Rational ratio = o.mChangedInfo.pictureInPictureParams.getAspectRatio(); assertEquals(3, ratio.getNumerator()); assertEquals(4, ratio.getDenominator()); } |