Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5b30c53 authored by Richard MacGregor's avatar Richard MacGregor
Browse files

Refactor NotificationEntry utility methods

IDE extraction of notification visiblity methods into NotificationEntry

Bug: 324111564
Flag: N/A -- IDE tooling refactor only
Test: atest NotificationEntryTest
Test: atest NotificationLockscreenUserManagerTest
Change-Id: Ieaae2f9caf778f7ca90056bc7174fddc878a956d
parent 1684475d
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -749,7 +749,7 @@ public class NotificationLockscreenUserManagerImpl implements
                || isNotifUserRedacted;

        boolean notificationRequestsRedaction =
                ent.getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
                ent.isNotificationVisibilityPrivate();
        boolean userForcesRedaction = packageHasVisibilityOverride(ent.getSbn().getKey());

        if (keyguardPrivateNotifications()) {
@@ -767,9 +767,7 @@ public class NotificationLockscreenUserManagerImpl implements
        }
        NotificationEntry entry = mCommonNotifCollectionLazy.get().getEntry(key);
        if (mFeatureFlags.isEnabled(Flags.NOTIF_LS_BACKGROUND_THREAD)) {
            return entry != null && entry.getRanking().getChannel() != null
                    && entry.getRanking().getChannel().getLockscreenVisibility()
                    == Notification.VISIBILITY_PRIVATE;
            return entry != null && entry.isChannelVisibilityPrivate();
        } else {
            return entry != null
                    && entry.getRanking().getLockscreenVisibilityOverride()
+17 −0
Original line number Diff line number Diff line
@@ -998,6 +998,23 @@ public final class NotificationEntry extends ListEntry {
        return style == null ? "nostyle" : style.getSimpleName();
    }

    /**
     * Return {@code true} if notification's visibility is {@link Notification.VISIBILITY_PRIVATE}
     */
    public boolean isNotificationVisibilityPrivate() {
        return getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
    }

    /**
     * Return {@code true} if notification's channel lockscreen visibility is
     * {@link Notification.VISIBILITY_PRIVATE}
     */
    public boolean isChannelVisibilityPrivate() {
        return getRanking().getChannel() != null
                && getRanking().getChannel().getLockscreenVisibility()
                == Notification.VISIBILITY_PRIVATE;
    }

    /** Information about a suggestion that is being edited. */
    public static class EditedSuggestionInfo {

+61 −1
Original line number Diff line number Diff line
@@ -50,8 +50,8 @@ import android.testing.AndroidTestingRunner;

import androidx.test.filters.SmallTest;

import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.util.time.FakeSystemClock;
@@ -279,6 +279,66 @@ public class NotificationEntryTest extends SysuiTestCase {
        assertTrue(mEntry.isStickyAndNotDemoted());
    }

    @Test
    public void testIsNotificationVisibilityPrivate_true() {
        assertTrue(mEntry.isNotificationVisibilityPrivate());
    }

    @Test
    public void testIsNotificationVisibilityPrivate_visibilityPublic_false() {
        Notification.Builder notification = new Notification.Builder(mContext, "")
                .setVisibility(Notification.VISIBILITY_PUBLIC)
                .setSmallIcon(R.drawable.ic_person)
                .setContentTitle("Title")
                .setContentText("Text");

        NotificationEntry entry = new NotificationEntryBuilder()
                .setPkg(TEST_PACKAGE_NAME)
                .setOpPkg(TEST_PACKAGE_NAME)
                .setUid(TEST_UID)
                .setChannel(mChannel)
                .setId(mId++)
                .setNotification(notification.build())
                .setUser(new UserHandle(ActivityManager.getCurrentUser()))
                .build();

        assertFalse(entry.isNotificationVisibilityPrivate());
    }

    @Test
    public void testIsChannelVisibilityPrivate_true() {
        assertTrue(mEntry.isChannelVisibilityPrivate());
    }

    @Test
    public void testIsChannelVisibilityPrivate_visibilityPublic_false() {
        NotificationChannel channel =
                new NotificationChannel("id", "name", NotificationChannel.USER_LOCKED_IMPORTANCE);
        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        StatusBarNotification sbn = new SbnBuilder().build();
        Ranking ranking = new RankingBuilder()
                .setChannel(channel)
                .setKey(sbn.getKey())
                .build();
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());

        assertFalse(entry.isChannelVisibilityPrivate());
    }

    @Test
    public void testIsChannelVisibilityPrivate_entryHasNoChannel_false() {
        StatusBarNotification sbn = new SbnBuilder().build();
        Ranking ranking = new RankingBuilder()
                .setChannel(null)
                .setKey(sbn.getKey())
                .build();
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());

        assertFalse(entry.isChannelVisibilityPrivate());
    }

    @Test
    public void notificationDataEntry_testIsLastMessageFromReply() {
        Person.Builder person = new Person.Builder()