Fix split colour in Letterbox Landscape mode
Fix: 241545218 Test: atest WmTests:SizeCompatTests#testLetterboxDetailsForStatusBar_letterboxNotOverlappingStatusBar Change-Id: I08cfe3626f30dc47d03e714fdb839d9e2386568a
This commit is contained in:
@@ -1725,16 +1725,6 @@ public class DisplayPolicy {
|
||||
win.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS,
|
||||
new Rect(win.getFrame())));
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
// 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()) {
|
||||
if (mStatusBar != null) {
|
||||
addStatusBarAppearanceRegionsForDimmingWindow(
|
||||
|
||||
@@ -102,7 +102,6 @@ import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
/**
|
||||
* Tests for Size Compatibility mode.
|
||||
@@ -2164,6 +2163,40 @@ public class SizeCompatTests extends WindowTestsBase {
|
||||
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
|
||||
public void testSplitScreenLetterboxDetailsForStatusBar_twoLetterboxedApps() {
|
||||
mAtm.mDevEnableNonResizableMultiWindow = true;
|
||||
@@ -2785,7 +2818,7 @@ public class SizeCompatTests extends WindowTestsBase {
|
||||
return w;
|
||||
}
|
||||
|
||||
private static void addStatusBar(DisplayContent displayContent) {
|
||||
private static TestWindowState addStatusBar(DisplayContent displayContent) {
|
||||
final DisplayPolicy displayPolicy = displayContent.getDisplayPolicy();
|
||||
doReturn(true).when(displayPolicy).hasStatusBar();
|
||||
displayPolicy.onConfigurationChanged();
|
||||
@@ -2806,6 +2839,7 @@ public class SizeCompatTests extends WindowTestsBase {
|
||||
|
||||
displayPolicy.addWindowLw(statusBar, attrs);
|
||||
displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames);
|
||||
return statusBar;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user