[DO NOT MERGE] Update window with FLAG_SECURE when bouncer is showing
This will prevent bouncer interactions from showing up in screenrecords or screenshots. Fixes: 215005011 Test: atest NotificationShadeWindowControllerImpl && take screenshot with bouncer up Merged-In: I3f59df865dc2dd13d4b9ac54bb2dacb7b23f0aa1 Change-Id: Icde7849a181ce8e0c1074537f6dde897aedd8bb3
This commit is contained in:
@@ -29,6 +29,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.os.Trace;
|
import android.os.Trace;
|
||||||
@@ -264,6 +265,16 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
|
|||||||
}
|
}
|
||||||
Trace.setCounter("display_mode_id", mLpChanged.preferredDisplayModeId);
|
Trace.setCounter("display_mode_id", mLpChanged.preferredDisplayModeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state.mBouncerShowing && !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) {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone;
|
|||||||
|
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||||
|
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
|
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -83,7 +84,12 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
|
|||||||
mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
|
mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
|
||||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||||
mColorExtractor, mDumpManager);
|
mColorExtractor, mDumpManager) {
|
||||||
|
@Override
|
||||||
|
protected boolean isDebuggable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
||||||
|
|
||||||
mNotificationShadeWindowController.attach();
|
mNotificationShadeWindowController.attach();
|
||||||
@@ -183,4 +189,20 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
|
|||||||
assertThat((mLayoutParameters.getValue().flags & FLAG_NOT_FOCUSABLE) != 0).isTrue();
|
assertThat((mLayoutParameters.getValue().flags & FLAG_NOT_FOCUSABLE) != 0).isTrue();
|
||||||
assertThat((mLayoutParameters.getValue().flags & FLAG_ALT_FOCUSABLE_IM) == 0).isTrue();
|
assertThat((mLayoutParameters.getValue().flags & FLAG_ALT_FOCUSABLE_IM) == 0).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setKeyguardShowing_enablesSecureFlag() {
|
||||||
|
mNotificationShadeWindowController.setBouncerShowing(true);
|
||||||
|
|
||||||
|
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
|
||||||
|
assertThat((mLayoutParameters.getValue().flags & FLAG_SECURE) != 0).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setKeyguardNotShowing_disablesSecureFlag() {
|
||||||
|
mNotificationShadeWindowController.setBouncerShowing(false);
|
||||||
|
|
||||||
|
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
|
||||||
|
assertThat((mLayoutParameters.getValue().flags & FLAG_SECURE) == 0).isTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user