Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java +31 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading @@ -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(); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java +11 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowControllerTest.java +31 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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); } Loading @@ -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(); } }