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

Commit 05ee93d3 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a crash when dragging down on the NotificationShelf

The logging code was wrongly casting an ExpandableView to
a row, but it can also be a Shelf.

Fixes: 213969909
Tests: atest SystemUITests
Change-Id: Id5847d44d313d57cade46a6ccb9109d86145499b
parent 531458f8
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ class LSShadeTransitionLogger @Inject constructor(
    private val displayMetrics: DisplayMetrics
) {
    fun logUnSuccessfulDragDown(startingChild: View?) {
        val entry = (startingChild as ExpandableNotificationRow?)?.entry
        val entry = (startingChild as? ExpandableNotificationRow)?.entry
        buffer.log(TAG, LogLevel.INFO, {
            str1 = entry?.key ?: "no entry"
        }, {
@@ -49,7 +49,7 @@ class LSShadeTransitionLogger @Inject constructor(
    }

    fun logDragDownStarted(startingChild: ExpandableView?) {
        val entry = (startingChild as ExpandableNotificationRow?)?.entry
        val entry = (startingChild as? ExpandableNotificationRow)?.entry
        buffer.log(TAG, LogLevel.INFO, {
            str1 = entry?.key ?: "no entry"
        }, {
@@ -58,7 +58,7 @@ class LSShadeTransitionLogger @Inject constructor(
    }

    fun logDraggedDownLockDownShade(startingChild: View?) {
        val entry = (startingChild as ExpandableNotificationRow?)?.entry
        val entry = (startingChild as? ExpandableNotificationRow)?.entry
        buffer.log(TAG, LogLevel.INFO, {
            str1 = entry?.key ?: "no entry"
        }, {
@@ -67,7 +67,7 @@ class LSShadeTransitionLogger @Inject constructor(
    }

    fun logDraggedDown(startingChild: View?, dragLengthY: Int) {
        val entry = (startingChild as ExpandableNotificationRow?)?.entry
        val entry = (startingChild as? ExpandableNotificationRow)?.entry
        buffer.log(TAG, LogLevel.INFO, {
            str1 = entry?.key ?: "no entry"
        }, {
+44 −0
Original line number Diff line number Diff line
package com.android.systemui.statusbar

import android.testing.AndroidTestingRunner
import android.util.DisplayMetrics
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.log.LogBuffer
import com.android.systemui.statusbar.notification.row.ExpandableView
import com.android.systemui.statusbar.phone.LSShadeTransitionLogger
import com.android.systemui.statusbar.phone.LockscreenGestureLogger
import com.android.systemui.util.mockito.mock
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.junit.MockitoJUnit

@RunWith(AndroidTestingRunner::class)
@SmallTest
class LSShadeTransitionLoggerTest : SysuiTestCase() {
    lateinit var logger: LSShadeTransitionLogger
    @Mock
    lateinit var gestureLogger: LockscreenGestureLogger
    @Mock
    lateinit var displayMetrics: DisplayMetrics
    @JvmField @Rule
    val mockito = MockitoJUnit.rule()

    @Before
    fun setup() {
        logger = LSShadeTransitionLogger(
                LogBuffer("Test", 10, 10, mock()),
                gestureLogger,
                displayMetrics)
    }

    @Test
    fun testLogDragDownStarted() {
        val view: ExpandableView = mock()
        // log a non-null, non row, ensure no crash
        logger.logDragDownStarted(view)
    }
}
 No newline at end of file