diff options
4 files changed, 37 insertions, 26 deletions
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 00a0362abd91..6ecb7fa94c3c 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 @@ enum class LogEvent { // 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 @@ interface SpaLogger { id: String, event: LogEvent, category: LogCategory = LogCategory.DEFAULT, - details: String? = null + extraData: Bundle = Bundle.EMPTY ) { } } @@ -64,8 +68,8 @@ class LocalLogger : SpaLogger { 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 8d0a35c371e3..1c881878f751 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 @@ fun wrapOnClickWithLog(onClick: (() -> Unit)?): (() -> Unit)? { if (onClick == null) return null val logEvent = logEntryEvent() return { - logEvent(LogEvent.ENTRY_CLICK) + logEvent(LogEvent.ENTRY_CLICK, Bundle.EMPTY) onClick() } } @@ -45,8 +50,7 @@ fun wrapOnSwitchWithLog(onSwitch: ((checked: Boolean) -> Unit)?): ((checked: Boo 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 b9e4b782455d..a88125472b52 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.Composable 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 @@ internal fun SettingsPageProvider.PageEvent(arguments: Bundle? = null) { val navController = LocalNavController.current DisposableEffect(lifecycleOwner) { val observer = LifecycleEventObserver { _, event -> - val spaLogger = SpaEnvironmentFactory.instance.logger - if (event == Lifecycle.Event.ON_START) { - spaLogger.event( - page.id, - LogEvent.PAGE_ENTER, + val logPageEvent: (event: LogEvent) -> Unit = { + SpaEnvironmentFactory.instance.logger.event( + id = page.id, + event = it, category = LogCategory.FRAMEWORK, - details = navController.sessionSourceName ?: page.displayName, + extraData = bundleOf( + LOG_DATA_DISPLAY_NAME to page.displayName, + LOG_DATA_SESSION_NAME to navController.sessionSourceName, + ) ) + } + if (event == Lifecycle.Event.ON_START) { + 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 63859546d5f6..f38bd088060a 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 @@ class SpaLoggerForTest : SpaLogger { 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 } |