1 package com.android.onboarding.flags 2 3 import android.os.SystemProperties 4 5 /** A default implementation of [OnboardingFlagsProvider] using system property. */ 6 class DefaultOnboardingFlagsProvider : OnboardingFlagsProvider { 7 override val isContractEnabled: Boolean 8 get() = 9 SystemProperties.getBoolean("$SYSTEM_PROPERTY_NAMESPACE.$FEATURE_CONTRACT_ENABLED", false) 10 override val isNodeLoggingEnabled: Boolean 11 get() = 12 SystemProperties.getBoolean("$SYSTEM_PROPERTY_NAMESPACE.$FEATURE_NODE_LOGGING_ENABLED", false) 13 override val isUiLoggingEnabled: Boolean 14 get() = true 15 16 override val isDimensionLoggingEnabled: Boolean 17 get() = 18 SystemProperties.getBoolean( 19 "$SYSTEM_PROPERTY_NAMESPACE.$FEATURE_DIMENSION_LOGGING_ENABLED", 20 false, 21 ) 22 23 override val isDebug: Boolean 24 get() = SystemProperties.getBoolean("$SYSTEM_PROPERTY_NAMESPACE.$FEATURE_DEBUG_ENABLED", false) 25 26 override val shouldVisualiseNodeTransitionsInLogcat: Boolean 27 get() = 28 SystemProperties.getBoolean( 29 "$SYSTEM_PROPERTY_NAMESPACE.$FEATURE_VISUALISE_TRANSITIONS", 30 false, 31 ) || isDebug 32 33 companion object { 34 // The key length has to be less that 31 characters (<18 if excluding namespace) 35 const val SYSTEM_PROPERTY_NAMESPACE = "aoj.feature" 36 private const val FEATURE_CONTRACT_ENABLED = "contract" 37 private const val FEATURE_NODE_LOGGING_ENABLED = "node_logging" 38 private const val FEATURE_DEBUG_ENABLED = "debug" 39 private const val FEATURE_UI_LOGGING_ENABLED = "ui_logging" 40 private const val FEATURE_VISUALISE_TRANSITIONS = "vis_transitions" 41 private const val FEATURE_DIMENSION_LOGGING_ENABLED = "dimension_logging" 42 } 43 } 44