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

Commit 08cf16be authored by Ned Burns's avatar Ned Burns Committed by Automerger Merge Worker
Browse files

Merge "Split RankingCoordinator's filter into two" into rvc-dev am: 02fc89ee...

Merge "Split RankingCoordinator's filter into two" into rvc-dev am: 02fc89ee am: 429cc231 am: 705501c4

Change-Id: If9ecfd956af54ed3f04a09ab8157255915dd29d7
parents a7755a54 705501c4
Loading
Loading
Loading
Loading
+11 −13
Original line number Original line Diff line number Diff line
@@ -45,7 +45,8 @@ public class RankingCoordinator implements Coordinator {
    public void attach(NotifPipeline pipeline) {
    public void attach(NotifPipeline pipeline) {
        mStatusBarStateController.addCallback(mStatusBarStateCallback);
        mStatusBarStateController.addCallback(mStatusBarStateCallback);


        pipeline.addPreGroupFilter(mNotifFilter);
        pipeline.addPreGroupFilter(mSuspendedFilter);
        pipeline.addPreGroupFilter(mDozingFilter);
    }
    }


    /**
    /**
@@ -53,33 +54,30 @@ public class RankingCoordinator implements Coordinator {
     * NotifListBuilder invalidates the notification list each time the ranking is updated,
     * NotifListBuilder invalidates the notification list each time the ranking is updated,
     * so we don't need to explicitly invalidate this filter on ranking update.
     * so we don't need to explicitly invalidate this filter on ranking update.
     */
     */
    private final NotifFilter mNotifFilter = new NotifFilter(TAG) {
    private final NotifFilter mSuspendedFilter = new NotifFilter("IsSuspendedFilter") {
        @Override
        @Override
        public boolean shouldFilterOut(NotificationEntry entry, long now) {
        public boolean shouldFilterOut(NotificationEntry entry, long now) {
            // App suspended from Ranking
            return entry.getRanking().isSuspended();
            if (entry.getRanking().isSuspended()) {
                return true;
        }
        }
    };


    private final NotifFilter mDozingFilter = new NotifFilter("IsDozingFilter") {
        @Override
        public boolean shouldFilterOut(NotificationEntry entry, long now) {
            // Dozing + DND Settings from Ranking object
            // Dozing + DND Settings from Ranking object
            if (mStatusBarStateController.isDozing() && entry.shouldSuppressAmbient()) {
            if (mStatusBarStateController.isDozing() && entry.shouldSuppressAmbient()) {
                return true;
                return true;
            }
            }


            if (!mStatusBarStateController.isDozing() && entry.shouldSuppressNotificationList()) {
            return !mStatusBarStateController.isDozing() && entry.shouldSuppressNotificationList();
                return true;
            }

            return false;
        }
        }
    };
    };



    private final StatusBarStateController.StateListener mStatusBarStateCallback =
    private final StatusBarStateController.StateListener mStatusBarStateCallback =
            new StatusBarStateController.StateListener() {
            new StatusBarStateController.StateListener() {
                @Override
                @Override
                public void onDozingChanged(boolean isDozing) {
                public void onDozingChanged(boolean isDozing) {
                    mNotifFilter.invalidateList();
                    mDozingFilter.invalidateList();
                }
                }
            };
            };
}
}
+19 −16
Original line number Original line Diff line number Diff line
@@ -19,9 +19,8 @@ package com.android.systemui.statusbar.notification.collection.coordinator;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;


import static junit.framework.Assert.assertFalse;
import static org.junit.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertTrue;

import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;
@@ -42,6 +41,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoAnnotations;


