Loading services/core/java/com/android/server/wm/DisplayPolicy.java +11 −10 Original line number Diff line number Diff line Loading @@ -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); } } } } Loading @@ -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( Loading services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +36 −2 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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(); Loading @@ -2806,6 +2839,7 @@ public class SizeCompatTests extends WindowTestsBase { displayPolicy.addWindowLw(statusBar, attrs); displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames); return statusBar; } /** Loading Loading
services/core/java/com/android/server/wm/DisplayPolicy.java +11 −10 Original line number Diff line number Diff line Loading @@ -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); } } } } Loading @@ -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( Loading
services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +36 −2 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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(); Loading @@ -2806,6 +2839,7 @@ public class SizeCompatTests extends WindowTestsBase { displayPolicy.addWindowLw(statusBar, attrs); displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames); return statusBar; } /** Loading