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

Commit 8352616b authored by Steve Elliott's avatar Steve Elliott Committed by Automerger Merge Worker
Browse files

Merge "Remove unneeded notif vis checks" into tm-dev am: c8a32ef1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17350683

Change-Id: I942c28aabd4a4f39edc8355f02e5fcd7c525f3ae
parents 30c0344a c8a32ef1
Loading
Loading
Loading
Loading
+1 −27
Original line number Diff line number Diff line
@@ -22,10 +22,8 @@ import android.view.View.GONE
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.StatusBarState.KEYGUARD
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.util.children
@@ -41,8 +39,6 @@ private const val DEBUG = false
class NotificationStackSizeCalculator
@Inject
constructor(
    private val groupManager: NotificationGroupManagerLegacy,
    private val lockscreenUserManager: NotificationLockscreenUserManager,
    private val statusBarStateController: SysuiStatusBarStateController,
    @Main private val resources: Resources
) {
@@ -191,7 +187,7 @@ constructor(
        if (onLockscreen) {
            when (this) {
                is ExpandableNotificationRow -> {
                    if (isSummaryOfSuppressedGroup() || !canShowViewOnLockscreen() || isRemoved) {
                    if (!canShowViewOnLockscreen() || isRemoved) {
                        return false
                    }
                }
@@ -208,9 +204,6 @@ constructor(
        visibleIndex: Int
    ) = stack.calculateGapHeight(previous, /* current= */ this, visibleIndex)

    private fun ExpandableNotificationRow.isSummaryOfSuppressedGroup() =
        groupManager.isSummaryOfSuppressedGroup(entry.sbn)

    /**
     * Can a view be shown on the lockscreen when calculating the number of allowed notifications to
     * show?
@@ -220,31 +213,12 @@ constructor(
    private fun ExpandableView.canShowViewOnLockscreen(): Boolean {
        if (hasNoContentHeight()) {
            return false
        }
        if (this is ExpandableNotificationRow && !canShowRowOnLockscreen()) {
            return false
        } else if (visibility == GONE) {
            return false
        }
        return true
    }

    /**
     * Can a row be shown on the lockscreen when calculating the number of allowed notifications to
     * show?
     *
     * @return true if it can be shown
     */
    private fun ExpandableNotificationRow.canShowRowOnLockscreen(): Boolean {
        if (isSummaryOfSuppressedGroup()) {
            return false
        }
        if (!lockscreenUserManager.shouldShowOnKeyguard(entry)) {
            return false
        }
        return !isRemoved
    }

    private fun log(s: () -> String) {
        if (DEBUG) {
            Log.d(TAG, s())
+13 −71
Original line number Diff line number Diff line
@@ -22,12 +22,10 @@ import android.view.View.VISIBLE
import androidx.test.filters.SmallTest
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.StatusBarState.KEYGUARD
import com.android.systemui.statusbar.StatusBarState.SHADE
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.util.mockito.any
@@ -38,17 +36,13 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import org.mockito.Mockito.`when` as whenever

@SmallTest
@RunWith(AndroidTestingRunner::class)
class NotificationStackSizeCalculatorTest : SysuiTestCase() {

    @Mock private lateinit var groupManager: NotificationGroupManagerLegacy

    @Mock private lateinit var notificationLockscreenUserManager: NotificationLockscreenUserManager

    @Mock private lateinit var sysuiStatusBarStateController: SysuiStatusBarStateController

    @Mock private lateinit var stackLayout: NotificationStackScrollLayout
@@ -63,7 +57,6 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {

        whenever(stackLayout.calculateGapHeight(nullable(), nullable(), any()))
            .thenReturn(GAP_HEIGHT)
        whenever(groupManager.isSummaryOfSuppressedGroup(any())).thenReturn(false)
        with(testableResources) {
            addOverride(R.integer.keyguard_max_notification_count, -1)
            addOverride(R.dimen.notification_divider_height, NOTIFICATION_PADDING.toInt())
@@ -71,15 +64,13 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {

        sizeCalculator =
            NotificationStackSizeCalculator(
                groupManager = groupManager,
                lockscreenUserManager = notificationLockscreenUserManager,
                statusBarStateController = sysuiStatusBarStateController,
                testableResources.resources)
    }

    @Test
    fun computeMaxKeyguardNotifications_zeroSpace_returnZero() {
        val rows = listOf(createMockRow(height = ROW_HEIGHT, visibleOnLockscreen = true))
        val rows = listOf(createMockRow(height = ROW_HEIGHT))

        val maxNotifications =
            computeMaxKeyguardNotifications(rows, availableSpace = 0f, shelfHeight = 0f)
@@ -106,8 +97,8 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        val spaceForOne = totalSpaceForEachRow
        val rows =
            listOf(
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true))
                createMockRow(rowHeight),
                createMockRow(rowHeight))

        val maxNotifications =
            computeMaxKeyguardNotifications(
@@ -124,8 +115,8 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        val spaceForOne = totalSpaceForEachRow
        val rows =
            listOf(
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true))
                createMockRow(rowHeight),
                createMockRow(rowHeight))

        val maxNotifications =
            computeMaxKeyguardNotifications(
@@ -134,15 +125,6 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        assertThat(maxNotifications).isEqualTo(1)
    }

    @Test
    fun computeMaxKeyguardNotifications_invisibleOnLockscreen_returnsZero() {
        val rows = listOf(createMockRow(visibleOnLockscreen = false))

        val maxNotifications = computeMaxKeyguardNotifications(rows, Float.MAX_VALUE)

        assertThat(maxNotifications).isEqualTo(0)
    }

    @Test
    fun computeMaxKeyguardNotifications_spaceForTwo_returnsTwo() {
        val rowHeight = ROW_HEIGHT
@@ -150,9 +132,9 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        val spaceForTwo = totalSpaceForEachRow * 2 + NOTIFICATION_PADDING
        val rows =
            listOf(
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true))
                createMockRow(rowHeight),
                createMockRow(rowHeight),
                createMockRow(rowHeight))

        val maxNotifications = computeMaxKeyguardNotifications(rows, spaceForTwo, shelfHeight = 0f)

@@ -167,9 +149,9 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        val availableSpace = totalSpaceForEachRow * 2
        val rows =
            listOf(
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true),
                createMockRow(rowHeight, visibleOnLockscreen = true))
                createMockRow(rowHeight),
                createMockRow(rowHeight),
                createMockRow(rowHeight))

        val maxNotifications = computeMaxKeyguardNotifications(rows, availableSpace, shelfHeight)
        assertThat(maxNotifications).isEqualTo(2)
@@ -178,31 +160,6 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        assertThat(height).isAtMost(availableSpace + SHELF_HEIGHT)
    }

    @Test
    fun computeHeight_allInvisibleToLockscreen_NotInLockscreen_returnsHigherThanZero() {
        setOnLockscreen(false)
        val rowHeight = 10f
        setupChildren(listOf(createMockRow(rowHeight, visibleOnLockscreen = false)))

        val height =
            sizeCalculator.computeHeight(
                stackLayout, maxNotifications = Int.MAX_VALUE, SHELF_HEIGHT)

        assertThat(height).isGreaterThan(rowHeight)
    }

    @Test
    fun computeHeight_allInvisibleToLockscreen_onLockscreen_returnsZero() {
        setOnLockscreen(true)
        setupChildren(listOf(createMockRow(visibleOnLockscreen = false)))

        val height =
            sizeCalculator.computeHeight(
                stackLayout, maxNotifications = Int.MAX_VALUE, SHELF_HEIGHT)

        assertThat(height).isEqualTo(0)
    }

    private fun computeMaxKeyguardNotifications(
        rows: List<ExpandableView>,
        availableSpace: Float,
@@ -222,14 +179,12 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
    }

    private fun createLockscreenRows(number: Int): List<ExpandableNotificationRow> =
        (1..number).map { createMockRow(visibleOnLockscreen = true) }.toList()
        (1..number).map { createMockRow() }.toList()

    private fun createMockRow(
        height: Float = ROW_HEIGHT,
        visibleOnLockscreen: Boolean = true,
        isRemoved: Boolean = false,
        visibility: Int = VISIBLE,
        summaryOfSuppressed: Boolean = false
    ): ExpandableNotificationRow {
        val row = mock(ExpandableNotificationRow::class.java)
        val entry = mock(NotificationEntry::class.java)
@@ -238,24 +193,11 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() {
        whenever(row.entry).thenReturn(entry)
        whenever(row.isRemoved).thenReturn(isRemoved)
        whenever(row.visibility).thenReturn(visibility)
        whenever(notificationLockscreenUserManager.shouldShowOnKeyguard(entry))
            .thenReturn(visibleOnLockscreen)
        whenever(groupManager.isSummaryOfSuppressedGroup(sbn)).thenReturn(summaryOfSuppressed)
        whenever(row.getMinHeight(any())).thenReturn(height.toInt())
        whenever(row.intrinsicHeight).thenReturn(height.toInt())
        return row
    }

    private fun setOnLockscreen(onLockscreen: Boolean) {
        whenever(sysuiStatusBarStateController.state)
            .thenReturn(
                if (onLockscreen) {
                    KEYGUARD
                } else {
                    SHADE
                })
    }

    /** Default dimensions for tests that don't overwrite them. */
    companion object {
        const val GAP_HEIGHT = 12f