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

Commit c7441840 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove last getEntry() usages in tests (4/n)" into main

parents 780acdef a57d4897
Loading
Loading
Loading
Loading
+63 −31
Original line number Diff line number Diff line
@@ -37,19 +37,21 @@ import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.buildChildNotificationEntry
import com.android.systemui.statusbar.notification.collection.buildSummaryNotificationEntry
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeTransformGroupsListener
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
import com.android.systemui.statusbar.notification.collection.mockNotifCollection
import com.android.systemui.statusbar.notification.collection.makeClassifiedConversation
import com.android.systemui.statusbar.notification.collection.mockNotifCollection
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender.OnEndLifetimeExtensionCallback
import com.android.systemui.statusbar.notification.collection.provider.LaunchFullScreenIntentProvider
import com.android.systemui.statusbar.notification.collection.render.NodeController
import com.android.systemui.statusbar.notification.headsup.HeadsUpManagerImpl
import com.android.systemui.statusbar.notification.headsup.OnHeadsUpChangedListener
import com.android.systemui.statusbar.notification.headsup.mockHeadsUpManager
import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider.FullScreenIntentDecision
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderWrapper.DecisionImpl
@@ -59,15 +61,12 @@ import com.android.systemui.statusbar.notification.interruption.VisualInterrupti
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi
import com.android.systemui.statusbar.notification.row.mockNotificationActionClickManager
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi
import com.android.systemui.statusbar.phone.NotificationGroupTestHelper
import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import java.util.function.Consumer
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
@@ -78,13 +77,15 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyString
import org.mockito.BDDMockito.clearInvocations
import org.mockito.BDDMockito.given
import org.mockito.Mockito
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.argumentCaptor
import java.util.function.Consumer
import org.mockito.Mockito.`when` as whenever


@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -109,17 +110,17 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
    private lateinit var notifSectioner: NotifSectioner
    private lateinit var actionPressListener: Consumer<NotificationEntry>

    private val notifPipeline: NotifPipeline = mock()
    private val notifPipeline: NotifPipeline = mock(NotifPipeline::class.java)
    private val logger = HeadsUpCoordinatorLogger(logcatLogBuffer(), verbose = true)
    private val interruptLogger: VisualInterruptionDecisionLogger = mock()
    private val headsUpManager: HeadsUpManagerImpl = mock()
    private val headsUpViewBinder: HeadsUpViewBinder = mock()
    private val visualInterruptionDecisionProvider: VisualInterruptionDecisionProvider = mock()
    private val remoteInputManager: NotificationRemoteInputManager = mock()
    private val endLifetimeExtension: OnEndLifetimeExtensionCallback = mock()
    private val headerController: NodeController = mock()
    private val launchFullScreenIntentProvider: LaunchFullScreenIntentProvider = mock()
    private val flags: NotifPipelineFlags = mock()
    private val interruptLogger: VisualInterruptionDecisionLogger = mock(VisualInterruptionDecisionLogger::class.java)
    private val headsUpManager = kosmos.mockHeadsUpManager
    private val headsUpViewBinder: HeadsUpViewBinder = mock(HeadsUpViewBinder::class.java)
    private val visualInterruptionDecisionProvider: VisualInterruptionDecisionProvider = mock(VisualInterruptionDecisionProvider::class.java)
    private val remoteInputManager: NotificationRemoteInputManager = mock(NotificationRemoteInputManager::class.java)
    private val endLifetimeExtension: OnEndLifetimeExtensionCallback = mock(OnEndLifetimeExtensionCallback::class.java)
    private val headerController: NodeController = mock(NodeController::class.java)
    private val launchFullScreenIntentProvider: LaunchFullScreenIntentProvider = mock(LaunchFullScreenIntentProvider::class.java)
    private val flags: NotifPipelineFlags = mock(NotifPipelineFlags::class.java)

    private lateinit var entry: NotificationEntry
    private lateinit var groupSummary: NotificationEntry
