Add UiEvent for the device starting to wake up

For T_START to calculate biometric latency from.

Test: atest KeyguardViewMediatorTest
Fixes: 279924123
Change-Id: Iebde4903df904f5cd1edafe31b6918d7a2e912ec
This commit is contained in:
Beverly
2023-05-01 19:43:11 +00:00
committed by Beverly Tai
parent 50875ae2d5
commit cfcdbd15cb
4 changed files with 51 additions and 4 deletions

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_NO_WINDOW_ANIMATIONS;
import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_LAUNCHER_CLEAR_SNAPSHOT;
@@ -100,6 +101,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.jank.InteractionJankMonitor.Configuration;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.policy.IKeyguardExitCallback;
import com.android.internal.policy.IKeyguardStateCallback;
@@ -131,6 +133,7 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.dagger.KeyguardModule;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.settings.UserTracker;
@@ -1181,12 +1184,16 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private Lazy<ScrimController> mScrimControllerLazy;
private FeatureFlags mFeatureFlags;
private final UiEventLogger mUiEventLogger;
private final SessionTracker mSessionTracker;
/**
* Injected constructor. See {@link KeyguardModule}.
*/
public KeyguardViewMediator(
Context context,
UiEventLogger uiEventLogger,
SessionTracker sessionTracker,
UserTracker userTracker,
FalsingCollector falsingCollector,
LockPatternUtils lockPatternUtils,
@@ -1270,6 +1277,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mDreamCloseAnimationDuration = (int) LOCKSCREEN_ANIMATION_DURATION_MS;
mFeatureFlags = featureFlags;
mUiEventLogger = uiEventLogger;
mSessionTracker = sessionTracker;
}
public void userActivity() {
@@ -1660,6 +1669,13 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
if (DEBUG) Log.d(TAG, "onStartedWakingUp, seq = " + mDelayedShowingSequence);
notifyStartedWakingUp();
}
mUiEventLogger.logWithInstanceIdAndPosition(
BiometricUnlockController.BiometricUiEvent.STARTED_WAKING_UP,
0,
null,
mSessionTracker.getSessionId(SESSION_KEYGUARD),
pmWakeReason
);
mUpdateMonitor.dispatchStartedWakingUp(pmWakeReason);
maybeSendUserPresentBroadcast();
Trace.endSection();

View File

@@ -21,6 +21,7 @@ import android.content.Context;
import android.os.PowerManager;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardDisplayManager;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -50,6 +51,7 @@ import com.android.systemui.keyguard.domain.interactor.StartKeyguardTransitionMo
import com.android.systemui.keyguard.domain.quickaffordance.KeyguardQuickAffordanceModule;
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger;
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLoggerImpl;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.ShadeController;
@@ -63,12 +65,12 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.util.DeviceConfigProxy;
import java.util.concurrent.Executor;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
import java.util.concurrent.Executor;
/**
* Dagger Module providing keyguard.
*/
@@ -93,6 +95,8 @@ public class KeyguardModule {
@SysUISingleton
public static KeyguardViewMediator newKeyguardViewMediator(
Context context,
UiEventLogger uiEventLogger,
SessionTracker sessionTracker,
UserTracker userTracker,
FalsingCollector falsingCollector,
LockPatternUtils lockPatternUtils,
@@ -124,6 +128,8 @@ public class KeyguardModule {
FeatureFlags featureFlags) {
return new KeyguardViewMediator(
context,
uiEventLogger,
sessionTracker,
userTracker,
falsingCollector,
lockPatternUtils,

View File

@@ -190,7 +190,6 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
}
}
@VisibleForTesting
public enum BiometricUiEvent implements UiEventLogger.UiEventEnum {
@UiEvent(doc = "A biometric event of type fingerprint succeeded.")
@@ -221,7 +220,10 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
BIOMETRIC_IRIS_ERROR(404),
@UiEvent(doc = "Bouncer was shown as a result of consecutive failed UDFPS attempts.")
BIOMETRIC_BOUNCER_SHOWN(916);
BIOMETRIC_BOUNCER_SHOWN(916),
@UiEvent(doc = "Screen started waking up with the given PowerManager wake reason.")
STARTED_WAKING_UP(1378);
private final int mId;

View File

@@ -52,6 +52,8 @@ import android.view.WindowManager;
import androidx.test.filters.SmallTest;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.logging.InstanceId;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardDisplayManager;
import com.android.keyguard.KeyguardSecurityView;
@@ -68,6 +70,7 @@ import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
@@ -77,6 +80,7 @@ import com.android.systemui.shade.ShadeWindowLogger;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
@@ -143,6 +147,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
private FalsingCollectorFake mFalsingCollector;
private @Mock CentralSurfaces mCentralSurfaces;
private @Mock UiEventLogger mUiEventLogger;
private @Mock SessionTracker mSessionTracker;
private FakeFeatureFlags mFeatureFlags;
@@ -543,9 +549,26 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
assertTrue(mViewMediator.isShowingAndNotOccluded());
}
@Test
public void testOnStartedWakingUp_logsUiEvent() {
final InstanceId instanceId = InstanceId.fakeInstanceId(8);
when(mSessionTracker.getSessionId((anyInt()))).thenReturn(instanceId);
mViewMediator.onStartedWakingUp(PowerManager.WAKE_REASON_LIFT, false);
verify(mUiEventLogger).logWithInstanceIdAndPosition(
eq(BiometricUnlockController.BiometricUiEvent.STARTED_WAKING_UP),
anyInt(),
any(),
eq(instanceId),
eq(PowerManager.WAKE_REASON_LIFT)
);
}
private void createAndStartViewMediator() {
mViewMediator = new KeyguardViewMediator(
mContext,
mUiEventLogger,
mSessionTracker,
mUserTracker,
mFalsingCollector,
mLockPatternUtils,