Merge "Send update config change when letterbox is moved" into udc-dev

This commit is contained in:
Graciela Putri
2023-05-04 09:08:17 +00:00
committed by Android (Google) Code Review
3 changed files with 9 additions and 5 deletions

View File

@@ -34,6 +34,7 @@ import static android.view.Display.INVALID_DISPLAY;
import static android.window.ConfigurationHelper.freeTextLayoutCachesIfNeeded; import static android.window.ConfigurationHelper.freeTextLayoutCachesIfNeeded;
import static android.window.ConfigurationHelper.isDifferentDisplay; import static android.window.ConfigurationHelper.isDifferentDisplay;
import static android.window.ConfigurationHelper.shouldUpdateResources; 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.annotations.VisibleForTesting.Visibility.PACKAGE;
import static com.android.internal.os.SafeZipPathValidatorCallback.VALIDATE_ZIP_PATH_FOR_PATH_TRAVERSAL; 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, public static boolean shouldReportChange(@Nullable Configuration currentConfig,
@NonNull Configuration newConfig, @Nullable SizeConfigurationBuckets sizeBuckets, @NonNull Configuration newConfig, @Nullable SizeConfigurationBuckets sizeBuckets,
int handledConfigChanges, boolean alwaysReportChange) { int handledConfigChanges, boolean alwaysReportChange) {
// Always report changes in window configuration bounds
if (shouldUpdateWindowMetricsBounds(currentConfig, newConfig)) {
return true;
}
final int publicDiff = currentConfig.diffPublicOnly(newConfig); final int publicDiff = currentConfig.diffPublicOnly(newConfig);
// Don't report the change if there's no public diff between current and new config. // Don't report the change if there's no public diff between current and new config.
if (publicDiff == 0) { if (publicDiff == 0) {

View File

@@ -106,7 +106,7 @@ public class ConfigurationHelper {
* @see WindowManager#getCurrentWindowMetrics() * @see WindowManager#getCurrentWindowMetrics()
* @see WindowManager#getMaximumWindowMetrics() * @see WindowManager#getMaximumWindowMetrics()
*/ */
private static boolean shouldUpdateWindowMetricsBounds(@NonNull Configuration currentConfig, public static boolean shouldUpdateWindowMetricsBounds(@NonNull Configuration currentConfig,
@NonNull Configuration newConfig) { @NonNull Configuration newConfig) {
final Rect currentBounds = currentConfig.windowConfiguration.getBounds(); final Rect currentBounds = currentConfig.windowConfiguration.getBounds();
final Rect newBounds = newConfig.windowConfiguration.getBounds(); final Rect newBounds = newConfig.windowConfiguration.getBounds();

View File

@@ -451,10 +451,8 @@ public class ActivityThreadTest {
final Rect bounds = activity.getWindowManager().getCurrentWindowMetrics().getBounds(); final Rect bounds = activity.getWindowManager().getCurrentWindowMetrics().getBounds();
assertEquals(activityConfigPortrait.windowConfiguration.getBounds(), bounds); assertEquals(activityConfigPortrait.windowConfiguration.getBounds(), bounds);
// Ensure that Activity#onConfigurationChanged() not be called because the changes in // Ensure changes in window configuration bounds are reported
// WindowConfiguration shouldn't be reported, and we only apply the latest Configuration assertEquals(numOfConfig + 1, activity.mNumOfConfigChanges);
// update in transaction.
assertEquals(numOfConfig, activity.mNumOfConfigChanges);
} }
@Test @Test