@@ -51,20 +51,23 @@ public class RankingCoordinatorTest extends SysuiTestCase {


    @Mock private StatusBarStateController mStatusBarStateController;
    @Mock private StatusBarStateController mStatusBarStateController;
    @Mock private NotifPipeline mNotifPipeline;
    @Mock private NotifPipeline mNotifPipeline;

    @Captor private ArgumentCaptor<NotifFilter> mNotifFilterCaptor;

    private NotificationEntry mEntry;
    private NotificationEntry mEntry;
    private RankingCoordinator mRankingCoordinator;
    private NotifFilter mCapturedSuspendedFilter;
    private NotifFilter mRankingFilter;
    private NotifFilter mCapturedDozingFilter;


    @Before
    @Before
    public void setup() {
    public void setup() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
        mRankingCoordinator = new RankingCoordinator(mStatusBarStateController);
        RankingCoordinator rankingCoordinator = new RankingCoordinator(mStatusBarStateController);
        mEntry = new NotificationEntryBuilder().build();
        mEntry = new NotificationEntryBuilder().build();


        ArgumentCaptor<NotifFilter> filterCaptor = ArgumentCaptor.forClass(NotifFilter.class);
        rankingCoordinator.attach(mNotifPipeline);
        mRankingCoordinator.attach(mNotifPipeline);
        verify(mNotifPipeline, times(2)).addPreGroupFilter(mNotifFilterCaptor.capture());
        verify(mNotifPipeline, times(1)).addPreGroupFilter(filterCaptor.capture());
        mCapturedSuspendedFilter = mNotifFilterCaptor.getAllValues().get(0);
        mRankingFilter = filterCaptor.getValue();
        mCapturedDozingFilter = mNotifFilterCaptor.getAllValues().get(1);
    }
    }


    @Test
    @Test
@@ -73,7 +76,7 @@ public class RankingCoordinatorTest extends SysuiTestCase {
        mEntry.setRanking(getRankingForUnfilteredNotif().build());
        mEntry.setRanking(getRankingForUnfilteredNotif().build());


        // THEN don't filter out the notification
        // THEN don't filter out the notification
        assertFalse(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertFalse(mCapturedSuspendedFilter.shouldFilterOut(mEntry, 0));
    }
    }


    @Test
    @Test
@@ -84,7 +87,7 @@ public class RankingCoordinatorTest extends SysuiTestCase {
                .build());
                .build());


        // THEN filter out the notification
        // THEN filter out the notification
        assertTrue(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertTrue(mCapturedSuspendedFilter.shouldFilterOut(mEntry, 0));
    }
    }


    @Test
    @Test
@@ -98,13 +101,13 @@ public class RankingCoordinatorTest extends SysuiTestCase {
        when(mStatusBarStateController.isDozing()).thenReturn(true);
        when(mStatusBarStateController.isDozing()).thenReturn(true);


        // THEN filter out the notification
        // THEN filter out the notification
        assertTrue(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertTrue(mCapturedDozingFilter.shouldFilterOut(mEntry, 0));


        // WHEN it's not dozing (showing the notification list)
        // WHEN it's not dozing (showing the notification list)
        when(mStatusBarStateController.isDozing()).thenReturn(false);
        when(mStatusBarStateController.isDozing()).thenReturn(false);


        // THEN don't filter out the notification
        // THEN don't filter out the notification
        assertFalse(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertFalse(mCapturedDozingFilter.shouldFilterOut(mEntry, 0));
    }
    }


    @Test
    @Test
@@ -118,13 +121,13 @@ public class RankingCoordinatorTest extends SysuiTestCase {
        when(mStatusBarStateController.isDozing()).thenReturn(true);
        when(mStatusBarStateController.isDozing()).thenReturn(true);


        // THEN don't filter out the notification
        // THEN don't filter out the notification
        assertFalse(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertFalse(mCapturedDozingFilter.shouldFilterOut(mEntry, 0));


        // WHEN it's not dozing (showing the notification list)
        // WHEN it's not dozing (showing the notification list)
        when(mStatusBarStateController.isDozing()).thenReturn(false);
        when(mStatusBarStateController.isDozing()).thenReturn(false);


        // THEN filter out the notification
        // THEN filter out the notification
        assertTrue(mRankingFilter.shouldFilterOut(mEntry, 0));
        assertTrue(mCapturedDozingFilter.shouldFilterOut(mEntry, 0));
    }
    }


    private RankingBuilder getRankingForUnfilteredNotif() {
    private RankingBuilder getRankingForUnfilteredNotif() {