diff options
author | JianYang Liu <jianyliu@google.com> | 2020-04-03 20:20:35 -0700 |
---|---|---|
committer | JianYang Liu <jianyliu@google.com> | 2020-04-06 08:14:45 -0700 |
commit | ae86b3f16d66a2bad95747ea06a19f44a735d04c (patch) | |
tree | b0813c1284d90312cd541683efd37cf56b9039b0 | |
parent | 754636846c0dd0ba6f8fd025dc3c270efd8bc500 (diff) |
Updated InsetsPolicy to read config_forceShowSystemBars and prevent
system bars from being hidden by applications if true.
Bug: 149233545
Bug: 151820910
Test: atest InsetsPolicyTest, manual
Change-Id: I2bc610c8388200c47efcbfedf6f24fe867a696ec
4 files changed, 21 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 367151cf0f79..aacb3cb81bcc 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -696,6 +696,10 @@ public class DisplayPolicy { mForceShowSystemBarsFromExternal = forceShowSystemBars; } + boolean getForceShowSystemBars() { + return mForceShowSystemBarsFromExternal; + } + public boolean hasNavigationBar() { return mHasNavigationBar; } diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java index 007af249c580..163aca73c217 100644 --- a/services/core/java/com/android/server/wm/InsetsPolicy.java +++ b/services/core/java/com/android/server/wm/InsetsPolicy.java @@ -304,7 +304,10 @@ class InsetsPolicy { // We need to force system bars when the docked stack is visible, when the freeform stack // is visible but also when we are resizing for the transitions when docked stack // visibility changes. - return isDockedStackVisible || isFreeformStackVisible || isResizing; + return isDockedStackVisible + || isFreeformStackVisible + || isResizing + || mPolicy.getForceShowSystemBars(); } @VisibleForTesting diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java index 89bc65b5a44d..b6eb9010ce90 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java @@ -30,7 +30,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; -import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -41,7 +40,6 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; import android.platform.test.annotations.Presubmit; import android.util.IntArray; @@ -49,7 +47,6 @@ import android.view.InsetsSourceControl; import android.view.InsetsState; import android.view.test.InsetsModeSession; -import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import org.junit.AfterClass; @@ -168,6 +165,18 @@ public class InsetsPolicyTest extends WindowTestsBase { } @Test + public void testControlsForDispatch_forceShowSystemBarsFromExternal_appHasNoControl() { + mDisplayContent.getDisplayPolicy().setForceShowSystemBars(true); + addWindow(TYPE_STATUS_BAR, "statusBar"); + addWindow(TYPE_NAVIGATION_BAR, "navBar"); + + final InsetsSourceControl[] controls = addAppWindowAndGetControlsForDispatch(); + + // The focused app window cannot control system bars. + assertNull(controls); + } + + @Test public void testShowTransientBars_bothCanBeTransient_appGetsBothFakeControls() { addNonFocusableWindow(TYPE_STATUS_BAR, "statusBar") .getControllableInsetProvider().getSource().setVisible(false); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 1ca2e318b0d7..397f73c3e67c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -134,6 +134,7 @@ class WindowTestsBase extends SystemServiceTestsBase { mChildAppWindowBelow = createCommonWindow(mAppWindow, TYPE_APPLICATION_MEDIA_OVERLAY, "mChildAppWindowBelow"); + mDisplayContent.getDisplayPolicy().setForceShowSystemBars(false); } // Adding a display will cause freezing the display. Make sure to wait until it's |