Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt +10 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 */ Loading @@ -54,7 +58,7 @@ interface SpaLogger { id: String, event: LogEvent, category: LogCategory = LogCategory.DEFAULT, details: String? = null extraData: Bundle = Bundle.EMPTY ) { } } Loading @@ -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)" 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 packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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 ) } } Loading @@ -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() } } Loading @@ -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) } } packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt +15 −12 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -37,22 +40,22 @@ 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, ) } else if (event == Lifecycle.Event.ON_STOP) { spaLogger.event( page.id, LogEvent.PAGE_LEAVE, category = LogCategory.FRAMEWORK, details = navController.sessionSourceName ?: page.displayName, ) } if (event == Lifecycle.Event.ON_START) { logPageEvent(LogEvent.PAGE_ENTER) } else if (event == Lifecycle.Event.ON_STOP) { logPageEvent(LogEvent.PAGE_LEAVE) } } // Add the observer to the lifecycle Loading packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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 } Loading Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/common/SpaLogger.kt +10 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 */ Loading @@ -54,7 +58,7 @@ interface SpaLogger { id: String, event: LogEvent, category: LogCategory = LogCategory.DEFAULT, details: String? = null extraData: Bundle = Bundle.EMPTY ) { } } Loading @@ -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)" 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
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/EntryLogger.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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 ) } } Loading @@ -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() } } Loading @@ -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) } }
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/util/PageLogger.kt +15 −12 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -37,22 +40,22 @@ 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, ) } else if (event == Lifecycle.Event.ON_STOP) { spaLogger.event( page.id, LogEvent.PAGE_LEAVE, category = LogCategory.FRAMEWORK, details = navController.sessionSourceName ?: page.displayName, ) } if (event == Lifecycle.Event.ON_START) { logPageEvent(LogEvent.PAGE_ENTER) } else if (event == Lifecycle.Event.ON_STOP) { logPageEvent(LogEvent.PAGE_LEAVE) } } // Add the observer to the lifecycle Loading
packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/tests/testutils/SpaEnvironmentForTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -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 } Loading