Merge "Hide notifications when in Lockdown mode" into pi-dev
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index bf075bf..fde7e96 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -1455,6 +1455,11 @@
return (getStrongAuthForUser(userId) & ~StrongAuthTracker.ALLOWING_FINGERPRINT) == 0;
}
+ public boolean isUserInLockdown(int userId) {
+ return getStrongAuthForUser(userId)
+ == StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
+ }
+
private ICheckCredentialProgressCallback wrapCallback(
final CheckCredentialProgressCallback callback) {
if (callback == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
index 47fa1d2..cc584e7e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java
@@ -38,6 +38,7 @@
import android.widget.Toast;
import com.android.internal.statusbar.IStatusBarService;
+import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.OverviewProxyService;
@@ -67,6 +68,7 @@
Dependency.get(DeviceProvisionedController.class);
private final UserManager mUserManager;
private final IStatusBarService mBarService;
+ private final LockPatternUtils mLockPatternUtils;
private boolean mShowLockscreenNotifications;
private boolean mAllowLockscreenRemoteInput;
@@ -155,6 +157,7 @@
mCurrentUserId = ActivityManager.getCurrentUser();
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
+ mLockPatternUtils = new LockPatternUtils(mContext);
}
public void setUpWithPresenter(NotificationPresenter presenter,
@@ -259,12 +262,24 @@
}
/**
+ * Returns true if notifications are temporarily disabled for this user for security reasons,
+ * regardless of the normal settings for that user.
+ */
+ private boolean shouldTemporarilyHideNotifications(int userId) {
+ if (userId == UserHandle.USER_ALL) {
+ userId = mCurrentUserId;
+ }
+ return mLockPatternUtils.isUserInLockdown(userId);
+ }
+
+ /**
* Returns true if we're on a secure lockscreen and the user wants to hide notification data.
* If so, notifications should be hidden.
*/
public boolean shouldHideNotifications(int userId) {
return isLockscreenPublicMode(userId) && !userAllowsNotificationsInPublic(userId)
- || (userId != mCurrentUserId && shouldHideNotifications(mCurrentUserId));
+ || (userId != mCurrentUserId && shouldHideNotifications(mCurrentUserId))
+ || shouldTemporarilyHideNotifications(userId);
}
/**