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

Commit 8df221c6 authored by Xiaowen Lei's avatar Xiaowen Lei
Browse files

[HSUM] For glanceable hub, use SmartspaceManager in the current foreground user context.

Also applied ktfmt fixes.

Flag: EXEMPT bugfix
Bug: 376543613
Test: check glanceable hub timers on a device with HSUM.
Test: CommunalSmartspaceControllerTest
Change-Id: I1abfd81e06d2d93d3ba8fafe801ba3e8e5c5adf9
parent 0cca2a37
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line 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
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.concurrency.Execution
import com.android.systemui.util.concurrency.Execution
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.mockito.withArgCaptor
@@ -52,6 +53,10 @@ import org.mockito.kotlin.never
@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
@TestableLooper.RunWithLooper
@TestableLooper.RunWithLooper
class CommunalSmartspaceControllerTest : SysuiTestCase() {
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 smartspaceManager: SmartspaceManager


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


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

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


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


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


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


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


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


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


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