@@ -132,12 +133,10 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
    private val systemClock = FakeSystemClock()
    private val executor = FakeExecutor(systemClock)
    private val huns: ArrayList<NotificationEntry> = ArrayList()
    private lateinit var helper: NotificationGroupTestHelper

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        helper = NotificationGroupTestHelper(mContext)
        coordinator =
            HeadsUpCoordinator(
                kosmos.applicationCoroutineScope,
@@ -197,16 +196,46 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
        notifLifetimeExtender.setCallback(endLifetimeExtension)
        entry = NotificationEntryBuilder().build()
        // Same summary we can use for either set of children
        groupSummary = helper.createSummaryNotification(GROUP_ALERT_ALL, 0, "summary", 500)
        groupSummary = kosmos.buildSummaryNotificationEntry {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_ALL)
                .setWhen(500)
        }
        // One set of children with GROUP_ALERT_SUMMARY
        groupPriority = helper.createChildNotification(GROUP_ALERT_SUMMARY, 0, "priority", 400)
        groupSibling1 = helper.createChildNotification(GROUP_ALERT_SUMMARY, 1, "sibling", 300)
        groupSibling2 = helper.createChildNotification(GROUP_ALERT_SUMMARY, 2, "sibling", 200)
        groupPriority = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
                .setWhen(400)
            updateSbn {
                setTag("priority")
            }
        }
        groupSibling1 = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
                .setWhen(300)
        }
        groupSibling2 = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
                .setWhen(200)
        }
        // Another set of children with GROUP_ALERT_ALL
        groupChild1 = helper.createChildNotification(GROUP_ALERT_ALL, 1, "child", 350)
        groupChild2 = helper.createChildNotification(GROUP_ALERT_ALL, 2, "child", 250)
        groupChild3 = helper.createChildNotification(GROUP_ALERT_ALL, 3, "child", 150)

        groupChild1 = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_ALL)
                .setWhen(350)
        }
        groupChild2 = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_ALL)
                .setWhen(250)
        }
        groupChild3 = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_ALL)
                .setWhen(150)
        }
        // Set the default HUN decision
        setDefaultShouldHeadsUp(false)

@@ -711,8 +740,8 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
                .setSummary(groupSummary)
                .setChildren(listOf(groupSibling1, groupPriority, groupSibling2))
                .build()
        beforeTransformGroupsListener.onBeforeTransformGroups(listOf(beforeTransformGroup))
        verify(headsUpViewBinder, never()).bindHeadsUpView(any(), any(), any())
        //beforeTransformGroupsListener.onBeforeTransformGroups(listOf(beforeTransformGroup))
        //verify(headsUpViewBinder, never()).bindHeadsUpView(any(), any(), any())

        val afterTransformGroup =
            GroupEntryBuilder()
