Support extraData in SpaLogger API.
Add session_name / switch_status / display_name as extraData.
Bug: 253979024
Test: unit-test & local build gallery
Change-Id: I8106ba3e0dd4e1eab922087c86aca0b62e6a2089
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt
index 00a0362..6ecb7fa 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt
@@ -16,6 +16,7 @@
package com.android.settingslib.spa.framework.common
+import android.os.Bundle
import android.util.Log
// Defines the category of the log, for quick filter
@@ -38,10 +39,13 @@
// Entry related events.
ENTRY_CLICK,
- ENTRY_SWITCH_ON,
- ENTRY_SWITCH_OFF,
+ ENTRY_SWITCH,
}
+internal const val LOG_DATA_DISPLAY_NAME = "name"
+internal const val LOG_DATA_SESSION_NAME = "session"
+internal const val LOG_DATA_SWITCH_STATUS = "switch"
+
/**
* The interface of logger in Spa
*/
@@ -54,7 +58,7 @@
id: String,
event: LogEvent,
category: LogCategory = LogCategory.DEFAULT,
- details: String? = null
+ extraData: Bundle = Bundle.EMPTY
) {
}
}
@@ -64,8 +68,8 @@
Log.d("SpaMsg-$category", "[$tag] $msg")
}
- override fun event(id: String, event: LogEvent, category: LogCategory, details: String?) {
- val extraMsg = if (details == null) "" else " ($details)"
- Log.d("SpaEvent-$category", "[$id] $event$extraMsg")
+ override fun event(id: String, event: LogEvent, category: LogCategory, extraData: Bundle) {
+ val extraMsg = extraData.toString().removeRange(0, 6)
+ Log.d("SpaEvent-$category", "[$id] $event $extraMsg")
}
}
\ No newline at end of file
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt
index 8d0a35c..1c88187 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt
@@ -16,17 +16,22 @@
package com.android.settingslib.spa.framework.util
+import android.os.Bundle
import androidx.compose.runtime.Composable
+import androidx.core.os.bundleOf
+import com.android.settingslib.spa.framework.common.LOG_DATA_SWITCH_STATUS
import com.android.settingslib.spa.framework.common.LocalEntryDataProvider
import com.android.settingslib.spa.framework.common.LogCategory
import com.android.settingslib.spa.framework.common.LogEvent
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
@Composable
-fun logEntryEvent(): (event: LogEvent) -> Unit {
- val entryId = LocalEntryDataProvider.current.entryId ?: return {}
- return {
- SpaEnvironmentFactory.instance.logger.event(entryId, it, category = LogCategory.VIEW)
+fun logEntryEvent(): (event: LogEvent, extraData: Bundle) -> Unit {
+ val entryId = LocalEntryDataProvider.current.entryId ?: return { _, _ -> }
+ return { event, extraData ->
+ SpaEnvironmentFactory.instance.logger.event(
+ entryId, event, category = LogCategory.VIEW, extraData = extraData
+ )
}
}
@@ -35,7 +40,7 @@
if (onClick == null) return null
val logEvent = logEntryEvent()
return {
- logEvent(LogEvent.ENTRY_CLICK)
+ logEvent(LogEvent.ENTRY_CLICK, Bundle.EMPTY)
onClick()
}
}
@@ -45,8 +50,7 @@
if (onSwitch == null) return null
val logEvent = logEntryEvent()
return {
- val event = if (it) LogEvent.ENTRY_SWITCH_ON else LogEvent.ENTRY_SWITCH_OFF
- logEvent(event)
+ logEvent(LogEvent.ENTRY_SWITCH, bundleOf(LOG_DATA_SWITCH_STATUS to it))
onSwitch(it)
}
}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt
index b9e4b78..a881254 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt
@@ -21,8 +21,11 @@
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.core.os.bundleOf
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
+import com.android.settingslib.spa.framework.common.LOG_DATA_DISPLAY_NAME
+import com.android.settingslib.spa.framework.common.LOG_DATA_SESSION_NAME
import com.android.settingslib.spa.framework.common.LogCategory
import com.android.settingslib.spa.framework.common.LogEvent
import com.android.settingslib.spa.framework.common.SettingsPageProvider
@@ -37,21 +40,21 @@
val navController = LocalNavController.current
DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
- val spaLogger = SpaEnvironmentFactory.instance.logger
+ val logPageEvent: (event: LogEvent) -> Unit = {
+ SpaEnvironmentFactory.instance.logger.event(
+ id = page.id,
+ event = it,
+ category = LogCategory.FRAMEWORK,
+ extraData = bundleOf(
+ LOG_DATA_DISPLAY_NAME to page.displayName,
+ LOG_DATA_SESSION_NAME to navController.sessionSourceName,
+ )
+ )
+ }
if (event == Lifecycle.Event.ON_START) {
- spaLogger.event(
- page.id,
- LogEvent.PAGE_ENTER,
- category = LogCategory.FRAMEWORK,
- details = navController.sessionSourceName ?: page.displayName,
- )
+ logPageEvent(LogEvent.PAGE_ENTER)
} else if (event == Lifecycle.Event.ON_STOP) {
- spaLogger.event(
- page.id,
- LogEvent.PAGE_LEAVE,
- category = LogCategory.FRAMEWORK,
- details = navController.sessionSourceName ?: page.displayName,
- )
+ logPageEvent(LogEvent.PAGE_LEAVE)
}
}
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
index 6385954..f38bd08 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt
@@ -51,7 +51,7 @@
messageCount[key] = (messageCount[key] ?: 0) + 1
}
- override fun event(id: String, event: LogEvent, category: LogCategory, details: String?) {
+ override fun event(id: String, event: LogEvent, category: LogCategory, extraData: Bundle) {
val key = EventCountKey(id, event, category)
eventCount[key] = (eventCount[key] ?: 0) + 1
}