From a9df09013424ba0f9bec71c6ccf0e213a4428564 Mon Sep 17 00:00:00 2001 From: tomnatan Date: Mon, 10 Jan 2022 14:13:43 +0000 Subject: [PATCH] Show Letterbox background without rounded corners for transparent activities Fix: 211953363 Test: atest WmTests:SizeCompatTests Change-Id: Ib4a99b74ee6fd78ba3a13e561239a655300f7af4 --- .../com/android/server/wm/LetterboxConfiguration.java | 2 +- .../com/android/server/wm/LetterboxUiController.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java index 212a036f15c28..e8490c5873ef2 100644 --- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java +++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java @@ -174,7 +174,7 @@ final class LetterboxConfiguration { * Overrides corners raidus for activities presented in the letterbox mode. If given value < 0, * both it and a value of {@link * com.android.internal.R.integer.config_letterboxActivityCornersRadius} will be ignored and - * and corners of the activity won't be rounded. + * corners of the activity won't be rounded. */ void setLetterboxActivityCornersRadius(int cornersRadius) { mLetterboxActivityCornersRadius = cornersRadius; diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 7d073573835ff..8866343afe030 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -150,7 +150,7 @@ final class LetterboxUiController { if (mLetterbox == null) { mLetterbox = new Letterbox(() -> mActivityRecord.makeChildSurface(null), mActivityRecord.mWmService.mTransactionFactory, - mLetterboxConfiguration::isLetterboxActivityCornersRounded, + this::shouldLetterboxHaveRoundedCorners, this::getLetterboxBackgroundColor, this::hasWallpaperBackgroudForLetterbox, this::getLetterboxWallpaperBlurRadius, @@ -175,6 +175,13 @@ final class LetterboxUiController { } } + private boolean shouldLetterboxHaveRoundedCorners() { + // TODO(b/214030873): remove once background is drawn for transparent activities + // Letterbox shouldn't have rounded corners if the activity is transparent + return mLetterboxConfiguration.isLetterboxActivityCornersRounded() + && mActivityRecord.fillsParent(); + } + float getHorizontalPositionMultiplier(Configuration parentConfiguration) { // Don't check resolved configuration because it may not be updated yet during // configuration change. @@ -257,8 +264,6 @@ final class LetterboxUiController { @VisibleForTesting boolean shouldShowLetterboxUi(WindowState mainWindow) { return isSurfaceReadyAndVisible(mainWindow) && mainWindow.areAppWindowBoundsLetterboxed() - // Check that an activity isn't transparent. - && mActivityRecord.fillsParent() // Check for FLAG_SHOW_WALLPAPER explicitly instead of using // WindowContainer#showWallpaper because the later will return true when this // activity is using blurred wallpaper for letterbox backgroud.