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

Commit f2f688f5 authored by Brad Hinegardner's avatar Brad Hinegardner Committed by Android (Google) Code Review
Browse files

Merge "Add logbuffer logging to quick affordances usage" into main

parents 1276886b 45b23c19
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.content.res.ResourcesCompat
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.SceneScope
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.animation.view.LaunchableImageView
import com.android.systemui.keyguard.ui.binder.KeyguardIndicationAreaBinder
import com.android.systemui.keyguard.ui.binder.KeyguardQuickAffordanceViewBinder
@@ -55,6 +56,7 @@ constructor(
    private val vibratorHelper: VibratorHelper,
    private val indicationController: KeyguardIndicationController,
    private val indicationAreaViewModel: KeyguardIndicationAreaViewModel,
    private val shortcutsLogger: KeyguardQuickAffordancesLogger,
) {
    /**
     * Renders a single lockscreen shortcut.
@@ -162,6 +164,7 @@ constructor(
                        transitionAlpha,
                        falsingManager,
                        vibratorHelper,
                        shortcutsLogger,
                    ) {
                        indicationController.showTransientIndication(it)
                    }
+4 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.widget.LockPatternUtils
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
@@ -86,7 +87,8 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
    @Mock private lateinit var launchAnimator: DialogTransitionAnimator
    @Mock private lateinit var devicePolicyManager: DevicePolicyManager
    @Mock private lateinit var shadeInteractor: ShadeInteractor
    @Mock private lateinit var logger: KeyguardQuickAffordancesMetricsLogger
    @Mock private lateinit var logger: KeyguardQuickAffordancesLogger
    @Mock private lateinit var metricsLogger: KeyguardQuickAffordancesMetricsLogger

    private val kosmos = testKosmos()

@@ -194,6 +196,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
                repository = { quickAffordanceRepository },
                launchAnimator = launchAnimator,
                logger = logger,
                metricsLogger = metricsLogger,
                devicePolicyManager = devicePolicyManager,
                dockManager = dockManager,
                biometricSettingsRepository = biometricSettingsRepository,
+75 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.keyguard.logging

import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.dagger.KeyguardQuickAffordancesLog
import javax.inject.Inject

class KeyguardQuickAffordancesLogger
@Inject
constructor(
    @KeyguardQuickAffordancesLog val buffer: LogBuffer,
) {
    fun logQuickAffordanceTapped(configKey: String?) {
        val (slotId, affordanceId) = configKey?.decode() ?: ("" to "")
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = affordanceId
                str2 = slotId
            },
            { "QuickAffordance tapped with id: $str1, in slot: $str2" }
        )
    }

    fun logQuickAffordanceTriggered(slotId: String, affordanceId: String) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = affordanceId
                str2 = slotId
            },
            { "QuickAffordance triggered with id: $str1, in slot: $str2" }
        )
    }

    fun logQuickAffordanceSelected(slotId: String, affordanceId: String) {
        buffer.log(
            TAG,
            LogLevel.DEBUG,
            {
                str1 = affordanceId
                str2 = slotId
            },
            { "QuickAffordance selected with id: $str1, in slot: $str2" }
        )
    }

    private fun String.decode(): Pair<String, String> {
        val splitUp = this.split(DELIMITER)
        return Pair(splitUp[0], splitUp[1])
    }

    companion object {
        private const val TAG = "KeyguardQuickAffordancesLogger"
        private const val DELIMITER = "::"
    }
}
+7 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.util.Log
import com.android.app.tracing.coroutines.withContext
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.internal.widget.LockPatternUtils
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.animation.Expandable
import com.android.systemui.dagger.SysUISingleton
@@ -80,7 +81,8 @@ constructor(
    private val featureFlags: FeatureFlags,
    private val repository: Lazy<KeyguardQuickAffordanceRepository>,
    private val launchAnimator: DialogTransitionAnimator,
    private val logger: KeyguardQuickAffordancesMetricsLogger,
    private val logger: KeyguardQuickAffordancesLogger,
    private val metricsLogger: KeyguardQuickAffordancesMetricsLogger,
    private val devicePolicyManager: DevicePolicyManager,
    private val dockManager: DockManager,
    private val biometricSettingsRepository: BiometricSettingsRepository,
@@ -171,7 +173,8 @@ constructor(
            Log.e(TAG, "Affordance config with key of \"$configKey\" not found!")
            return
        }
        logger.logOnShortcutTriggered(slotId, configKey)
        logger.logQuickAffordanceTriggered(decodedSlotId, decodedConfigKey)
        metricsLogger.logOnShortcutTriggered(slotId, configKey)

        when (val result = config.onTriggered(expandable)) {
            is KeyguardQuickAffordanceConfig.OnTriggeredResult.StartActivity ->
@@ -223,7 +226,8 @@ constructor(
                affordanceIds = selections,
            )

        logger.logOnShortcutSelected(slotId, affordanceId)
        logger.logQuickAffordanceSelected(slotId, affordanceId)
        metricsLogger.logOnShortcutSelected(slotId, affordanceId)
        return true
    }

+5 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.settingslib.Utils
import com.android.systemui.animation.Expandable
import com.android.systemui.animation.view.LaunchableImageView
@@ -74,6 +75,7 @@ object KeyguardQuickAffordanceViewBinder {
        alpha: Flow<Float>,
        falsingManager: FalsingManager?,
        vibratorHelper: VibratorHelper?,
        logger: KeyguardQuickAffordancesLogger,
        messageDisplayer: (Int) -> Unit,
    ): Binding {
        val button = view as ImageView
@@ -89,6 +91,7 @@ object KeyguardQuickAffordanceViewBinder {
                                falsingManager = falsingManager,
                                messageDisplayer = messageDisplayer,
                                vibratorHelper = vibratorHelper,
                                logger = logger,
                            )
                        }
                    }
@@ -131,6 +134,7 @@ object KeyguardQuickAffordanceViewBinder {
        falsingManager: FalsingManager?,
        messageDisplayer: (Int) -> Unit,
        vibratorHelper: VibratorHelper?,
        logger: KeyguardQuickAffordancesLogger,
    ) {
        if (!viewModel.isVisible) {
            view.isInvisible = true
@@ -228,6 +232,7 @@ object KeyguardQuickAffordanceViewBinder {
                    shakeAnimator.start()

                    vibratorHelper?.vibrate(KeyguardBottomAreaVibrations.Shake)
                    logger.logQuickAffordanceTapped(viewModel.configKey)
                }
                view.onLongClickListener =
                    OnLongClickListener(falsingManager, viewModel, vibratorHelper, onTouchListener)
Loading