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

Commit b6d29698 authored by Xiaowen Lei's avatar Xiaowen Lei Committed by Android (Google) Code Review
Browse files

Merge "[HSUM] For glanceable hub, use SmartspaceManager in the current...

Merge "[HSUM] For glanceable hub, use SmartspaceManager in the current foreground user context." into main
parents 1b259fc1 8df221c6
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.plugins.BcSmartspaceConfigPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.concurrency.Execution
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.withArgCaptor
@@ -52,6 +53,10 @@ import org.mockito.kotlin.never
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
class CommunalSmartspaceControllerTest : SysuiTestCase() {
    @Mock private lateinit var userTracker: UserTracker

    @Mock private lateinit var userContextPrimary: Context

    @Mock private lateinit var smartspaceManager: SmartspaceManager

    @Mock private lateinit var execution: Execution
@@ -113,15 +118,18 @@ class CommunalSmartspaceControllerTest : SysuiTestCase() {
        MockitoAnnotations.initMocks(this)
        `when`(smartspaceManager.createSmartspaceSession(any())).thenReturn(session)

        `when`(userTracker.userContext).thenReturn(userContextPrimary)
        `when`(userContextPrimary.getSystemService(SmartspaceManager::class.java))
            .thenReturn(smartspaceManager)

        controller =
            CommunalSmartspaceController(
                context,
                smartspaceManager,
                userTracker,
                execution,
                uiExecutor,
                precondition,
                Optional.of(targetFilter),
                Optional.of(plugin)
                Optional.of(plugin),
            )
    }

+13 −9
Original line number Diff line number Diff line
@@ -19,13 +19,13 @@ package com.android.systemui.communal.smartspace
import android.app.smartspace.SmartspaceConfig
import android.app.smartspace.SmartspaceManager
import android.app.smartspace.SmartspaceSession
import android.content.Context
import android.util.Log
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.BcSmartspaceDataPlugin
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceTargetListener
import com.android.systemui.plugins.BcSmartspaceDataPlugin.UI_SURFACE_GLANCEABLE_HUB
import com.android.systemui.settings.UserTracker
import com.android.systemui.smartspace.SmartspacePrecondition
import com.android.systemui.smartspace.SmartspaceTargetFilter
import com.android.systemui.smartspace.dagger.SmartspaceModule.Companion.GLANCEABLE_HUB_SMARTSPACE_DATA_PLUGIN
@@ -42,8 +42,7 @@ import javax.inject.Named
class CommunalSmartspaceController
@Inject
constructor(
    private val context: Context,
    private val smartspaceManager: SmartspaceManager?,
    private val userTracker: UserTracker,
    private val execution: Execution,
    @Main private val uiExecutor: Executor,
    @Named(LOCKSCREEN_SMARTSPACE_PRECONDITION) private val precondition: SmartspacePrecondition,
@@ -55,6 +54,7 @@ constructor(
        private const val TAG = "CommunalSmartspaceCtrlr"
    }

    private var userSmartspaceManager: SmartspaceManager? = null
    private var session: SmartspaceSession? = null
    private val plugin: BcSmartspaceDataPlugin? = optionalPlugin.orElse(null)
    private var targetFilter: SmartspaceTargetFilter? = optionalTargetFilter.orElse(null)
@@ -104,7 +104,11 @@ constructor(
    }

    private fun connectSession() {
        if (smartspaceManager == null) {
        if (userSmartspaceManager == null) {
            userSmartspaceManager =
                userTracker.userContext.getSystemService(SmartspaceManager::class.java)
        }
        if (userSmartspaceManager == null) {
            return
        }
        if (plugin == null) {
@@ -119,11 +123,11 @@ constructor(
        }

        val newSession =
            smartspaceManager.createSmartspaceSession(
                SmartspaceConfig.Builder(context, UI_SURFACE_GLANCEABLE_HUB).build()
            userSmartspaceManager?.createSmartspaceSession(
                SmartspaceConfig.Builder(userTracker.userContext, UI_SURFACE_GLANCEABLE_HUB).build()
            )
        Log.d(TAG, "Starting smartspace session for communal")
        newSession.addOnTargetsAvailableListener(uiExecutor, sessionListener)
        newSession?.addOnTargetsAvailableListener(uiExecutor, sessionListener)
        this.session = newSession

        plugin?.registerSmartspaceEventNotifier { e -> session?.notifySmartspaceEvent(e) }
@@ -163,7 +167,7 @@ constructor(

    private fun addAndRegisterListener(
        listener: SmartspaceTargetListener,
        smartspaceDataPlugin: BcSmartspaceDataPlugin?
        smartspaceDataPlugin: BcSmartspaceDataPlugin?,
    ) {
        execution.assertIsMainThread()
        smartspaceDataPlugin?.registerListener(listener)
@@ -174,7 +178,7 @@ constructor(

    private fun removeAndUnregisterListener(
        listener: SmartspaceTargetListener,
        smartspaceDataPlugin: BcSmartspaceDataPlugin?
        smartspaceDataPlugin: BcSmartspaceDataPlugin?,
    ) {
        execution.assertIsMainThread()
        smartspaceDataPlugin?.unregisterListener(listener)