diff options
| author | 2023-05-11 14:25:05 +0000 | |
|---|---|---|
| committer | 2023-05-11 14:25:05 +0000 | |
| commit | 64696fa4167f440c7b55b200cb77c2854c6730df (patch) | |
| tree | d7e7332df88044ee87d99e652f81898b83ad06c3 | |
| parent | db2bd90fb4beb074220d7b4743bce7b97aa588e6 (diff) | |
| parent | 2833289b21a6347565f27b49d62ef466e26a6a49 (diff) | |
Merge "Refresh activity after stronger letterboxing for camera compat" into udc-dev
5 files changed, 31 insertions, 13 deletions
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index 7c2759af156f..92c0dabfd13e 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -3865,6 +3865,12 @@ "group": "WM_DEBUG_ADD_REMOVE", "at": "com\/android\/server\/wm\/WindowState.java" }, + "1511273241": { + "message": "Refreshing activity for camera compatibility treatment, activityRecord=%s", + "level": "VERBOSE", + "group": "WM_DEBUG_STATES", + "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java" + }, "1518495446": { "message": "removeWindowToken: Attempted to remove non-existing token: %s", "level": "WARN", @@ -4297,12 +4303,6 @@ "group": "WM_DEBUG_REMOTE_ANIMATIONS", "at": "com\/android\/server\/wm\/RemoteAnimationController.java" }, - "1967643923": { - "message": "Refershing activity for camera compatibility treatment, activityRecord=%s", - "level": "VERBOSE", - "group": "WM_DEBUG_STATES", - "at": "com\/android\/server\/wm\/DisplayRotationCompatPolicy.java" - }, "1967975839": { "message": "Changing app %s visible=%b performLayout=%b", "level": "VERBOSE", diff --git a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java index ae93a9496f7c..2b72215f1b72 100644 --- a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java @@ -223,7 +223,7 @@ final class DisplayRotationCompatPolicy { try { activity.mLetterboxUiController.setIsRefreshAfterRotationRequested(true); ProtoLog.v(WM_DEBUG_STATES, - "Refershing activity for camera compatibility treatment, " + "Refreshing activity for camera compatibility treatment, " + "activityRecord=%s", activity); final ClientTransaction transaction = ClientTransaction.obtain( activity.app.getThread(), activity.token); @@ -311,11 +311,14 @@ final class DisplayRotationCompatPolicy { } } - // Refreshing only when configuration changes after rotation. + // Refreshing only when configuration changes after rotation or camera split screen aspect ratio + // treatment is enabled private boolean shouldRefreshActivity(ActivityRecord activity, Configuration newConfig, Configuration lastReportedConfig) { - return newConfig.windowConfiguration.getDisplayRotation() - != lastReportedConfig.windowConfiguration.getDisplayRotation() + final boolean displayRotationChanged = (newConfig.windowConfiguration.getDisplayRotation() + != lastReportedConfig.windowConfiguration.getDisplayRotation()); + return (displayRotationChanged + || activity.mLetterboxUiController.isCameraCompatSplitScreenAspectRatioAllowed()) && isTreatmentEnabledForActivity(activity) && activity.mLetterboxUiController.shouldRefreshActivityForCameraCompat(); } diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java index f492bab0728f..a93cb8ad2d97 100644 --- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java +++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java @@ -214,7 +214,7 @@ final class LetterboxConfiguration { // otherwise the apps get blacked out when they are resumed and do not have focus yet. private boolean mIsCompatFakeFocusEnabled; - // Whether should use split screen aspect ratio for the activity when camera compat treatment + // Whether we should use split screen aspect ratio for the activity when camera compat treatment // is enabled and activity is connected to the camera in fullscreen. private final boolean mIsCameraCompatSplitScreenAspectRatioEnabled; @@ -1118,7 +1118,7 @@ final class LetterboxConfiguration { } /** - * Whether should use split screen aspect ratio for the activity when camera compat treatment + * Whether we should use split screen aspect ratio for the activity when camera compat treatment * is enabled and activity is connected to the camera in fullscreen. */ boolean isCameraCompatSplitScreenAspectRatioEnabled() { diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 0288e4bbb26e..5b39790d5fda 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -958,7 +958,7 @@ final class LetterboxUiController { * Whether we use split screen aspect ratio for the activity when camera compat treatment * is active because the corresponding config is enabled and activity supports resizing. */ - private boolean isCameraCompatSplitScreenAspectRatioAllowed() { + boolean isCameraCompatSplitScreenAspectRatioAllowed() { return mLetterboxConfiguration.isCameraCompatSplitScreenAspectRatioEnabled() && !mActivityRecord.shouldCreateCompatDisplayInsets(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java index a3117269eb01..3ca35ef7cc26 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java @@ -479,6 +479,8 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase { public void testOnActivityConfigurationChanging_displayRotationNotChanging_noRefresh() throws Exception { configureActivity(SCREEN_ORIENTATION_PORTRAIT); + doReturn(false).when(mActivity.mLetterboxUiController) + .isCameraCompatSplitScreenAspectRatioAllowed(); mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); callOnActivityConfigurationChanging(mActivity, /* isDisplayRotationChanging */ false); @@ -487,6 +489,19 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase { } @Test + public void testOnActivityConfigurationChanging_splitScreenAspectRatioAllowed_refresh() + throws Exception { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + doReturn(true).when(mActivity.mLetterboxUiController) + .isCameraCompatSplitScreenAspectRatioAllowed(); + + mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + callOnActivityConfigurationChanging(mActivity, /* isDisplayRotationChanging */ false); + + assertActivityRefreshRequested(/* refreshRequested */ true); + } + + @Test public void testOnActivityConfigurationChanging_cycleThroughStopDisabled() throws Exception { when(mLetterboxConfiguration.isCameraCompatRefreshCycleThroughStopEnabled()) .thenReturn(false); |