Delete unused code from NotifLockscreenUserManager

Bug: 200269355
Test: atest SystemUITests
Change-Id: I8d0546eab8f66ad76636c1212c15cda386f522da
This commit is contained in:
Steve Elliott
2022-08-23 15:01:14 -04:00
parent 3292a30a1c
commit 28ea00f4ab
4 changed files with 4 additions and 201 deletions

View File

@@ -49,12 +49,6 @@ public interface NotificationLockscreenUserManager {
/** Adds a listener to be notified when the current user changes. */
void addUserChangedListener(UserChangedListener listener);
/**
* Registers a [KeyguardNotificationSuppressor] that will be consulted during
* {@link #shouldShowOnKeyguard(NotificationEntry)}
*/
void addKeyguardNotificationSuppressor(KeyguardNotificationSuppressor suppressor);
/**
* Removes a listener previously registered with
* {@link #addUserChangedListener(UserChangedListener)}
@@ -63,14 +57,8 @@ public interface NotificationLockscreenUserManager {
SparseArray<UserInfo> getCurrentProfiles();
void setLockscreenPublicMode(boolean isProfilePublic, int userId);
boolean shouldShowLockscreenNotifications();
boolean shouldHideNotifications(int userId);
boolean shouldHideNotifications(String key);
boolean shouldShowOnKeyguard(NotificationEntry entry);
boolean isAnyProfilePublicMode();
void updatePublicMode();
@@ -108,11 +96,6 @@ public interface NotificationLockscreenUserManager {
default void onUserRemoved(int userId) {}
}
/** Used to hide notifications on the lockscreen */
interface KeyguardNotificationSuppressor {
boolean shouldSuppressOnKeyguard(NotificationEntry entry);
}
/**
* Notified when any state pertaining to Notifications has changed; any methods pertaining to
* notifications should be re-queried.

View File

@@ -15,17 +15,13 @@
*/
package com.android.systemui.statusbar;
import static android.app.Notification.VISIBILITY_SECRET;
import static android.app.admin.DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED;
import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
import android.app.ActivityManager;
import android.app.KeyguardManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -42,9 +38,10 @@ import android.util.Log;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import androidx.annotation.VisibleForTesting;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -110,7 +107,6 @@ public class NotificationLockscreenUserManagerImpl implements
private LockPatternUtils mLockPatternUtils;
protected KeyguardManager mKeyguardManager;
private int mState = StatusBarState.SHADE;
private List<KeyguardNotificationSuppressor> mKeyguardSuppressors = new ArrayList<>();
private final ListenerSet<NotificationStateChangedListener> mNotifStateChangedListeners =
new ListenerSet<>();
@@ -344,67 +340,6 @@ public class NotificationLockscreenUserManagerImpl implements
}
}
/**
* 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;
}
boolean inLockdown = Dependency.get(KeyguardUpdateMonitor.class).isUserInLockdown(userId);
mUsersInLockdownLatestResult.put(userId, inLockdown);
return inLockdown;
}
/**
* 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) {
boolean hide = isLockscreenPublicMode(userId) && !userAllowsNotificationsInPublic(userId)
|| (userId != mCurrentUserId && shouldHideNotifications(mCurrentUserId))
|| shouldTemporarilyHideNotifications(userId);
mShouldHideNotifsLatestResult.put(userId, hide);
return hide;
}
/**
* Returns true if we're on a secure lockscreen and the user wants to hide notifications via
* package-specific override.
*/
public boolean shouldHideNotifications(String key) {
if (mCommonNotifCollectionLazy.get() == null) {
Log.wtf(TAG, "mCommonNotifCollectionLazy was null!", new Throwable());
return true;
}
NotificationEntry visibleEntry = mCommonNotifCollectionLazy.get().getEntry(key);
return isLockscreenPublicMode(mCurrentUserId) && visibleEntry != null
&& visibleEntry.getRanking().getLockscreenVisibilityOverride() == VISIBILITY_SECRET;
}
public boolean shouldShowOnKeyguard(NotificationEntry entry) {
if (mCommonNotifCollectionLazy.get() == null) {
Log.wtf(TAG, "mCommonNotifCollectionLazy was null!", new Throwable());
return false;
}
for (int i = 0; i < mKeyguardSuppressors.size(); i++) {
if (mKeyguardSuppressors.get(i).shouldSuppressOnKeyguard(entry)) {
return false;
}
}
boolean exceedsPriorityThreshold;
if (mHideSilentNotificationsOnLockscreen) {
exceedsPriorityThreshold =
entry.getBucket() == BUCKET_MEDIA_CONTROLS
|| (entry.getBucket() != BUCKET_SILENT
&& entry.getImportance() >= NotificationManager.IMPORTANCE_DEFAULT);
} else {
exceedsPriorityThreshold = !entry.getRanking().isAmbient();
}
return mShowLockscreenNotifications && exceedsPriorityThreshold;
}
private void setShowLockscreenNotifications(boolean show) {
mShowLockscreenNotifications = show;
}
@@ -491,7 +426,8 @@ public class NotificationLockscreenUserManagerImpl implements
/**
* Save the current "public" (locked and secure) state of the lockscreen.
*/
public void setLockscreenPublicMode(boolean publicMode, int userId) {
@VisibleForTesting
void setLockscreenPublicMode(boolean publicMode, int userId) {
mLockscreenPublicMode.put(userId, publicMode);
}
@@ -673,11 +609,6 @@ public class NotificationLockscreenUserManagerImpl implements
mListeners.add(listener);
}
@Override
public void addKeyguardNotificationSuppressor(KeyguardNotificationSuppressor suppressor) {
mKeyguardSuppressors.add(suppressor);
}
@Override
public void removeUserChangedListener(UserChangedListener listener) {
mListeners.remove(listener);

View File

@@ -16,15 +16,8 @@
package com.android.systemui.statusbar;
import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.content.Intent.ACTION_USER_SWITCHED;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_MEDIA_CONTROLS;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_PEOPLE;
import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_SILENT;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
@@ -60,7 +53,6 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager.KeyguardNotificationSuppressor;
import com.android.systemui.statusbar.NotificationLockscreenUserManager.NotificationStateChangedListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -359,93 +351,6 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
verify(listener, never()).onNotificationStateChanged();
}
@Test
public void testShowSilentNotifications_settingSaysShow() {
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 1);
mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
NotificationEntry entry = new NotificationEntryBuilder()
.setImportance(IMPORTANCE_LOW)
.build();
entry.setBucket(BUCKET_SILENT);
assertTrue(mLockscreenUserManager.shouldShowOnKeyguard(entry));
}
@Test
public void testShowSilentNotifications_settingSaysHide() {
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 0);
mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
final Notification notification = mock(Notification.class);
when(notification.isForegroundService()).thenReturn(true);
NotificationEntry entry = new NotificationEntryBuilder()
.setImportance(IMPORTANCE_LOW)
.setNotification(notification)
.build();
entry.setBucket(BUCKET_SILENT);
assertFalse(mLockscreenUserManager.shouldShowOnKeyguard(entry));
}
@Test
public void testShowSilentNotificationsPeopleBucket_settingSaysHide() {
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 0);
mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
final Notification notification = mock(Notification.class);
when(notification.isForegroundService()).thenReturn(true);
NotificationEntry entry = new NotificationEntryBuilder()
.setImportance(IMPORTANCE_LOW)
.setNotification(notification)
.build();
entry.setBucket(BUCKET_PEOPLE);
assertFalse(mLockscreenUserManager.shouldShowOnKeyguard(entry));
}
@Test
public void testShowSilentNotificationsMediaBucket_settingSaysHide() {
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, 0);
mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
final Notification notification = mock(Notification.class);
when(notification.isForegroundService()).thenReturn(true);
NotificationEntry entry = new NotificationEntryBuilder()
.setImportance(IMPORTANCE_LOW)
.setNotification(notification)
.build();
entry.setBucket(BUCKET_MEDIA_CONTROLS);
// always show media controls, even if they're silent
assertTrue(mLockscreenUserManager.shouldShowOnKeyguard(entry));
}
@Test
public void testKeyguardNotificationSuppressors() {
// GIVEN a notification that should be shown on the lockscreen
mSettings.putInt(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
final NotificationEntry entry = new NotificationEntryBuilder()
.setImportance(IMPORTANCE_HIGH)
.build();
entry.setBucket(BUCKET_ALERTING);
// WHEN a suppressor is added that filters out all entries
FakeKeyguardSuppressor suppressor = new FakeKeyguardSuppressor();
mLockscreenUserManager.addKeyguardNotificationSuppressor(suppressor);
// THEN it's filtered out
assertFalse(mLockscreenUserManager.shouldShowOnKeyguard(entry));
// WHEN the suppressor no longer filters out entries
suppressor.setShouldSuppress(false);
// THEN it's no longer filtered out
assertTrue(mLockscreenUserManager.shouldShowOnKeyguard(entry));
}
private class TestNotificationLockscreenUserManager
extends NotificationLockscreenUserManagerImpl {
public TestNotificationLockscreenUserManager(Context context) {
@@ -478,17 +383,4 @@ public class NotificationLockscreenUserManagerTest extends SysuiTestCase {
return mSettingsObserver;
}
}
private static class FakeKeyguardSuppressor implements KeyguardNotificationSuppressor {
private boolean mShouldSuppress = true;
@Override
public boolean shouldSuppressOnKeyguard(NotificationEntry entry) {
return mShouldSuppress;
}
public void setShouldSuppress(boolean shouldSuppress) {
mShouldSuppress = shouldSuppress;
}
}
}

View File

@@ -18,7 +18,6 @@ package com.android.systemui.statusbar.notification;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
@@ -128,8 +127,6 @@ public class DynamicPrivacyControllerTest extends SysuiTestCase {
@Test
public void testNotNotifiedWithoutNotifications() {
when(mKeyguardStateController.canDismissLockScreen()).thenReturn(true);
when(mLockScreenUserManager.shouldHideNotifications(anyInt())).thenReturn(
true);
mDynamicPrivacyController.onUnlockedChanged();
verifyNoMoreInteractions(mListener);
}