Loading services/core/java/com/android/server/GestureLauncherService.java +37 −3 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ import android.view.KeyEvent; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -145,16 +148,44 @@ public class GestureLauncherService extends SystemService { private long mLastPowerDown; private int mPowerButtonConsecutiveTaps; private int mPowerButtonSlowConsecutiveTaps; private final UiEventLogger mUiEventLogger; @VisibleForTesting public enum GestureLauncherEvent implements UiEventLogger.UiEventEnum { @UiEvent(doc = "The user lifted the device just the right way to launch the camera.") GESTURE_CAMERA_LIFT(658), @UiEvent(doc = "The user wiggled the device just the right way to launch the camera.") GESTURE_CAMERA_WIGGLE(659), @UiEvent(doc = "The user double-tapped power quickly enough to launch the camera.") GESTURE_CAMERA_DOUBLE_TAP_POWER(660), @UiEvent(doc = "The user multi-tapped power quickly enough to signal an emergency.") GESTURE_PANIC_TAP_POWER(661); private final int mId; GestureLauncherEvent(int id) { mId = id; } @Override public int getId() { return mId; } } public GestureLauncherService(Context context) { this(context, new MetricsLogger()); this(context, new MetricsLogger(), new UiEventLoggerImpl()); } @VisibleForTesting GestureLauncherService(Context context, MetricsLogger metricsLogger) { GestureLauncherService(Context context, MetricsLogger metricsLogger, UiEventLogger uiEventLogger) { super(context); mContext = context; mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; } @Override Loading Loading @@ -460,11 +491,12 @@ public class GestureLauncherService extends SystemService { if (launchCamera) { mMetricsLogger.action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) powerTapInterval); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); } } else if (launchEmergencyGesture) { Slog.i(TAG, "Emergency gesture detected, launching."); launchEmergencyGesture = handleEmergencyGesture(); // TODO(b/160006048): Add logging mUiEventLogger.log(GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); } mMetricsLogger.histogram("power_consecutive_short_tap_count", mPowerButtonSlowConsecutiveTaps); Loading Loading @@ -587,6 +619,7 @@ public class GestureLauncherService extends SystemService { if (handleCameraGesture(true /* useWakelock */, StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE)) { mMetricsLogger.action(MetricsEvent.ACTION_WIGGLE_CAMERA_GESTURE); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_WIGGLE); trackCameraLaunchEvent(event); } return; Loading Loading @@ -671,6 +704,7 @@ public class GestureLauncherService extends SystemService { if (handleCameraGesture(true /* useWakelock */, StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER)) { MetricsLogger.action(mContext, MetricsEvent.ACTION_CAMERA_LIFT_TRIGGER); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_LIFT); } } else { if (DBG_CAMERA_LIFT) Slog.d(TAG, "Ignoring lift event"); Loading services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java +30 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.never; Loading @@ -36,6 +37,7 @@ import android.platform.test.annotations.Presubmit; import android.provider.Settings; import android.telecom.TelecomManager; import android.test.mock.MockContentResolver; import android.testing.TestableLooper; import android.util.MutableBoolean; import android.view.KeyEvent; Loading @@ -44,6 +46,7 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.statusbar.StatusBarManagerInternal; Loading @@ -65,6 +68,7 @@ import java.util.List; @Presubmit @SmallTest @RunWith(AndroidJUnit4.class) @TestableLooper.RunWithLooper(setAsMainLooper = true) public class GestureLauncherServiceTest { private static final int FAKE_USER_ID = 1337; Loading @@ -83,6 +87,7 @@ public class GestureLauncherServiceTest { private @Mock StatusBarManagerInternal mStatusBarManagerInternal; private @Mock TelecomManager mTelecomManager; private @Mock MetricsLogger mMetricsLogger; @Mock private UiEventLogger mUiEventLogger; private MockContentResolver mContentResolver; private GestureLauncherService mGestureLauncherService; Loading @@ -109,7 +114,8 @@ public class GestureLauncherServiceTest { when(mContext.getSystemService(Context.TELECOM_SERVICE)).thenReturn(mTelecomManager); when(mTelecomManager.createLaunchEmergencyDialerIntent(null)).thenReturn(new Intent()); mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger); mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger, mUiEventLogger); } @Test Loading Loading @@ -268,6 +274,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -312,6 +319,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -358,6 +366,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -406,6 +415,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -460,6 +471,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> cameraIntervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -499,7 +512,8 @@ public class GestureLauncherServiceTest { assertTrue(intercepted); assertTrue(outLaunched.value); // TODO (b/169960245) Verify metric event equiv. to ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); verify(mStatusBarManagerInternal).onEmergencyActionLaunchGestureDetected(); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); Loading Loading @@ -551,7 +565,8 @@ public class GestureLauncherServiceTest { assertTrue(outLaunched.value); assertTrue(intercepted); // TODO (b/169960245) Verify metric event equiv. to ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); verify(mStatusBarManagerInternal).onEmergencyActionLaunchGestureDetected(); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); Loading Loading @@ -646,6 +661,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(1)).histogram( Loading Loading @@ -690,6 +706,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -736,6 +753,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -782,6 +800,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -826,6 +845,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -869,6 +889,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -914,6 +935,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -961,6 +983,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1007,6 +1031,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1051,6 +1076,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1097,6 +1123,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading
services/core/java/com/android/server/GestureLauncherService.java +37 −3 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ import android.view.KeyEvent; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.wm.WindowManagerInternal; Loading Loading @@ -145,16 +148,44 @@ public class GestureLauncherService extends SystemService { private long mLastPowerDown; private int mPowerButtonConsecutiveTaps; private int mPowerButtonSlowConsecutiveTaps; private final UiEventLogger mUiEventLogger; @VisibleForTesting public enum GestureLauncherEvent implements UiEventLogger.UiEventEnum { @UiEvent(doc = "The user lifted the device just the right way to launch the camera.") GESTURE_CAMERA_LIFT(658), @UiEvent(doc = "The user wiggled the device just the right way to launch the camera.") GESTURE_CAMERA_WIGGLE(659), @UiEvent(doc = "The user double-tapped power quickly enough to launch the camera.") GESTURE_CAMERA_DOUBLE_TAP_POWER(660), @UiEvent(doc = "The user multi-tapped power quickly enough to signal an emergency.") GESTURE_PANIC_TAP_POWER(661); private final int mId; GestureLauncherEvent(int id) { mId = id; } @Override public int getId() { return mId; } } public GestureLauncherService(Context context) { this(context, new MetricsLogger()); this(context, new MetricsLogger(), new UiEventLoggerImpl()); } @VisibleForTesting GestureLauncherService(Context context, MetricsLogger metricsLogger) { GestureLauncherService(Context context, MetricsLogger metricsLogger, UiEventLogger uiEventLogger) { super(context); mContext = context; mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; } @Override Loading Loading @@ -460,11 +491,12 @@ public class GestureLauncherService extends SystemService { if (launchCamera) { mMetricsLogger.action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) powerTapInterval); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); } } else if (launchEmergencyGesture) { Slog.i(TAG, "Emergency gesture detected, launching."); launchEmergencyGesture = handleEmergencyGesture(); // TODO(b/160006048): Add logging mUiEventLogger.log(GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); } mMetricsLogger.histogram("power_consecutive_short_tap_count", mPowerButtonSlowConsecutiveTaps); Loading Loading @@ -587,6 +619,7 @@ public class GestureLauncherService extends SystemService { if (handleCameraGesture(true /* useWakelock */, StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE)) { mMetricsLogger.action(MetricsEvent.ACTION_WIGGLE_CAMERA_GESTURE); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_WIGGLE); trackCameraLaunchEvent(event); } return; Loading Loading @@ -671,6 +704,7 @@ public class GestureLauncherService extends SystemService { if (handleCameraGesture(true /* useWakelock */, StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER)) { MetricsLogger.action(mContext, MetricsEvent.ACTION_CAMERA_LIFT_TRIGGER); mUiEventLogger.log(GestureLauncherEvent.GESTURE_CAMERA_LIFT); } } else { if (DBG_CAMERA_LIFT) Slog.d(TAG, "Ignoring lift event"); Loading
services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java +30 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.never; Loading @@ -36,6 +37,7 @@ import android.platform.test.annotations.Presubmit; import android.provider.Settings; import android.telecom.TelecomManager; import android.test.mock.MockContentResolver; import android.testing.TestableLooper; import android.util.MutableBoolean; import android.view.KeyEvent; Loading @@ -44,6 +46,7 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.statusbar.StatusBarManagerInternal; Loading @@ -65,6 +68,7 @@ import java.util.List; @Presubmit @SmallTest @RunWith(AndroidJUnit4.class) @TestableLooper.RunWithLooper(setAsMainLooper = true) public class GestureLauncherServiceTest { private static final int FAKE_USER_ID = 1337; Loading @@ -83,6 +87,7 @@ public class GestureLauncherServiceTest { private @Mock StatusBarManagerInternal mStatusBarManagerInternal; private @Mock TelecomManager mTelecomManager; private @Mock MetricsLogger mMetricsLogger; @Mock private UiEventLogger mUiEventLogger; private MockContentResolver mContentResolver; private GestureLauncherService mGestureLauncherService; Loading @@ -109,7 +114,8 @@ public class GestureLauncherServiceTest { when(mContext.getSystemService(Context.TELECOM_SERVICE)).thenReturn(mTelecomManager); when(mTelecomManager.createLaunchEmergencyDialerIntent(null)).thenReturn(new Intent()); mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger); mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger, mUiEventLogger); } @Test Loading Loading @@ -268,6 +274,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -312,6 +319,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -358,6 +366,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -406,6 +415,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -460,6 +471,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> cameraIntervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -499,7 +512,8 @@ public class GestureLauncherServiceTest { assertTrue(intercepted); assertTrue(outLaunched.value); // TODO (b/169960245) Verify metric event equiv. to ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); verify(mStatusBarManagerInternal).onEmergencyActionLaunchGestureDetected(); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); Loading Loading @@ -551,7 +565,8 @@ public class GestureLauncherServiceTest { assertTrue(outLaunched.value); assertTrue(intercepted); // TODO (b/169960245) Verify metric event equiv. to ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_PANIC_TAP_POWER); verify(mStatusBarManagerInternal).onEmergencyActionLaunchGestureDetected(); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); Loading Loading @@ -646,6 +661,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(1)).histogram( Loading Loading @@ -690,6 +706,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -736,6 +753,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -782,6 +800,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -826,6 +845,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -869,6 +889,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -914,6 +935,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -961,6 +983,8 @@ public class GestureLauncherServiceTest { StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP); verify(mMetricsLogger) .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval); verify(mUiEventLogger, times(1)) .log(GestureLauncherService.GestureLauncherEvent.GESTURE_CAMERA_DOUBLE_TAP_POWER); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1007,6 +1031,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1051,6 +1076,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading Loading @@ -1097,6 +1123,7 @@ public class GestureLauncherServiceTest { verify(mMetricsLogger, never()) .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt()); verify(mUiEventLogger, never()).log(any()); final ArgumentCaptor<Integer> intervalCaptor = ArgumentCaptor.forClass(Integer.class); verify(mMetricsLogger, times(2)).histogram( Loading