Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf40e574 authored by Florence Yang's avatar Florence Yang
Browse files

Register Dumpables for Region Sampler

Register dumpables where Region Sampler is implemented (lockscreen
smartspace and clock) to log more information and help debug bug reports.

Bug: 202758428
Test: manual
Change-Id: I83c4362e49521b843892f068aef19f487f430b86
parent 4e02695e
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -114,7 +114,25 @@ constructor(

    /** Dump region sampler */
    fun dump(pw: PrintWriter) {
        regionSampler?.dump(pw)
        pw.println("[RegionSampler]")
        pw.println("regionSamplingEnabled: $regionSamplingEnabled")
        pw.println("regionDarkness: $regionDarkness")
        pw.println("lightForegroundColor: ${Integer.toHexString(lightForegroundColor)}")
        pw.println("darkForegroundColor:${Integer.toHexString(darkForegroundColor)}")
        pw.println("passed-in sampledView: $sampledView")
        pw.println("calculated samplingBounds: $samplingBounds")
        pw.println(
            "sampledView width: ${sampledView?.width}, sampledView height: ${sampledView?.height}"
        )
        pw.println("screen width: ${displaySize.x}, screen height: ${displaySize.y}")
        pw.println(
            "sampledRegionWithOffset: ${convertBounds(calculateSampledRegion(sampledView!!))}"
        )
        pw.println(
            "initialSampling for lockscreen: " +
                "${wallpaperManager?.getWallpaperColors(WallpaperManager.FLAG_LOCK)}"
        )
        // TODO(b/265969235): add initialSampling dump for HS smartspace
    }

    fun calculateSampledRegion(sampledView: View): RectF {
+8 −3
Original line number Diff line number Diff line
@@ -28,10 +28,12 @@ import android.widget.FrameLayout
import androidx.annotation.VisibleForTesting
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.systemui.Dumpable
import com.android.systemui.R
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags.DOZING_MIGRATION_1
import com.android.systemui.flags.Flags.REGION_SAMPLING
@@ -77,8 +79,9 @@ open class ClockEventController @Inject constructor(
    @Background private val bgExecutor: Executor,
    @KeyguardSmallClockLog private val smallLogBuffer: LogBuffer?,
    @KeyguardLargeClockLog private val largeLogBuffer: LogBuffer?,
    private val featureFlags: FeatureFlags
) {
    private val featureFlags: FeatureFlags,
    private val dumpManager: DumpManager
) : Dumpable {
    var clock: ClockController? = null
        set(value) {
            field = value
@@ -275,6 +278,7 @@ open class ClockEventController @Inject constructor(
        configurationController.addCallback(configListener)
        batteryController.addCallback(batteryCallback)
        keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback)
        dumpManager.registerDumpable(this)
        disposableHandle = parent.repeatWhenAttached {
            repeatOnLifecycle(Lifecycle.State.STARTED) {
                listenForDozing(this)
@@ -300,6 +304,7 @@ open class ClockEventController @Inject constructor(
        batteryController.removeCallback(batteryCallback)
        keyguardUpdateMonitor.removeCallback(keyguardUpdateMonitorCallback)
        regionSampler?.stopRegionSampler()
        dumpManager.unregisterDumpable(javaClass.simpleName)
    }

    private fun updateFontSizes() {
@@ -312,7 +317,7 @@ open class ClockEventController @Inject constructor(
    /**
     * Dump information for debugging
     */
    fun dump(pw: PrintWriter) {
    override fun dump(pw: PrintWriter, args: Array<out String>) {
        pw.println(this)
        clock?.dump(pw)
        regionSampler?.dump(pw)
+14 −4
Original line number Diff line number Diff line
@@ -36,10 +36,12 @@ import android.view.ContextThemeWrapper
import android.view.View
import android.view.ViewGroup
import com.android.settingslib.Utils
import com.android.systemui.Dumpable
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.plugins.ActivityStarter
@@ -57,15 +59,14 @@ import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.util.concurrency.Execution
import com.android.systemui.util.settings.SecureSettings
import java.io.PrintWriter
import java.util.Optional
import java.util.concurrent.Executor
import javax.inject.Inject

/** Controller for managing the smartspace view on the lockscreen */
@SysUISingleton
class LockscreenSmartspaceController
@Inject
constructor(
class LockscreenSmartspaceController @Inject constructor(
        private val context: Context,
        private val featureFlags: FeatureFlags,
        private val smartspaceManager: SmartspaceManager,
@@ -78,13 +79,14 @@ constructor(
        private val statusBarStateController: StatusBarStateController,
        private val deviceProvisionedController: DeviceProvisionedController,
        private val bypassController: KeyguardBypassController,
        private val dumpManager: DumpManager,
        private val execution: Execution,
        @Main private val uiExecutor: Executor,
        @Background private val bgExecutor: Executor,
        @Main private val handler: Handler,
        optionalPlugin: Optional<BcSmartspaceDataPlugin>,
        optionalConfigPlugin: Optional<BcSmartspaceConfigPlugin>,
) {
        ) : Dumpable {
    companion object {
        private const val TAG = "LockscreenSmartspaceController"
    }
@@ -201,6 +203,7 @@ constructor(

    init {
        deviceProvisionedController.addCallback(deviceProvisionedListener)
        dumpManager.registerDumpable(this)
    }

    fun isEnabled(): Boolean {
@@ -441,4 +444,11 @@ constructor(
        }
        return null
    }

    override fun dump(pw: PrintWriter, args: Array<out String>) {
        pw.println("Region Samplers: ${regionSamplers.size}")
        regionSamplers.map { (_, sampler) ->
            sampler.dump(pw)
        }
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.widget.TextView
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
@@ -86,6 +87,7 @@ class ClockEventControllerTest : SysuiTestCase() {
    @Mock private lateinit var smallLogBuffer: LogBuffer
    @Mock private lateinit var largeLogBuffer: LogBuffer
    private lateinit var underTest: ClockEventController
    @Mock private lateinit var dumpManager: DumpManager

    @Before
    fun setUp() {
@@ -113,7 +115,8 @@ class ClockEventControllerTest : SysuiTestCase() {
            bgExecutor,
            smallLogBuffer,
            largeLogBuffer,
            featureFlags
            featureFlags,
            dumpManager
        )
        underTest.clock = clock

+5 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.View
import android.widget.FrameLayout
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.plugins.ActivityStarter
@@ -118,6 +119,9 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
    @Mock
    private lateinit var configPlugin: BcSmartspaceConfigPlugin

    @Mock
    private lateinit var dumpManager: DumpManager

    @Mock
    private lateinit var controllerListener: SmartspaceTargetListener

@@ -209,6 +213,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() {
                statusBarStateController,
                deviceProvisionedController,
                keyguardBypassController,
                dumpManager,
                execution,
                executor,
                bgExecutor,