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

Commit 933f17ec authored by Govinda Wasserman's avatar Govinda Wasserman
Browse files

Fix NPE when assistant component name is null

Also moves user ID retrieval to UserTracker instead of binder call.

Test: Ensure device is provisioned and assistant invocation is enabled
Test: Add new user
Test: Perform assistant invocation
Test: Observe that no crash occurs
BUG: 236751191
FIX: 236751191
Change-Id: I3d3bb12cbfdcc62ec62ddc0d54889e71f2d85704
parent b3728bc5
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -25,10 +25,10 @@ import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.UiEventLogger
import com.android.internal.util.FrameworkStatsLog
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.assist.AssistantInvocationEvent.Companion.deviceStateFromLegacyDeviceState
import com.android.systemui.assist.AssistantInvocationEvent.Companion.eventFromLegacyInvocationType
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.settings.UserTracker
import javax.inject.Inject

/** Class for reporting events related to Assistant sessions. */
@@ -37,7 +37,8 @@ open class AssistLogger @Inject constructor(
    protected val context: Context,
    protected val uiEventLogger: UiEventLogger,
    private val assistUtils: AssistUtils,
    private val phoneStateMonitor: PhoneStateMonitor
    private val phoneStateMonitor: PhoneStateMonitor,
    private val userTracker: UserTracker,
) {

    private val instanceIdSequence = InstanceIdSequence(INSTANCE_ID_MAX)
@@ -78,7 +79,7 @@ open class AssistLogger @Inject constructor(
                FrameworkStatsLog.ASSISTANT_INVOCATION_REPORTED,
                invocationEvent.id,
                assistantUid,
                assistComponentFinal.flattenToString(),
                assistComponentFinal?.flattenToString() ?: "",
                getOrCreateInstanceId().id,
                deviceStateFinal,
                false)
@@ -91,7 +92,7 @@ open class AssistLogger @Inject constructor(
        uiEventLogger.logWithInstanceId(
                sessionEvent,
                assistantUid,
                assistantComponent.flattenToString(),
                assistantComponent?.flattenToString(),
                getOrCreateInstanceId())

        if (SESSION_END_EVENTS.contains(sessionEvent)) {
@@ -112,11 +113,15 @@ open class AssistLogger @Inject constructor(
        currentInstanceId = null
    }

    protected fun getAssistantComponentForCurrentUser(): ComponentName {
        return assistUtils.getAssistComponentForUser(KeyguardUpdateMonitor.getCurrentUser())
    protected fun getAssistantComponentForCurrentUser(): ComponentName? {
        return assistUtils.getAssistComponentForUser(userTracker.userId)
    }

    protected fun getAssistantUid(assistantComponent: ComponentName?): Int {
        if (assistantComponent == null) {
            return 0
        }

    protected fun getAssistantUid(assistantComponent: ComponentName): Int {
        var assistantUid = 0
        try {
            assistantUid = context.packageManager.getApplicationInfo(