Merge "Refresh activity after stronger letterboxing for camera compat" into udc-dev

This commit is contained in:
Vali Calinescu
2023-05-11 14:25:05 +00:00
committed by Android (Google) Code Review
5 changed files with 31 additions and 13 deletions

View File

@@ -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",

View File

@@ -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();
}

View File

@@ -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() {

View File

@@ -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();
}

View File

@@ -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);
@@ -486,6 +488,19 @@ public final class DisplayRotationCompatPolicyTests extends WindowTestsBase {
assertActivityRefreshRequested(/* refreshRequested */ false);
}
@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())