diff options
| author | 2023-05-04 09:08:17 +0000 | |
|---|---|---|
| committer | 2023-05-04 09:08:17 +0000 | |
| commit | 40ae027d9443b2ebfe6f203fbcb4aa3b17de82b3 (patch) | |
| tree | 7a5eab15bf7140358d2f381588c6ef9128bf6f41 | |
| parent | 4e14f566ebf74f396a8ca49ae35ec57e08ba7156 (diff) | |
| parent | 70187af25ce3f56f85ddd703f982caa82f685605 (diff) | |
Merge "Send update config change when letterbox is moved" into udc-dev
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 6 | ||||
| -rw-r--r-- | core/java/android/window/ConfigurationHelper.java | 2 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/app/activity/ActivityThreadTest.java | 6 |
3 files changed, 9 insertions, 5 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 29e135f8b0e9..4c90d7b225a5 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -34,6 +34,7 @@ import static android.view.Display.INVALID_DISPLAY; import static android.window.ConfigurationHelper.freeTextLayoutCachesIfNeeded; import static android.window.ConfigurationHelper.isDifferentDisplay; import static android.window.ConfigurationHelper.shouldUpdateResources; +import static android.window.ConfigurationHelper.shouldUpdateWindowMetricsBounds; import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; import static com.android.internal.os.SafeZipPathValidatorCallback.VALIDATE_ZIP_PATH_FOR_PATH_TRAVERSAL; @@ -6116,6 +6117,11 @@ public final class ActivityThread extends ClientTransactionHandler public static boolean shouldReportChange(@Nullable Configuration currentConfig, @NonNull Configuration newConfig, @Nullable SizeConfigurationBuckets sizeBuckets, int handledConfigChanges, boolean alwaysReportChange) { + // Always report changes in window configuration bounds + if (shouldUpdateWindowMetricsBounds(currentConfig, newConfig)) { + return true; + } + final int publicDiff = currentConfig.diffPublicOnly(newConfig); // Don't report the change if there's no public diff between current and new config. if (publicDiff == 0) { diff --git a/core/java/android/window/ConfigurationHelper.java b/core/java/android/window/ConfigurationHelper.java index e32adcf23a3b..269ce083d205 100644 --- a/core/java/android/window/ConfigurationHelper.java +++ b/core/java/android/window/ConfigurationHelper.java @@ -106,7 +106,7 @@ public class ConfigurationHelper { * @see WindowManager#getCurrentWindowMetrics() * @see WindowManager#getMaximumWindowMetrics() */ - private static boolean shouldUpdateWindowMetricsBounds(@NonNull Configuration currentConfig, + public static boolean shouldUpdateWindowMetricsBounds(@NonNull Configuration currentConfig, @NonNull Configuration newConfig) { final Rect currentBounds = currentConfig.windowConfiguration.getBounds(); final Rect newBounds = newConfig.windowConfiguration.getBounds(); diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java index af81957d1e03..b73a87c8f0d9 100644 --- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java +++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java @@ -451,10 +451,8 @@ public class ActivityThreadTest { final Rect bounds = activity.getWindowManager().getCurrentWindowMetrics().getBounds(); assertEquals(activityConfigPortrait.windowConfiguration.getBounds(), bounds); - // Ensure that Activity#onConfigurationChanged() not be called because the changes in - // WindowConfiguration shouldn't be reported, and we only apply the latest Configuration - // update in transaction. - assertEquals(numOfConfig, activity.mNumOfConfigChanges); + // Ensure changes in window configuration bounds are reported + assertEquals(numOfConfig + 1, activity.mNumOfConfigChanges); } @Test |