Merge "[DO NOT MERGE] Update window with FLAG_SECURE when bouncer is showing" into qt-dev
This commit is contained in:
@@ -27,6 +27,7 @@ import android.content.pm.ActivityInfo;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.PixelFormat;
|
import android.graphics.PixelFormat;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -204,6 +205,16 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
|||||||
} else {
|
} else {
|
||||||
mLpChanged.privateFlags &= ~LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
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) {
|
private void adjustScreenOrientation(State state) {
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.phone;
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
|
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
@@ -38,6 +40,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Captor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
@@ -54,6 +57,8 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
|
|||||||
private ViewGroup mStatusBarView;
|
private ViewGroup mStatusBarView;
|
||||||
@Mock
|
@Mock
|
||||||
private IActivityManager mActivityManager;
|
private IActivityManager mActivityManager;
|
||||||
|
@Captor
|
||||||
|
private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters;
|
||||||
|
|
||||||
private StatusBarWindowController mStatusBarWindowController;
|
private StatusBarWindowController mStatusBarWindowController;
|
||||||
|
|
||||||
@@ -63,24 +68,27 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
|
|||||||
when(mDozeParameters.getAlwaysOn()).thenReturn(true);
|
when(mDozeParameters.getAlwaysOn()).thenReturn(true);
|
||||||
|
|
||||||
mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager,
|
mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager,
|
||||||
mActivityManager, mDozeParameters);
|
mActivityManager, mDozeParameters) {
|
||||||
|
@Override
|
||||||
|
protected boolean isDebuggable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
mStatusBarWindowController.add(mStatusBarView, 100 /* height */);
|
mStatusBarWindowController.add(mStatusBarView, 100 /* height */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetDozing_hidesSystemOverlays() {
|
public void testSetDozing_hidesSystemOverlays() {
|
||||||
mStatusBarWindowController.setDozing(true);
|
mStatusBarWindowController.setDozing(true);
|
||||||
ArgumentCaptor<WindowManager.LayoutParams> captor =
|
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
|
||||||
ArgumentCaptor.forClass(WindowManager.LayoutParams.class);
|
int flag = mLayoutParameters.getValue().privateFlags
|
||||||
verify(mWindowManager).updateViewLayout(any(), captor.capture());
|
|
||||||
int flag = captor.getValue().privateFlags
|
|
||||||
& WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
& WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||||
assertThat(flag).isNotEqualTo(0);
|
assertThat(flag).isNotEqualTo(0);
|
||||||
|
|
||||||
reset(mWindowManager);
|
reset(mWindowManager);
|
||||||
mStatusBarWindowController.setDozing(false);
|
mStatusBarWindowController.setDozing(false);
|
||||||
verify(mWindowManager).updateViewLayout(any(), captor.capture());
|
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
|
||||||
flag = captor.getValue().privateFlags
|
flag = mLayoutParameters.getValue().privateFlags
|
||||||
& WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
& WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||||
assertThat(flag).isEqualTo(0);
|
assertThat(flag).isEqualTo(0);
|
||||||
}
|
}
|
||||||
@@ -103,4 +111,20 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
|
|||||||
mActivityManager, mDozeParameters);
|
mActivityManager, mDozeParameters);
|
||||||
mStatusBarWindowController.setForcePluginOpen(true);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user