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

Commit c69933ac authored by Jay Aliomer's avatar Jay Aliomer
Browse files

Cache Blockable state of Notif. Entry

Bug: 235128948
Bug: 235578225

Test: NotificationEntryTest
Change-Id: I31249bafacabec2eaae06121c80b90c3089bcd07
parent 03c70342
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -175,6 +175,10 @@ public final class NotificationEntry extends ListEntry {
    public boolean mRemoteEditImeAnimatingAway;
    public boolean mRemoteEditImeVisible;
    private boolean mExpandAnimationRunning;
    /**
     * Flag to determine if the entry is blockable by DnD filters
     */
    private boolean mBlockable;

    /**
     * @param sbn the StatusBarNotification from system server
@@ -253,6 +257,7 @@ public final class NotificationEntry extends ListEntry {
        }

        mRanking = ranking.withAudiblyAlertedInfo(mRanking);
        updateIsBlockable();
    }

    /*
@@ -781,15 +786,20 @@ public final class NotificationEntry extends ListEntry {
     * or is not in an allowList).
     */
    public boolean isBlockable() {
        return mBlockable;
    }

    private void updateIsBlockable() {
        if (getChannel() == null) {
            return false;
            mBlockable = false;
            return;
        }
        if (getChannel().isImportanceLockedByCriticalDeviceFunction()
                && !getChannel().isBlockable()) {
            return false;
            mBlockable = false;
            return;
        }

        return true;
        mBlockable = true;
    }

    private boolean shouldSuppressVisualEffect(int effect) {
+6 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ public class NotificationEntryTest extends SysuiTestCase {
    @Test
    public void testBlockableEntryWhenCritical() {
        doReturn(true).when(mChannel).isBlockable();
        mEntry.setRanking(mEntry.getRanking());

        assertTrue(mEntry.isBlockable());
    }
@@ -117,6 +118,7 @@ public class NotificationEntryTest extends SysuiTestCase {
    public void testBlockableEntryWhenCriticalAndChannelNotBlockable() {
        doReturn(true).when(mChannel).isBlockable();
        doReturn(true).when(mChannel).isImportanceLockedByCriticalDeviceFunction();
        mEntry.setRanking(mEntry.getRanking());

        assertTrue(mEntry.isBlockable());
    }
@@ -125,6 +127,7 @@ public class NotificationEntryTest extends SysuiTestCase {
    public void testNonBlockableEntryWhenCriticalAndChannelNotBlockable() {
        doReturn(false).when(mChannel).isBlockable();
        doReturn(true).when(mChannel).isImportanceLockedByCriticalDeviceFunction();
        mEntry.setRanking(mEntry.getRanking());

        assertFalse(mEntry.isBlockable());
    }
@@ -164,6 +167,9 @@ public class NotificationEntryTest extends SysuiTestCase {
        doReturn(true).when(mChannel).isImportanceLockedByCriticalDeviceFunction();
        doReturn(false).when(mChannel).isBlockable();

        mEntry.setRanking(mEntry.getRanking());

        assertFalse(mEntry.isBlockable());
        assertTrue(mEntry.isExemptFromDndVisualSuppression());
        assertFalse(mEntry.shouldSuppressAmbient());
    }