diff options
| author | 2022-03-08 10:23:17 +0100 | |
|---|---|---|
| committer | 2022-03-09 17:43:41 +0100 | |
| commit | ada36900fbad41f17091a17ecba4452ab7a822c0 (patch) | |
| tree | b2e6e942cbb0561e25efcf557a2181dfd141e6ab | |
| parent | f5ff7aa9f0532a97579027b06421d70e7b66ce79 (diff) | |
Add shouldDockBigOverlays API
This CLs provides the getter API for DockBigOverlays. To better follow
API guidelines, it changes the naming from "*preferDockBigOverlays" to
"*shouldDockBigOverlays"
Bug: 220739302
Test: atest PinnedStackTests#testShouldDockBigOverlaysWithExpandedPip
Change-Id: I25c18531bc1f386b208ab7dde81a8b11a22d03a1
| -rw-r--r-- | core/api/current.txt | 3 | ||||
| -rw-r--r-- | core/api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/app/Activity.java | 26 | ||||
| -rw-r--r-- | core/java/android/app/ActivityClient.java | 4 | ||||
| -rw-r--r-- | core/java/android/app/IActivityClientController.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/app/TaskInfo.java | 14 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityClientController.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 10 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 8 |
9 files changed, 46 insertions, 27 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index ec87591918bd..08f56b61df9c 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -4275,7 +4275,6 @@ package android.app { method public void setLocusContext(@Nullable android.content.LocusId, @Nullable android.os.Bundle); method public final void setMediaController(android.media.session.MediaController); method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams); - method public void setPreferDockBigOverlays(boolean); method @Deprecated public final void setProgress(int); method @Deprecated public final void setProgressBarIndeterminate(boolean); method @Deprecated public final void setProgressBarIndeterminateVisibility(boolean); @@ -4285,6 +4284,7 @@ package android.app { method public final void setResult(int); method public final void setResult(int, android.content.Intent); method @Deprecated public final void setSecondaryProgress(int); + method public void setShouldDockBigOverlays(boolean); method public void setShowWhenLocked(boolean); method public void setTaskDescription(android.app.ActivityManager.TaskDescription); method public void setTitle(CharSequence); @@ -4295,6 +4295,7 @@ package android.app { method public void setVisible(boolean); method public final void setVolumeControlStream(int); method public void setVrModeEnabled(boolean, @NonNull android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; + method public boolean shouldDockBigOverlays(); method public boolean shouldShowRequestPermissionRationale(@NonNull String); method public boolean shouldUpRecreateTask(android.content.Intent); method public boolean showAssist(android.os.Bundle); diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 5aec193f33d4..2eb0f194887f 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -422,9 +422,9 @@ package android.app { method @NonNull public android.content.res.Configuration getConfiguration(); method public int getParentTaskId(); method @Nullable public android.app.PictureInPictureParams getPictureInPictureParams(); - method public boolean getPreferDockBigOverlays(); method @NonNull public android.window.WindowContainerToken getToken(); method public boolean hasParentTask(); + method public boolean shouldDockBigOverlays(); } public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener { diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 8f348a4e81d6..620aa8b0b8e8 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -984,6 +984,8 @@ public class Activity extends ContextThemeWrapper private boolean mIsInMultiWindowMode; private boolean mIsInPictureInPictureMode; + private boolean mShouldDockBigOverlays; + private UiTranslationController mUiTranslationController; private SplashScreen mSplashScreen; @@ -2977,13 +2979,28 @@ public class Activity extends ContextThemeWrapper * <p> If specified, the system will try to respect the preference, but it may be * overridden by a user preference. * - * @param preferDockBigOverlays indicates that the activity prefers big overlays to be - * docked next to it instead of overlaying its content + * @param shouldDockBigOverlays indicates that big overlays should be docked next to the + * activity instead of overlay its content * * @see PictureInPictureParams.Builder#setExpandedAspectRatio + * @see #shouldDockBigOverlays + */ + public void setShouldDockBigOverlays(boolean shouldDockBigOverlays) { + ActivityClient.getInstance().setShouldDockBigOverlays(mToken, shouldDockBigOverlays); + mShouldDockBigOverlays = shouldDockBigOverlays; + } + + /** + * Returns whether big overlays should be docked next to the activity as set by + * {@link #setShouldDockBigOverlays}. + * + * @return {@code true} if big overlays should be docked next to the activity instead + * of overlay its content + * + * @see #setShouldDockBigOverlays */ - public void setPreferDockBigOverlays(boolean preferDockBigOverlays) { - ActivityClient.getInstance().setPreferDockBigOverlays(mToken, preferDockBigOverlays); + public boolean shouldDockBigOverlays() { + return mShouldDockBigOverlays; } void dispatchMovedToDisplay(int displayId, Configuration config) { @@ -8249,6 +8266,7 @@ public class Activity extends ContextThemeWrapper .getWindowingMode(); mIsInMultiWindowMode = inMultiWindowMode(windowingMode); mIsInPictureInPictureMode = windowingMode == WINDOWING_MODE_PINNED; + mShouldDockBigOverlays = getResources().getBoolean(R.bool.config_dockBigOverlayWindows); restoreHasCurrentPermissionRequest(icicle); if (persistentState != null) { onCreate(icicle, persistentState); diff --git a/core/java/android/app/ActivityClient.java b/core/java/android/app/ActivityClient.java index cf8480c6b9c8..7b7b1efdb86b 100644 --- a/core/java/android/app/ActivityClient.java +++ b/core/java/android/app/ActivityClient.java @@ -324,9 +324,9 @@ public class ActivityClient { } } - void setPreferDockBigOverlays(IBinder token, boolean preferDockBigOverlays) { + void setShouldDockBigOverlays(IBinder token, boolean shouldDockBigOverlays) { try { - getActivityClientController().setPreferDockBigOverlays(token, preferDockBigOverlays); + getActivityClientController().setShouldDockBigOverlays(token, shouldDockBigOverlays); } catch (RemoteException e) { e.rethrowFromSystemServer(); } diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl index caf1c41b7622..130716122ed2 100644 --- a/core/java/android/app/IActivityClientController.aidl +++ b/core/java/android/app/IActivityClientController.aidl @@ -88,7 +88,7 @@ interface IActivityClientController { boolean enterPictureInPictureMode(in IBinder token, in PictureInPictureParams params); void setPictureInPictureParams(in IBinder token, in PictureInPictureParams params); - oneway void setPreferDockBigOverlays(in IBinder token, in boolean preferDockBigOverlays); + oneway void setShouldDockBigOverlays(in IBinder token, in boolean shouldDockBigOverlays); void toggleFreeformWindowingMode(in IBinder token); oneway void startLockTaskModeByToken(in IBinder token); diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java index 5c7c73c2d683..1a38fcfba5a0 100644 --- a/core/java/android/app/TaskInfo.java +++ b/core/java/android/app/TaskInfo.java @@ -188,7 +188,7 @@ public class TaskInfo { /** * @hide */ - public boolean preferDockBigOverlays; + public boolean shouldDockBigOverlays; /** * The task id of the host Task of the launch-into-pip Activity, i.e., it points to the Task @@ -392,8 +392,8 @@ public class TaskInfo { /** @hide */ @TestApi - public boolean getPreferDockBigOverlays() { - return preferDockBigOverlays; + public boolean shouldDockBigOverlays() { + return shouldDockBigOverlays; } /** @hide */ @@ -465,7 +465,7 @@ public class TaskInfo { && displayAreaFeatureId == that.displayAreaFeatureId && Objects.equals(positionInParent, that.positionInParent) && Objects.equals(pictureInPictureParams, that.pictureInPictureParams) - && Objects.equals(preferDockBigOverlays, that.preferDockBigOverlays) + && Objects.equals(shouldDockBigOverlays, that.shouldDockBigOverlays) && Objects.equals(displayCutoutInsets, that.displayCutoutInsets) && getWindowingMode() == that.getWindowingMode() && Objects.equals(taskDescription, that.taskDescription) @@ -522,7 +522,7 @@ public class TaskInfo { token = WindowContainerToken.CREATOR.createFromParcel(source); topActivityType = source.readInt(); pictureInPictureParams = source.readTypedObject(PictureInPictureParams.CREATOR); - preferDockBigOverlays = source.readBoolean(); + shouldDockBigOverlays = source.readBoolean(); launchIntoPipHostTaskId = source.readInt(); displayCutoutInsets = source.readTypedObject(Rect.CREATOR); topActivityInfo = source.readTypedObject(ActivityInfo.CREATOR); @@ -569,7 +569,7 @@ public class TaskInfo { token.writeToParcel(dest, flags); dest.writeInt(topActivityType); dest.writeTypedObject(pictureInPictureParams, flags); - dest.writeBoolean(preferDockBigOverlays); + dest.writeBoolean(shouldDockBigOverlays); dest.writeInt(launchIntoPipHostTaskId); dest.writeTypedObject(displayCutoutInsets, flags); dest.writeTypedObject(topActivityInfo, flags); @@ -610,7 +610,7 @@ public class TaskInfo { + " token=" + token + " topActivityType=" + topActivityType + " pictureInPictureParams=" + pictureInPictureParams - + " preferDockBigOverlays=" + preferDockBigOverlays + + " shouldDockBigOverlays=" + shouldDockBigOverlays + " launchIntoPipHostTaskId=" + launchIntoPipHostTaskId + " displayCutoutSafeInsets=" + displayCutoutInsets + " topActivityInfo=" + topActivityInfo diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index a4a200da686b..543e44cce8b6 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -757,12 +757,12 @@ class ActivityClientController extends IActivityClientController.Stub { } @Override - public void setPreferDockBigOverlays(IBinder token, boolean preferDockBigOverlays) { + public void setShouldDockBigOverlays(IBinder token, boolean shouldDockBigOverlays) { final long origId = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { final ActivityRecord r = ActivityRecord.forTokenLocked(token); - r.setPreferDockBigOverlays(preferDockBigOverlays); + r.setShouldDockBigOverlays(shouldDockBigOverlays); } } finally { Binder.restoreCallingIdentity(origId); diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 2153f5f4dd70..677babea4dd4 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -534,7 +534,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // activity can enter picture in picture while pausing (only when switching to another task) PictureInPictureParams pictureInPictureArgs = new PictureInPictureParams.Builder().build(); // The PiP params used when deferring the entering of picture-in-picture. - boolean preferDockBigOverlays; + boolean shouldDockBigOverlays; int launchCount; // count of launches since last state long lastLaunchTime; // time of last launch of this activity ComponentName requestedVrComponent; // the requested component for handling VR mode. @@ -2042,7 +2042,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mLetterboxUiController = new LetterboxUiController(mWmService, this); mCameraCompatControlEnabled = mWmService.mContext.getResources() .getBoolean(R.bool.config_isCameraCompatControlForStretchedIssuesEnabled); - preferDockBigOverlays = mWmService.mContext.getResources() + shouldDockBigOverlays = mWmService.mContext.getResources() .getBoolean(R.bool.config_dockBigOverlayWindows); if (_createTime > 0) { @@ -9575,9 +9575,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A getTask().getRootTask().onPictureInPictureParamsChanged(); } - void setPreferDockBigOverlays(boolean preferDockBigOverlays) { - this.preferDockBigOverlays = preferDockBigOverlays; - getTask().getRootTask().onPreferDockBigOverlaysChanged(); + void setShouldDockBigOverlays(boolean shouldDockBigOverlays) { + this.shouldDockBigOverlays = shouldDockBigOverlays; + getTask().getRootTask().onShouldDockBigOverlaysChanged(); } @Override diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 8edb3137c416..cd7ebe327c91 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3403,7 +3403,7 @@ class Task extends TaskFragment { info.positionInParent = getRelativePosition(); info.pictureInPictureParams = getPictureInPictureParams(top); - info.preferDockBigOverlays = getPreferDockBigOverlays(); + info.shouldDockBigOverlays = shouldDockBigOverlays(); if (info.pictureInPictureParams != null && info.pictureInPictureParams.isLaunchIntoPip() && top.getTopMostActivity().getLastParentBeforePip() != null) { @@ -3456,9 +3456,9 @@ class Task extends TaskFragment { ? null : new PictureInPictureParams(topMostActivity.pictureInPictureArgs); } - private boolean getPreferDockBigOverlays() { + private boolean shouldDockBigOverlays() { final ActivityRecord topMostActivity = getTopMostActivity(); - return topMostActivity != null && topMostActivity.preferDockBigOverlays; + return topMostActivity != null && topMostActivity.shouldDockBigOverlays; } Rect getDisplayCutoutInsets() { @@ -4354,7 +4354,7 @@ class Task extends TaskFragment { } } - void onPreferDockBigOverlaysChanged() { + void onShouldDockBigOverlaysChanged() { dispatchTaskInfoChangedIfNeeded(true /* force */); } |