summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vali Calinescu <vcalinescu@google.com> 2023-05-11 14:25:05 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-05-11 14:25:05 +0000
commit64696fa4167f440c7b55b200cb77c2854c6730df (patch)
treed7e7332df88044ee87d99e652f81898b83ad06c3
parentdb2bd90fb4beb074220d7b4743bce7b97aa588e6 (diff)
parent2833289b21a6347565f27b49d62ef466e26a6a49 (diff)
Merge "Refresh activity after stronger letterboxing for camera compat" into udc-dev
-rw-r--r--data/etc/services.core.protolog.json12
-rw-r--r--services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java11
-rw-r--r--services/core/java/com/android/server/wm/LetterboxConfiguration.java4
-rw-r--r--services/core/java/com/android/server/wm/LetterboxUiController.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayRotationCompatPolicyTests.java15
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);