diff options
author | 2024-04-20 11:44:03 +0000 | |
---|---|---|
committer | 2024-04-20 11:44:03 +0000 | |
commit | 2bd7c3602d88ad9e34954dc64e3e9b0348383984 (patch) | |
tree | 94ee40c110133cf46044220ba2ac6874b611fe11 | |
parent | 887d3128cde99a1ed184d889fa613b0f237aeae2 (diff) | |
parent | d785a56a67212c310f65c0e672c882804c3432cb (diff) |
Merge "[0/n] Add `FreeformCameraCompatMode` enum and extract camera-related fields in AppCompatTaskInfo to a separate class." into main
17 files changed, 311 insertions, 140 deletions
diff --git a/core/java/android/app/AppCompatTaskInfo.java b/core/java/android/app/AppCompatTaskInfo.java index 0bae5e67b87b..7724c2369954 100644 --- a/core/java/android/app/AppCompatTaskInfo.java +++ b/core/java/android/app/AppCompatTaskInfo.java @@ -16,60 +16,16 @@ package android.app; -import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - /** * Stores App Compat information about a particular Task. * @hide */ public class AppCompatTaskInfo implements Parcelable { - - /** - * Camera compat control isn't shown because it's not requested by heuristics. - */ - public static final int CAMERA_COMPAT_CONTROL_HIDDEN = 0; - - /** - * Camera compat control is shown with the treatment suggested. - */ - public static final int CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED = 1; - - /** - * Camera compat control is shown to allow reverting the applied treatment. - */ - public static final int CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED = 2; - - /** - * Camera compat control is dismissed by user. - */ - public static final int CAMERA_COMPAT_CONTROL_DISMISSED = 3; - - /** - * Enum for the Camera app compat control states. - */ - @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = { "CAMERA_COMPAT_CONTROL_" }, value = { - CAMERA_COMPAT_CONTROL_HIDDEN, - CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED, - CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED, - CAMERA_COMPAT_CONTROL_DISMISSED, - }) - public @interface CameraCompatControlState {}; - - /** - * State of the Camera app compat control which is used to correct stretched viewfinder - * in apps that don't handle all possible configurations and changes between them correctly. - */ - @CameraCompatControlState - public int cameraCompatControlState = CAMERA_COMPAT_CONTROL_HIDDEN; - /** * Whether the direct top activity is eligible for letterbox education. */ @@ -135,6 +91,11 @@ public class AppCompatTaskInfo implements Parcelable { */ public int topActivityLetterboxHeight; + /** + * Stores camera-related app compat information about a particular Task. + */ + public CameraCompatTaskInfo cameraCompatTaskInfo = CameraCompatTaskInfo.create(); + private AppCompatTaskInfo() { // Do nothing } @@ -167,18 +128,10 @@ public class AppCompatTaskInfo implements Parcelable { }; /** - * @return {@value true} if the task has camera compat controls. - */ - public boolean hasCameraCompatControl() { - return cameraCompatControlState != CAMERA_COMPAT_CONTROL_HIDDEN - && cameraCompatControlState != CAMERA_COMPAT_CONTROL_DISMISSED; - } - - /** * @return {@value true} if the task has some compat ui. */ public boolean hasCompatUI() { - return hasCameraCompatControl() || topActivityInSizeCompat + return cameraCompatTaskInfo.hasCameraCompatUI() || topActivityInSizeCompat || topActivityEligibleForLetterboxEducation || isLetterboxDoubleTapEnabled || topActivityEligibleForUserAspectRatioButton; @@ -208,7 +161,8 @@ public class AppCompatTaskInfo implements Parcelable { && topActivityLetterboxHorizontalPosition == that.topActivityLetterboxHorizontalPosition && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled - && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled; + && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled + && cameraCompatTaskInfo.equalsForTaskOrganizer(that.cameraCompatTaskInfo); } /** @@ -229,18 +183,17 @@ public class AppCompatTaskInfo implements Parcelable { == that.topActivityLetterboxHorizontalPosition && topActivityLetterboxWidth == that.topActivityLetterboxWidth && topActivityLetterboxHeight == that.topActivityLetterboxHeight - && cameraCompatControlState == that.cameraCompatControlState && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled - && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled; + && isSystemFullscreenOverrideEnabled == that.isSystemFullscreenOverrideEnabled + && cameraCompatTaskInfo.equalsForCompatUi(that.cameraCompatTaskInfo); } /** - * Reads the TaskInfo from a parcel. + * Reads the AppCompatTaskInfo from a parcel. */ void readFromParcel(Parcel source) { topActivityInSizeCompat = source.readBoolean(); topActivityEligibleForLetterboxEducation = source.readBoolean(); - cameraCompatControlState = source.readInt(); isLetterboxDoubleTapEnabled = source.readBoolean(); topActivityEligibleForUserAspectRatioButton = source.readBoolean(); topActivityBoundsLetterboxed = source.readBoolean(); @@ -251,16 +204,16 @@ public class AppCompatTaskInfo implements Parcelable { topActivityLetterboxHeight = source.readInt(); isUserFullscreenOverrideEnabled = source.readBoolean(); isSystemFullscreenOverrideEnabled = source.readBoolean(); + cameraCompatTaskInfo = source.readTypedObject(CameraCompatTaskInfo.CREATOR); } /** - * Writes the TaskInfo to a parcel. + * Writes the AppCompatTaskInfo to a parcel. */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeBoolean(topActivityInSizeCompat); dest.writeBoolean(topActivityEligibleForLetterboxEducation); - dest.writeInt(cameraCompatControlState); dest.writeBoolean(isLetterboxDoubleTapEnabled); dest.writeBoolean(topActivityEligibleForUserAspectRatioButton); dest.writeBoolean(topActivityBoundsLetterboxed); @@ -271,6 +224,7 @@ public class AppCompatTaskInfo implements Parcelable { dest.writeInt(topActivityLetterboxHeight); dest.writeBoolean(isUserFullscreenOverrideEnabled); dest.writeBoolean(isSystemFullscreenOverrideEnabled); + dest.writeTypedObject(cameraCompatTaskInfo, flags); } @Override @@ -290,23 +244,7 @@ public class AppCompatTaskInfo implements Parcelable { + " topActivityLetterboxHeight=" + topActivityLetterboxHeight + " isUserFullscreenOverrideEnabled=" + isUserFullscreenOverrideEnabled + " isSystemFullscreenOverrideEnabled=" + isSystemFullscreenOverrideEnabled - + " cameraCompatControlState=" - + cameraCompatControlStateToString(cameraCompatControlState) + + " cameraCompatTaskInfo=" + cameraCompatTaskInfo.toString() + "}"; } - - /** Human readable version of the camera control state. */ - @NonNull - public static String cameraCompatControlStateToString( - @CameraCompatControlState int cameraCompatControlState) { - switch (cameraCompatControlState) { - case CAMERA_COMPAT_CONTROL_HIDDEN: return "hidden"; - case CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED: return "treatment-suggested"; - case CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED: return "treatment-applied"; - case CAMERA_COMPAT_CONTROL_DISMISSED: return "dismissed"; - default: - throw new AssertionError( - "Unexpected camera compat control state: " + cameraCompatControlState); - } - } } diff --git a/core/java/android/app/CameraCompatTaskInfo.java b/core/java/android/app/CameraCompatTaskInfo.java new file mode 100644 index 000000000000..1e116b7a759c --- /dev/null +++ b/core/java/android/app/CameraCompatTaskInfo.java @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app; + +import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Parcel; +import android.os.Parcelable; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Stores Camera Compat information about a particular Task. + * @hide + */ +public class CameraCompatTaskInfo implements Parcelable { + /** + * Camera compat control isn't shown because it's not requested by heuristics. + */ + public static final int CAMERA_COMPAT_CONTROL_HIDDEN = 0; + + /** + * Camera compat control is shown with the treatment suggested. + */ + public static final int CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED = 1; + + /** + * Camera compat control is shown to allow reverting the applied treatment. + */ + public static final int CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED = 2; + + /** + * Camera compat control is dismissed by user. + */ + public static final int CAMERA_COMPAT_CONTROL_DISMISSED = 3; + + /** + * Enum for the Camera app compat control states. + */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = { "CAMERA_COMPAT_CONTROL_" }, value = { + CAMERA_COMPAT_CONTROL_HIDDEN, + CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED, + CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED, + CAMERA_COMPAT_CONTROL_DISMISSED, + }) + public @interface CameraCompatControlState {} + + /** + * State of the Camera app compat control which is used to correct stretched viewfinder + * in apps that don't handle all possible configurations and changes between them correctly. + */ + @CameraCompatControlState + public int cameraCompatControlState = CAMERA_COMPAT_CONTROL_HIDDEN; + + /** + * The value to use when no camera compat treatment should be applied to a windowed task. + */ + public static final int CAMERA_COMPAT_FREEFORM_NONE = 0; + + /** + * The value to use when portrait camera compat treatment should be applied to a windowed task. + */ + public static final int CAMERA_COMPAT_FREEFORM_PORTRAIT = 1; + + /** + * The value to use when landscape camera compat treatment should be applied to a windowed task. + */ + public static final int CAMERA_COMPAT_FREEFORM_LANDSCAPE = 2; + + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = { "CAMERA_COMPAT_FREEFORM_" }, value = { + CAMERA_COMPAT_FREEFORM_NONE, + CAMERA_COMPAT_FREEFORM_PORTRAIT, + CAMERA_COMPAT_FREEFORM_LANDSCAPE, + }) + public @interface FreeformCameraCompatMode {} + + /** + * Whether the camera activity is letterboxed in freeform windowing mode to emulate expected + * aspect ratio for fixed-orientation apps. + * + * <p>This field is used by the WM and the camera framework, to coordinate camera compat mode + * setup. + */ + @FreeformCameraCompatMode + public int freeformCameraCompatMode; + + private CameraCompatTaskInfo() { + // Do nothing + } + + @NonNull + static CameraCompatTaskInfo create() { + return new CameraCompatTaskInfo(); + } + + private CameraCompatTaskInfo(Parcel source) { + readFromParcel(source); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator<CameraCompatTaskInfo> CREATOR = + new Creator<>() { + @Override + public CameraCompatTaskInfo createFromParcel(Parcel in) { + return new CameraCompatTaskInfo(in); + } + + @Override + public CameraCompatTaskInfo[] newArray(int size) { + return new CameraCompatTaskInfo[size]; + } + }; + + /** + * Reads the CameraCompatTaskInfo from a parcel. + */ + void readFromParcel(Parcel source) { + cameraCompatControlState = source.readInt(); + freeformCameraCompatMode = source.readInt(); + } + + /** + * Writes the CameraCompatTaskInfo to a parcel. + */ + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(cameraCompatControlState); + dest.writeInt(freeformCameraCompatMode); + } + + /** + * @return {@value true} if the task has camera compat controls. + */ + public boolean hasCameraCompatControl() { + return cameraCompatControlState != CAMERA_COMPAT_CONTROL_HIDDEN + && cameraCompatControlState != CAMERA_COMPAT_CONTROL_DISMISSED; + } + + /** + * @return {@value true} if the task has some compat ui. + */ + public boolean hasCameraCompatUI() { + return hasCameraCompatControl(); + } + + /** + * @return {@code true} if the camera compat parameters that are important for task organizers + * are equal. + */ + public boolean equalsForTaskOrganizer(@Nullable CameraCompatTaskInfo that) { + if (that == null) { + return false; + } + return freeformCameraCompatMode == that.freeformCameraCompatMode; + } + + /** + * @return {@code true} if parameters that are important for size compat have changed. + */ + public boolean equalsForCompatUi(@Nullable CameraCompatTaskInfo that) { + if (that == null) { + return false; + } + return cameraCompatControlState == that.cameraCompatControlState + && freeformCameraCompatMode == that.freeformCameraCompatMode; + } + + @Override + public String toString() { + return "CameraCompatTaskInfo { cameraCompatControlState=" + + cameraCompatControlStateToString(cameraCompatControlState) + + " freeformCameraCompatMode=" + + freeformCameraCompatModeToString(freeformCameraCompatMode) + + "}"; + } + + /** Human readable version of the camera control state. */ + @NonNull + public static String cameraCompatControlStateToString( + @CameraCompatControlState int cameraCompatControlState) { + return switch (cameraCompatControlState) { + case CAMERA_COMPAT_CONTROL_HIDDEN -> "hidden"; + case CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED -> "treatment-suggested"; + case CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED -> "treatment-applied"; + case CAMERA_COMPAT_CONTROL_DISMISSED -> "dismissed"; + default -> throw new AssertionError( + "Unexpected camera compat control state: " + cameraCompatControlState); + }; + } + + /** Human readable version of the freeform camera compat mode. */ + @NonNull + public static String freeformCameraCompatModeToString( + @FreeformCameraCompatMode int freeformCameraCompatMode) { + return switch (freeformCameraCompatMode) { + case CAMERA_COMPAT_FREEFORM_NONE -> "inactive"; + case CAMERA_COMPAT_FREEFORM_PORTRAIT -> "portrait"; + case CAMERA_COMPAT_FREEFORM_LANDSCAPE -> "landscape"; + default -> throw new AssertionError( + "Unexpected camera compat mode: " + freeformCameraCompatMode); + }; + } +} diff --git a/core/java/android/window/TaskOrganizer.java b/core/java/android/window/TaskOrganizer.java index 6d36b579dcc2..b9ffdbc0c2e4 100644 --- a/core/java/android/window/TaskOrganizer.java +++ b/core/java/android/window/TaskOrganizer.java @@ -24,7 +24,7 @@ import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.TestApi; import android.app.ActivityManager; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.os.IBinder; import android.os.RemoteException; import android.view.SurfaceControl; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java index d8d0d876b4f2..3244837324b6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java @@ -16,6 +16,7 @@ package com.android.wm.shell; + import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; @@ -30,7 +31,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager.RunningTaskInfo; -import android.app.AppCompatTaskInfo; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.app.WindowConfiguration; import android.content.LocusId; @@ -718,8 +719,7 @@ public class ShellTaskOrganizer extends TaskOrganizer implements } @Override - public void onCameraControlStateUpdated( - int taskId, @AppCompatTaskInfo.CameraCompatControlState int state) { + public void onCameraControlStateUpdated(int taskId, @CameraCompatControlState int state) { final TaskAppearedInfo info; synchronized (mLock) { info = mTasks.get(taskId); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java index 86571cf9c622..5c292f173e5b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java @@ -20,7 +20,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.content.ComponentName; import android.content.Context; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUILayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUILayout.java index a0986fa601f2..2b0bd3272ed2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUILayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUILayout.java @@ -16,10 +16,10 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import android.annotation.IdRes; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.content.Context; import android.util.AttributeSet; import android.view.View; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java index dbf7186def8a..4e5c2fa24f25 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java @@ -16,16 +16,16 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.window.TaskConstants.TASK_CHILD_LAYER_COMPAT_UI; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppCompatTaskInfo; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.content.Context; import android.graphics.Rect; @@ -81,7 +81,8 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { super(context, taskInfo, syncQueue, taskListener, displayLayout); mCallback = callback; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; - mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; + mCameraCompatControlState = + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState; mCompatUIHintsState = compatUIHintsState; mCompatUIConfiguration = compatUIConfiguration; mOnRestartButtonClicked = onRestartButtonClicked; @@ -135,7 +136,8 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { final boolean prevHasSizeCompat = mHasSizeCompat; final int prevCameraCompatControlState = mCameraCompatControlState; mHasSizeCompat = taskInfo.appCompatTaskInfo.topActivityInSizeCompat; - mCameraCompatControlState = taskInfo.appCompatTaskInfo.cameraCompatControlState; + mCameraCompatControlState = + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState; if (!super.updateCompatInfo(taskInfo, taskListener, canShow)) { return false; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java index 9c1a88e1caa0..82c070cbf1c3 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTaskOrganizerTests.java @@ -16,10 +16,10 @@ package com.android.wm.shell; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; @@ -435,7 +435,8 @@ public class ShellTaskOrganizerTests extends ShellTestCase { public void testOnCameraCompatActivityChanged() { final RunningTaskInfo taskInfo1 = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN); taskInfo1.displayId = DEFAULT_DISPLAY; - taskInfo1.appCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_HIDDEN; + taskInfo1.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = + CAMERA_COMPAT_CONTROL_HIDDEN; final TrackingTaskListener taskListener = new TrackingTaskListener(); mOrganizer.addListenerForType(taskListener, TASK_LISTENER_TYPE_FULLSCREEN); mOrganizer.onTaskAppeared(taskInfo1, null); @@ -449,7 +450,7 @@ public class ShellTaskOrganizerTests extends ShellTestCase { final RunningTaskInfo taskInfo2 = createTaskInfo(taskInfo1.taskId, taskInfo1.getWindowingMode()); taskInfo2.displayId = taskInfo1.displayId; - taskInfo2.appCompatTaskInfo.cameraCompatControlState = + taskInfo2.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; taskInfo2.isVisible = true; mOrganizer.onTaskInfoChanged(taskInfo2); @@ -461,7 +462,7 @@ public class ShellTaskOrganizerTests extends ShellTestCase { final RunningTaskInfo taskInfo3 = createTaskInfo(taskInfo1.taskId, taskInfo1.getWindowingMode()); taskInfo3.displayId = taskInfo1.displayId; - taskInfo3.appCompatTaskInfo.cameraCompatControlState = + taskInfo3.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; taskInfo3.isVisible = true; mOrganizer.onTaskInfoChanged(taskInfo3); @@ -474,7 +475,7 @@ public class ShellTaskOrganizerTests extends ShellTestCase { createTaskInfo(taskInfo1.taskId, taskInfo1.getWindowingMode()); taskInfo4.displayId = taskInfo1.displayId; taskInfo4.appCompatTaskInfo.topActivityInSizeCompat = true; - taskInfo4.appCompatTaskInfo.cameraCompatControlState = + taskInfo4.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; taskInfo4.isVisible = true; mOrganizer.onTaskInfoChanged(taskInfo4); @@ -485,7 +486,7 @@ public class ShellTaskOrganizerTests extends ShellTestCase { final RunningTaskInfo taskInfo5 = createTaskInfo(taskInfo1.taskId, taskInfo1.getWindowingMode()); taskInfo5.displayId = taskInfo1.displayId; - taskInfo5.appCompatTaskInfo.cameraCompatControlState = + taskInfo5.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_DISMISSED; taskInfo5.isVisible = true; mOrganizer.onTaskInfoChanged(taskInfo5); @@ -496,7 +497,7 @@ public class ShellTaskOrganizerTests extends ShellTestCase { final RunningTaskInfo taskInfo6 = createTaskInfo(taskInfo1.taskId, taskInfo1.getWindowingMode()); taskInfo6.displayId = taskInfo1.displayId; - taskInfo6.appCompatTaskInfo.cameraCompatControlState = + taskInfo6.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; taskInfo6.isVisible = false; mOrganizer.onTaskInfoChanged(taskInfo6); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java index fef81af8946b..afae653f0682 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java @@ -16,8 +16,8 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; import static android.view.WindowInsets.Type.navigationBars; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; @@ -34,7 +34,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.app.ActivityManager.RunningTaskInfo; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.content.Context; import android.content.res.Configuration; @@ -689,7 +689,8 @@ public class CompatUIControllerTest extends ShellTestCase { taskInfo.taskId = taskId; taskInfo.displayId = displayId; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; - taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = + cameraCompatControlState; taskInfo.isVisible = isVisible; taskInfo.isFocused = isFocused; taskInfo.isTopActivityTransparent = isTopActivityTransparent; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java index dd358e757fde..cd3e8cb0e8e1 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUILayoutTest.java @@ -16,10 +16,10 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; @@ -28,7 +28,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; import android.app.ActivityManager; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.graphics.Rect; import android.testing.AndroidTestingRunner; @@ -222,7 +222,8 @@ public class CompatUILayoutTest extends ShellTestCase { ActivityManager.RunningTaskInfo taskInfo = new ActivityManager.RunningTaskInfo(); taskInfo.taskId = TASK_ID; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; - taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = + cameraCompatControlState; taskInfo.appCompatTaskInfo.topActivityLetterboxHeight = 1000; taskInfo.appCompatTaskInfo.topActivityLetterboxWidth = 1000; taskInfo.configuration.windowConfiguration.setBounds(new Rect(0, 0, 2000, 2000)); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java index 4f261cd79d39..5209d0e4bdd0 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIWindowManagerTest.java @@ -16,10 +16,10 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT; import static android.view.WindowInsets.Type.navigationBars; @@ -37,7 +37,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.app.ActivityManager; -import android.app.AppCompatTaskInfo; +import android.app.CameraCompatTaskInfo; import android.app.TaskInfo; import android.content.res.Configuration; import android.graphics.Rect; @@ -521,11 +521,12 @@ public class CompatUIWindowManagerTest extends ShellTestCase { } private static TaskInfo createTaskInfo(boolean hasSizeCompat, - @AppCompatTaskInfo.CameraCompatControlState int cameraCompatControlState) { + @CameraCompatTaskInfo.CameraCompatControlState int cameraCompatControlState) { ActivityManager.RunningTaskInfo taskInfo = new ActivityManager.RunningTaskInfo(); taskInfo.taskId = TASK_ID; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; - taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = + cameraCompatControlState; taskInfo.configuration.uiMode &= ~Configuration.UI_MODE_TYPE_DESK; // Letterboxed activity that takes half the screen should show size compat restart button taskInfo.configuration.windowConfiguration.setBounds( diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java index 38d6ea1839c4..02316125bcc3 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayoutTest.java @@ -16,7 +16,7 @@ package com.android.wm.shell.compatui; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; @@ -25,7 +25,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; import android.app.ActivityManager; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.TaskInfo; import android.content.ComponentName; import android.testing.AndroidTestingRunner; @@ -148,7 +148,8 @@ public class UserAspectRatioSettingsLayoutTest extends ShellTestCase { ActivityManager.RunningTaskInfo taskInfo = new ActivityManager.RunningTaskInfo(); taskInfo.taskId = TASK_ID; taskInfo.appCompatTaskInfo.topActivityInSizeCompat = hasSizeCompat; - taskInfo.appCompatTaskInfo.cameraCompatControlState = cameraCompatControlState; + taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = + cameraCompatControlState; taskInfo.realActivity = new ComponentName("com.mypackage.test", "TestActivity"); return taskInfo; } diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index 19f344996700..6ec557a15134 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -4,10 +4,10 @@ import static android.app.ActivityManager.PROCESS_STATE_NONEXISTENT; import static android.app.ActivityManager.START_SUCCESS; import static android.app.ActivityManager.START_TASK_TO_FRONT; import static android.app.ActivityManager.processStateAmToProto; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.WaitResult.INVALID_DELAY; import static android.app.WaitResult.LAUNCH_STATE_COLD; import static android.app.WaitResult.LAUNCH_STATE_HOT; @@ -88,7 +88,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.ActivityOptions.SourceInfo; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.WaitResult; import android.app.WindowConfiguration.WindowingMode; import android.content.ComponentName; diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 8c998c3bfdb9..85f96dc81b29 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -31,12 +31,13 @@ import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_DOWN; import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_UP; import static android.app.ActivityOptions.ANIM_UNDEFINED; import static android.app.ActivityTaskManager.INVALID_TASK_ID; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.cameraCompatControlStateToString; import static android.app.WaitResult.INVALID_DELAY; import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; @@ -274,8 +275,7 @@ import android.annotation.Size; import android.app.Activity; import android.app.ActivityManager.TaskDescription; import android.app.ActivityOptions; -import android.app.AppCompatTaskInfo; -import android.app.AppCompatTaskInfo.CameraCompatControlState; +import android.app.CameraCompatTaskInfo.CameraCompatControlState; import android.app.ICompatCameraControlCallback; import android.app.IScreenCaptureObserver; import android.app.PendingIntent; @@ -1357,7 +1357,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mLetterboxUiController.dump(pw, prefix); pw.println(prefix + "mCameraCompatControlState=" - + AppCompatTaskInfo.cameraCompatControlStateToString(mCameraCompatControlState)); + + cameraCompatControlStateToString(mCameraCompatControlState)); pw.println(prefix + "mCameraCompatControlEnabled=" + mCameraCompatControlEnabled); } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 390a7cf2d09e..9d3ffa95f744 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -137,6 +137,7 @@ import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.AppCompatTaskInfo; import android.app.AppGlobals; +import android.app.CameraCompatTaskInfo; import android.app.IActivityController; import android.app.PictureInPictureParams; import android.app.TaskInfo; @@ -3537,9 +3538,9 @@ class Task extends TaskFragment { appCompatTaskInfo.topActivityEligibleForLetterboxEducation = isTopActivityResumed && top.isEligibleForLetterboxEducation(); // Whether the direct top activity requested showing camera compat control. - appCompatTaskInfo.cameraCompatControlState = isTopActivityResumed + appCompatTaskInfo.cameraCompatTaskInfo.cameraCompatControlState = isTopActivityResumed ? top.getCameraCompatControlState() - : AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; + : CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; final Task parentTask = getParent() != null ? getParent().asTask() : null; info.parentTaskId = parentTask != null && parentTask.mCreatedByOrganizer diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java index 74dad916c5c7..b24d53b26caa 100644 --- a/services/core/java/com/android/server/wm/TaskOrganizerController.java +++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java @@ -17,7 +17,7 @@ package com.android.server.wm; import static android.app.ActivityTaskManager.INVALID_TASK_ID; -import static android.app.AppCompatTaskInfo.cameraCompatControlStateToString; +import static android.app.CameraCompatTaskInfo.cameraCompatControlStateToString; import static android.window.StartingWindowRemovalInfo.DEFER_MODE_NONE; import static android.window.StartingWindowRemovalInfo.DEFER_MODE_NORMAL; import static android.window.StartingWindowRemovalInfo.DEFER_MODE_ROTATION; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index e42acba4da7a..30eb5efc16a7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -18,10 +18,10 @@ package com.android.server.wm; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; -import static android.app.AppCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_DISMISSED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_HIDDEN; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_APPLIED; +import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_CONTROL_TREATMENT_SUGGESTED; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; |