Merge "Fix split colour in Letterbox Landscape mode" into tm-qpr-dev

This commit is contained in:
Vali Calinescu
2022-08-10 09:18:59 +00:00
committed by Android (Google) Code Review
2 changed files with 47 additions and 12 deletions

View File

@@ -1725,16 +1725,6 @@ public class DisplayPolicy {
win.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS, win.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS,
new Rect(win.getFrame()))); new Rect(win.getFrame())));
mStatusBarColorCheckedBounds.union(sTmpRect); mStatusBarColorCheckedBounds.union(sTmpRect);
// Check if current activity is letterboxed in order create a LetterboxDetails
// component to be passed to SysUI for status bar treatment
final ActivityRecord currentActivity = win.getActivityRecord();
if (currentActivity != null) {
final LetterboxDetails currentLetterboxDetails = currentActivity
.mLetterboxUiController.getLetterboxDetails();
if (currentLetterboxDetails != null) {
mLetterboxDetails.add(currentLetterboxDetails);
}
}
} }
} }
@@ -1752,6 +1742,17 @@ public class DisplayPolicy {
mNavBarBackgroundWindow = win; mNavBarBackgroundWindow = win;
} }
} }
// Check if current activity is letterboxed in order create a LetterboxDetails
// component to be passed to SysUI for status bar treatment
final ActivityRecord currentActivity = win.getActivityRecord();
if (currentActivity != null) {
final LetterboxDetails currentLetterboxDetails = currentActivity
.mLetterboxUiController.getLetterboxDetails();
if (currentLetterboxDetails != null) {
mLetterboxDetails.add(currentLetterboxDetails);
}
}
} else if (win.isDimming()) { } else if (win.isDimming()) {
if (mStatusBar != null) { if (mStatusBar != null) {
addStatusBarAppearanceRegionsForDimmingWindow( addStatusBarAppearanceRegionsForDimmingWindow(

View File

@@ -102,7 +102,6 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mockito;
/** /**
* Tests for Size Compatibility mode. * Tests for Size Compatibility mode.
@@ -2164,6 +2163,40 @@ public class SizeCompatTests extends WindowTestsBase {
any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails)); any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails));
} }
@Test
public void testLetterboxDetailsForStatusBar_letterboxNotOverlappingStatusBar() {
final DisplayContent display = new TestDisplayContent.Builder(mAtm, 1000, 2800)
.setNotch(100)
.build();
setUpApp(display);
TestWindowState statusBar = addStatusBar(mActivity.mDisplayContent);
spyOn(statusBar);
doReturn(new Rect(0, 0, statusBar.mRequestedWidth, statusBar.mRequestedHeight))
.when(statusBar).getFrame();
addWindowToActivity(mActivity); // Add a window to the activity so that we can get an
// appearance inside letterboxDetails
// Prepare unresizable activity with max aspect ratio
prepareUnresizable(mActivity, /* maxAspect */ 1.1f, SCREEN_ORIENTATION_UNSPECIFIED);
// Refresh the letterbox
mActivity.mRootWindowContainer.performSurfacePlacement();
Rect mBounds = new Rect(mActivity.getWindowConfiguration().getBounds());
assertEquals(mBounds, new Rect(0, 750, 1000, 1950));
DisplayPolicy displayPolicy = mActivity.getDisplayContent().getDisplayPolicy();
LetterboxDetails[] expectedLetterboxDetails = {new LetterboxDetails(
mBounds,
mActivity.getDisplayContent().getBounds(),
mActivity.findMainWindow().mAttrs.insetsFlags.appearance
)};
// Check that letterboxDetails actually gets passed to SysUI
StatusBarManagerInternal statusBarManager = displayPolicy.getStatusBarManagerInternal();
verify(statusBarManager).onSystemBarAttributesChanged(anyInt(), anyInt(),
any(), anyBoolean(), anyInt(),
any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails));
}
@Test @Test
public void testSplitScreenLetterboxDetailsForStatusBar_twoLetterboxedApps() { public void testSplitScreenLetterboxDetailsForStatusBar_twoLetterboxedApps() {
mAtm.mDevEnableNonResizableMultiWindow = true; mAtm.mDevEnableNonResizableMultiWindow = true;
@@ -2785,7 +2818,7 @@ public class SizeCompatTests extends WindowTestsBase {
return w; return w;
} }
private static void addStatusBar(DisplayContent displayContent) { private static TestWindowState addStatusBar(DisplayContent displayContent) {
final DisplayPolicy displayPolicy = displayContent.getDisplayPolicy(); final DisplayPolicy displayPolicy = displayContent.getDisplayPolicy();
doReturn(true).when(displayPolicy).hasStatusBar(); doReturn(true).when(displayPolicy).hasStatusBar();
displayPolicy.onConfigurationChanged(); displayPolicy.onConfigurationChanged();
@@ -2806,6 +2839,7 @@ public class SizeCompatTests extends WindowTestsBase {
displayPolicy.addWindowLw(statusBar, attrs); displayPolicy.addWindowLw(statusBar, attrs);
displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames); displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames);
return statusBar;
} }
/** /**