diff options
| -rw-r--r-- | core/java/com/android/internal/widget/LockPatternUtils.java | 5 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManager.java | 17 |
2 files changed, 21 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index bf075bf800f4..fde7e961b843 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -1455,6 +1455,11 @@ public class LockPatternUtils { 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 47fa1d2167f0..cc584e7e79fe 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.TextView; 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 @@ public class NotificationLockscreenUserManager implements Dumpable { 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 @@ public class NotificationLockscreenUserManager implements Dumpable { 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 @@ public class NotificationLockscreenUserManager implements Dumpable { } /** + * 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); } /** |