Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b75a5d05 authored by Tiger Huang's avatar Tiger Huang Committed by Automerger Merge Worker
Browse files

Merge "Don't show status bar while swiping on visible taskbar" into udc-dev am: d56596cb

parents 944ec1e2 d56596cb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1940,7 +1940,8 @@ public class DisplayPolicy {
        final @InsetsType int restorePositionTypes = (Type.statusBars() | Type.navigationBars())
                & controlTarget.getRequestedVisibleTypes();

        if (swipeTarget == mNavigationBar
        final InsetsSourceProvider sp = swipeTarget.getControllableInsetProvider();
        if (sp != null && sp.getSource().getType() == Type.navigationBars()
                && (restorePositionTypes & Type.navigationBars()) != 0) {
            // Don't show status bar when swiping on already visible navigation bar.
            // But restore the position of navigation bar if it has been moved by the control
+12 −16
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static android.view.WindowInsets.Type.navigationBars;
import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
import static android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
@@ -46,13 +47,7 @@ import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.graphics.PixelFormat;
@@ -367,23 +362,24 @@ public class DisplayPolicyTests extends WindowTestsBase {
        assertEquals(attrs.height - 10, navBarSource.getFrame().height());
    }

    @SetupWindows(addWindows = { W_ACTIVITY, W_NAVIGATION_BAR })
    @Test
    public void testCanSystemBarsBeShownByUser() {
        ((TestWindowManagerPolicy) mWm.mPolicy).mIsUserSetupComplete = true;
        mAppWindow.mAttrs.insetsFlags.behavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
        mAppWindow.setRequestedVisibleTypes(0, navigationBars());
        final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy();
        final WindowState windowState = mock(WindowState.class);
        final InsetsSourceProvider provider = mock(InsetsSourceProvider.class);
        final InsetsControlTarget controlTarget = mock(InsetsControlTarget.class);
        when(provider.getControlTarget()).thenReturn(controlTarget);
        when(windowState.getControllableInsetProvider()).thenReturn(provider);
        when(controlTarget.isRequestedVisible(anyInt())).thenReturn(true);
        displayPolicy.addWindowLw(mNavBarWindow, mNavBarWindow.mAttrs);
        final InsetsSourceProvider navBarProvider = mNavBarWindow.getControllableInsetProvider();
        navBarProvider.updateControlForTarget(mAppWindow, false);
        navBarProvider.getSource().setVisible(false);

        displayPolicy.setCanSystemBarsBeShownByUser(false);
        displayPolicy.requestTransientBars(windowState, true);
        verify(controlTarget, never()).showInsets(anyInt(), anyBoolean(), any() /* statsToken */);
        displayPolicy.requestTransientBars(mNavBarWindow, true);
        assertFalse(mDisplayContent.getInsetsPolicy().isTransient(navigationBars()));

        displayPolicy.setCanSystemBarsBeShownByUser(true);
        displayPolicy.requestTransientBars(windowState, true);
        verify(controlTarget).showInsets(anyInt(), anyBoolean(), any() /* statsToken */);
        displayPolicy.requestTransientBars(mNavBarWindow, true);
        assertTrue(mDisplayContent.getInsetsPolicy().isTransient(navigationBars()));
    }
}