blob: c6a19618843fdaf3f294bd1a10c4ed39b8ea9170 [file]
package com.android.onboarding.nodes
import com.android.onboarding.flags.DefaultOnboardingFlagsProvider
/** A Singleton [OnboardingGraphLog] which automatically logs all events to logcat. */
object AndroidOnboardingGraphLog : OnboardingGraphLog {
const val LOG_TAG = "ZZZOnboardingGraph"
private val onboardingFlags = DefaultOnboardingFlagsProvider()
private val logcatObserver = LogcatObserver(LOG_TAG) { it.serializeToString() }
private val defaultOnboardingGraphLog =
DefaultOnboardingGraphLog().also {
it.addObserver(logcatObserver)
if (onboardingFlags.shouldVisualiseNodeTransitionsInLogcat) {
it.addObserver(
OnboardingGraphNodeTransitionObserver(
LogcatObserver(logTag = "OnboardingGraph") { node ->
"${node.nodeName}(${node.nodeId})"
}
)
)
}
}
override fun addObserver(observer: OnboardingGraphLog.Observer) {
defaultOnboardingGraphLog.addObserver(observer)
}
override fun removeObserver(observer: OnboardingGraphLog.Observer) {
defaultOnboardingGraphLog.removeObserver(observer)
}
override fun log(event: OnboardingGraphLog.OnboardingEvent) {
defaultOnboardingGraphLog.log(event)
}
}