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

Commit 192b6f9c authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Create smartspace session when precondition is met" into main

parents 607432e7 363e8453
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.graphics.drawable.Drawable
import android.os.Handler
import android.testing.TestableLooper
import android.view.View
import android.widget.FrameLayout
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -46,6 +45,8 @@ import org.mockito.Mockito
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.never

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -67,12 +68,9 @@ class CommunalSmartspaceControllerTest : SysuiTestCase() {

    @Mock private lateinit var session: SmartspaceSession

    private lateinit var controller: CommunalSmartspaceController
    private val preconditionListenerCaptor = argumentCaptor<SmartspacePrecondition.Listener>()

    // TODO(b/272811280): Remove usage of real view
    private val fakeParent by lazy {
        FrameLayout(context)
    }
    private lateinit var controller: CommunalSmartspaceController

    /**
     * A class which implements SmartspaceView and extends View. This is mocked to provide the right
@@ -155,6 +153,26 @@ class CommunalSmartspaceControllerTest : SysuiTestCase() {
        verify(session).close()
    }

    /** Ensures smartspace session begins when precondition is met if there is any listener. */
    @Test
    fun testConnectOnPreconditionMet() {
        // Precondition not met
        `when`(precondition.conditionsMet()).thenReturn(false)
        controller.addListener(listener)

        // Verify session not created because precondition not met
        verify(smartspaceManager, never()).createSmartspaceSession(any())

        // Precondition met
        `when`(precondition.conditionsMet()).thenReturn(true)
        verify(precondition).addListener(preconditionListenerCaptor.capture())
        val preconditionListener = preconditionListenerCaptor.firstValue
        preconditionListener.onCriteriaChanged()

        // Verify session created
        verify(smartspaceManager).createSmartspaceSession(any())
    }

    /**
     * Ensures session is closed and weather plugin unregisters the notifier when weather smartspace
     * view is detached.
+6 −0
Original line number Diff line number Diff line
@@ -65,6 +65,12 @@ constructor(
    var preconditionListener =
        object : SmartspacePrecondition.Listener {
            override fun onCriteriaChanged() {
                if (session == null && hasActiveSessionListeners()) {
                    Log.d(TAG, "Precondition criteria changed. Attempting to connect session.")
                    connectSession()
                    return
                }

                reloadSmartspace()
            }
        }