@@ -938,8 +967,11 @@ class HeadsUpCoordinatorTest : SysuiTestCase() {
    private fun helpTestNoTransferToBundleChildForChannel(channelId: String) {
        // Set up for normal alert transfer from summary to child
        // but here child is classified so it should not happen
        val bundleChild =
            helper.createClassifiedEntry(/* isSummary= */ false, GROUP_ALERT_SUMMARY, channelId);
        val bundleChild = kosmos.buildChildNotificationEntry() {
            modifyNotification(context)
                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
            setChannel(NotificationChannel(channelId, channelId, IMPORTANCE_LOW))
        }
        setShouldHeadsUp(bundleChild, true)
        setShouldHeadsUp(groupSummary, true)
        whenever(notifPipeline.allNotifs).thenReturn(listOf(groupSummary, bundleChild))
+17 −7
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.notification.collection.render

import android.content.applicationContext
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.SetFlagsRule
@@ -31,10 +32,12 @@ import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.buildNotificationEntry
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager.OnGroupExpansionChangeListener
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
import com.android.systemui.statusbar.notification.row.createRow
import com.android.systemui.statusbar.notification.row.createRowWithEntry
import com.android.systemui.statusbar.notification.row.entryAdapterFactory
import com.android.systemui.statusbar.notification.shared.NotificationBundleUi
import com.android.systemui.testKosmos
@@ -59,7 +62,6 @@ class GroupExpansionManagerTest : SysuiTestCase() {
    private lateinit var underTest: GroupExpansionManagerImpl

    private val kosmos = testKosmos()
    private lateinit var testHelper: NotificationTestHelper
    private val dumpManager: DumpManager = mock()
    private val groupMembershipManager: GroupMembershipManager = mock()

@@ -73,15 +75,23 @@ class GroupExpansionManagerTest : SysuiTestCase() {

    private fun notificationEntry(pkg: String, id: Int, parent: ExpandableNotificationRow?) =
        NotificationEntryBuilder().setPkg(pkg).setId(id).build().apply {
            row = testHelper.createRow().apply { setIsChildInGroup(true, parent) }
            row = kosmos.createRow().apply { setIsChildInGroup(true, parent) }
        }

    @Before
    fun setUp() {
        testHelper = NotificationTestHelper(mContext, mDependency)

        summary1 = testHelper.createRow().entry
        summary2 = testHelper.createRow().entry
        summary1 = kosmos.buildNotificationEntry() {
            modifyNotification(kosmos.applicationContext)
                .setGroup("groupId")
                .setGroupSummary(true)
        }
        summary1.row = kosmos.createRowWithEntry(summary1)
        summary2 = kosmos.buildNotificationEntry() {
            modifyNotification(kosmos.applicationContext)
                .setGroup("groupId2")
                .setGroupSummary(true)
        }
        summary2.row = kosmos.createRowWithEntry(summary2)
        entries =
            listOf<ListEntry>(
                GroupEntryBuilder()
+7 −11
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider;
import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator;
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager;
@@ -176,8 +178,6 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {

    private NotificationStackScrollLayoutController mController;

    private NotificationTestHelper mNotificationTestHelper;

    @Before
    public void setUp() {
        allowTestableLooperAsMainThread();
@@ -185,11 +185,6 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {

        when(mNotificationSwipeHelperBuilder.build()).thenReturn(mNotificationSwipeHelper);
        when(mKeyguardTransitionRepo.getTransitions()).thenReturn(emptyFlow());
        mNotificationTestHelper = new NotificationTestHelper(
                mContext,
                mDependency,
                TestableLooper.get(this));
        mNotificationTestHelper.setDefaultInflationFlags(FLAG_CONTENT_VIEW_ALL);
    }

    @Test
@@ -220,14 +215,14 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        initController(/* viewIsAttached= */ true);
        mController.setHeadsUpAppearanceController(mock(HeadsUpAppearanceController.class));
        NotificationListContainer listContainer = mController.getNotificationListContainer();
        ExpandableNotificationRow row = mNotificationTestHelper.createRow();
        ExpandableNotificationRow row = mKosmos.createRow();
        listContainer.bindRow(row);

        // When: call setHeadsUpAnimatingAway to change set mHeadsupDisappearRunning to true
        row.setHeadsUpAnimatingAway(true);

        // Then: mHeadsUpManager.onEntryAnimatingAwayEnded is not called
        verify(mKosmos.getMockHeadsUpManager(), never()).onEntryAnimatingAwayEnded(row.getEntry());
        verify(mKosmos.getMockHeadsUpManager(), never()).onEntryAnimatingAwayEnded(any());
    }

    @Test
@@ -238,7 +233,8 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        initController(/* viewIsAttached= */ true);
        mController.setHeadsUpAppearanceController(mock(HeadsUpAppearanceController.class));
        NotificationListContainer listContainer = mController.getNotificationListContainer();
        ExpandableNotificationRow row = mKosmos.createRow();
        NotificationEntry entry = mKosmos.buildNotificationEntry(NotificationEntryBuilder::done);
        ExpandableNotificationRow row = mKosmos.createRow(entry);
        listContainer.bindRow(row);
        row.setHeadsUpAnimatingAway(true);

@@ -246,7 +242,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        row.setHeadsUpAnimatingAway(false);

        // Then: mHeadsUpManager.onEntryAnimatingAwayEnded is called
        verify(mKosmos.getMockHeadsUpManager()).onEntryAnimatingAwayEnded(any());
        verify(mKosmos.getMockHeadsUpManager()).onEntryAnimatingAwayEnded(entry);
    }
    @Test
    public void testOnDensityOrFontScaleChanged_reInflatesFooterViews() {
+0 −153
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.statusbar.phone;

import static android.app.NotificationManager.IMPORTANCE_LOW;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.content.Context;
import android.os.UserHandle;
import android.service.notification.StatusBarNotification;

import com.android.systemui.res.R;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;

/**
 * Helper class for creating groups/summaries without having to inflate them.
 */
public final class NotificationGroupTestHelper {
    private static final String TEST_CHANNEL_ID = "test_channel";
    private static final String TEST_GROUP_ID = "test_group";
    private static final String TEST_PACKAGE_NAME = "test_pkg";
    private int mId = 0;
    private final Context mContext;

    public NotificationGroupTestHelper(Context context) {
        mContext = context;
    }

    public NotificationEntry createSummaryNotification() {
        return createSummaryNotification(Notification.GROUP_ALERT_ALL, mId++, null);
    }

    public NotificationEntry createSummaryNotification(int groupAlertBehavior) {
        return createSummaryNotification(groupAlertBehavior, mId++, null);
    }

    public NotificationEntry createSummaryNotification(int groupAlertBehavior, int id, String tag) {
        return createEntry(id, tag, true, groupAlertBehavior);
    }

    public NotificationEntry createSummaryNotification(
            int groupAlertBehavior, int id, String tag, long when) {
        NotificationEntry entry = createSummaryNotification(groupAlertBehavior, id, tag);
        entry.getSbn().getNotification().when = when;
        return entry;
    }

    public NotificationEntry createChildNotification() {
        return createChildNotification(Notification.GROUP_ALERT_ALL);
    }

    public NotificationEntry createChildNotification(int groupAlertBehavior) {
        return createEntry(mId++, null, false, groupAlertBehavior);
    }

    public NotificationEntry createChildNotification(int groupAlertBehavior, int id, String tag) {
        return createEntry(id, tag, false, groupAlertBehavior);
    }

    public NotificationEntry createChildNotification(
            int groupAlertBehavior, int id, String tag, long when) {
        NotificationEntry entry = createChildNotification(groupAlertBehavior, id, tag);
        entry.getSbn().getNotification().when = when;
        return entry;
    }

    public NotificationEntry createClassifiedEntry(boolean isSummary,
            int groupAlertBehavior, String channelId) {

        Notification notif = new Notification.Builder(mContext, TEST_CHANNEL_ID)
                .setContentTitle("Title")
                .setSmallIcon(R.drawable.ic_person)
                .setGroupAlertBehavior(groupAlertBehavior)
                .setGroupSummary(isSummary)
                .setGroup(TEST_GROUP_ID)
                .build();

        NotificationChannel channel = new NotificationChannel(channelId, channelId, IMPORTANCE_LOW);
        NotificationEntry entry = new NotificationEntryBuilder()
                .setPkg(TEST_PACKAGE_NAME)
                .setOpPkg(TEST_PACKAGE_NAME)
                .setId(mId++)
                .setNotification(notif)
                .updateRanking((rankingBuilder -> rankingBuilder.setChannel(channel)))
                .setUser(new UserHandle(ActivityManager.getCurrentUser()))
                .build();

        ExpandableNotificationRow row = mock(ExpandableNotificationRow.class);
        entry.setRow(row);
        when(row.getEntryLegacy()).thenReturn(entry);
        return entry;
    }

    public NotificationEntry createEntry(int id, String tag, boolean isSummary,
            int groupAlertBehavior) {
        Notification notif = new Notification.Builder(mContext, TEST_CHANNEL_ID)
                .setContentTitle("Title")
                .setSmallIcon(R.drawable.ic_person)
                .setGroupAlertBehavior(groupAlertBehavior)
                .setGroupSummary(isSummary)
                .setGroup(TEST_GROUP_ID)
                .build();
        NotificationEntry entry = new NotificationEntryBuilder()
                .setPkg(TEST_PACKAGE_NAME)
                .setOpPkg(TEST_PACKAGE_NAME)
                .setId(id)
                .setNotification(notif)
                .setTag(tag)
                .setUser(new UserHandle(ActivityManager.getCurrentUser()))
                .build();

        ExpandableNotificationRow row = mock(ExpandableNotificationRow.class);
        entry.setRow(row);
        when(row.getEntry()).thenReturn(entry);
        when(row.getEntryLegacy()).thenReturn(entry);
        return entry;
    }

    public StatusBarNotification incrementPost(NotificationEntry entry, int increment) {
        StatusBarNotification oldSbn = entry.getSbn();
        final long oldPostTime = oldSbn.getPostTime();
        final long newPostTime = oldPostTime + increment;
        entry.setSbn(new SbnBuilder(oldSbn)
                .setPostTime(newPostTime)
                .build());
        assertThat(oldSbn.getPostTime()).isEqualTo(oldPostTime);
        assertThat(entry.getSbn().getPostTime()).isEqualTo(newPostTime);
        return oldSbn;
    }
}
+48 −34

File changed.

Preview size limit exceeded, changes collapsed.

Loading