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

Commit 2663e8aa authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "[DO NOT MERGE] Update window with FLAG_SECURE when bouncer is showing" into qt-dev

parents 5a292b8b c561831a
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.PixelFormat;
import android.os.Binder;
import android.os.Build;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.util.Log;
@@ -204,6 +205,16 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
        } else {
            mLpChanged.privateFlags &= ~LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
        }

        if (state.bouncerShowing && !isDebuggable()) {
            mLpChanged.flags |= LayoutParams.FLAG_SECURE;
        } else {
            mLpChanged.flags &= ~LayoutParams.FLAG_SECURE;
        }
    }

    protected boolean isDebuggable() {
        return Build.IS_DEBUGGABLE;
    }

    private void adjustScreenOrientation(State state) {
+31 −7
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.statusbar.phone;

import static android.view.WindowManager.LayoutParams.FLAG_SECURE;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
@@ -38,6 +40,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

@@ -54,6 +57,8 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
    private ViewGroup mStatusBarView;
    @Mock
    private IActivityManager mActivityManager;
    @Captor
    private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters;

    private StatusBarWindowController mStatusBarWindowController;

@@ -63,24 +68,27 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
        when(mDozeParameters.getAlwaysOn()).thenReturn(true);

        mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager,
                mActivityManager, mDozeParameters);
                mActivityManager, mDozeParameters) {
                    @Override
                    protected boolean isDebuggable() {
                        return false;
                    }
            };
        mStatusBarWindowController.add(mStatusBarView, 100 /* height */);
    }

    @Test
    public void testSetDozing_hidesSystemOverlays() {
        mStatusBarWindowController.setDozing(true);
        ArgumentCaptor<WindowManager.LayoutParams> captor =
                ArgumentCaptor.forClass(WindowManager.LayoutParams.class);
        verify(mWindowManager).updateViewLayout(any(), captor.capture());
        int flag = captor.getValue().privateFlags
        verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
        int flag = mLayoutParameters.getValue().privateFlags
                & WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
        assertThat(flag).isNotEqualTo(0);

        reset(mWindowManager);
        mStatusBarWindowController.setDozing(false);
        verify(mWindowManager).updateViewLayout(any(), captor.capture());
        flag = captor.getValue().privateFlags
        verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
        flag = mLayoutParameters.getValue().privateFlags
                & WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
        assertThat(flag).isEqualTo(0);
    }
@@ -103,4 +111,20 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
                mActivityManager, mDozeParameters);
        mStatusBarWindowController.setForcePluginOpen(true);
    }

    @Test
    public void setKeyguardShowing_enablesSecureFlag() {
        mStatusBarWindowController.setBouncerShowing(true);

        verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
        assertThat((mLayoutParameters.getValue().flags & FLAG_SECURE) != 0).isTrue();
    }

    @Test
    public void setKeyguardNotShowing_disablesSecureFlag() {
        mStatusBarWindowController.setBouncerShowing(false);

        verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
        assertThat((mLayoutParameters.getValue().flags & FLAG_SECURE) == 0).isTrue();
    }
}