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
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt b/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
index e30f2e4..7326ab3 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
@@ -25,10 +25,10 @@
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 @@
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 @@
FrameworkStatsLog.ASSISTANT_INVOCATION_REPORTED,
invocationEvent.id,
assistantUid,
- assistComponentFinal.flattenToString(),
+ assistComponentFinal?.flattenToString() ?: "",
getOrCreateInstanceId().id,
deviceStateFinal,
false)
@@ -91,7 +92,7 @@
uiEventLogger.logWithInstanceId(
sessionEvent,
assistantUid,
- assistantComponent.flattenToString(),
+ assistantComponent?.flattenToString(),
getOrCreateInstanceId())
if (SESSION_END_EVENTS.contains(sessionEvent)) {
@@ -112,11 +113,15 @@
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 {
+ protected fun getAssistantUid(assistantComponent: ComponentName?): Int {
+ if (assistantComponent == null) {
+ return 0
+ }
+
var assistantUid = 0
try {
assistantUid = context.packageManager.getApplicationInfo(
@@ -138,4 +143,4 @@
AssistantSessionEvent.ASSISTANT_SESSION_INVOCATION_CANCELLED,
AssistantSessionEvent.ASSISTANT_SESSION_CLOSE)
}
-}
\ No newline at end of file
+}