Loading services/core/java/com/android/server/GestureLauncherService.java +29 −31 Original line number Diff line number Diff line Loading @@ -75,9 +75,9 @@ public class GestureLauncherService extends SystemService { @VisibleForTesting static final long POWER_SHORT_TAP_SEQUENCE_MAX_INTERVAL_MS = 500; /** * Number of taps required to launch panic ui. * Number of taps required to launch emergency gesture ui. */ private static final int PANIC_POWER_TAP_COUNT_THRESHOLD = 5; private static final int EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD = 5; /** * Number of taps required to launch camera shortcut. Loading Loading @@ -138,9 +138,9 @@ public class GestureLauncherService extends SystemService { private boolean mCameraDoubleTapPowerEnabled; /** * Whether panic button gesture is currently enabled * Whether emergency gesture is currently enabled */ private boolean mPanicButtonGestureEnabled; private boolean mEmergencyGestureEnabled; private long mLastPowerDown; private int mPowerButtonConsecutiveTaps; Loading Loading @@ -178,7 +178,7 @@ public class GestureLauncherService extends SystemService { "GestureLauncherService"); updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); mUserId = ActivityManager.getCurrentUser(); mContext.registerReceiver(mUserReceiver, new IntentFilter(Intent.ACTION_USER_SWITCHED)); Loading Loading @@ -225,10 +225,10 @@ public class GestureLauncherService extends SystemService { } @VisibleForTesting void updatePanicButtonGestureEnabled() { boolean enabled = isPanicButtonGestureEnabled(mContext, mUserId); void updateEmergencyGestureEnabled() { boolean enabled = isEmergencyGestureEnabled(mContext, mUserId); synchronized (this) { mPanicButtonGestureEnabled = enabled; mEmergencyGestureEnabled = enabled; } } Loading Loading @@ -357,9 +357,9 @@ public class GestureLauncherService extends SystemService { } /** * Whether to enable panic button gesture. * Whether to enable emergency gesture. */ public static boolean isPanicButtonGestureEnabled(Context context, int userId) { public static boolean isEmergencyGestureEnabled(Context context, int userId) { return Settings.Secure.getIntForUser(context.getContentResolver(), Settings.Secure.PANIC_GESTURE_ENABLED, 0, userId) != 0; } Loading Loading @@ -409,7 +409,7 @@ public class GestureLauncherService extends SystemService { return false; } boolean launchCamera = false; boolean launchPanic = false; boolean launchEmergencyGesture = false; boolean intercept = false; long powerTapInterval; synchronized (this) { Loading @@ -428,15 +428,15 @@ public class GestureLauncherService extends SystemService { mPowerButtonConsecutiveTaps++; mPowerButtonSlowConsecutiveTaps++; } // Check if we need to launch camera or panic flows if (mPanicButtonGestureEnabled) { // Check if we need to launch camera or emergency gesture flows if (mEmergencyGestureEnabled) { // Commit to intercepting the powerkey event after the second "quick" tap to avoid // lockscreen changes between launching camera and the panic flow. // lockscreen changes between launching camera and the emergency gesture flow. if (mPowerButtonConsecutiveTaps > 1) { intercept = interactive; } if (mPowerButtonConsecutiveTaps == PANIC_POWER_TAP_COUNT_THRESHOLD) { launchPanic = true; if (mPowerButtonConsecutiveTaps == EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD) { launchEmergencyGesture = true; } } if (mCameraDoubleTapPowerEnabled Loading @@ -461,18 +461,18 @@ public class GestureLauncherService extends SystemService { mMetricsLogger.action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) powerTapInterval); } } else if (launchPanic) { Slog.i(TAG, "Panic gesture detected, launching panic."); launchPanic = handlePanicButtonGesture(); } else if (launchEmergencyGesture) { Slog.i(TAG, "Emergency gesture detected, launching."); launchEmergencyGesture = handleEmergencyGesture(); // TODO(b/160006048): Add logging } mMetricsLogger.histogram("power_consecutive_short_tap_count", mPowerButtonSlowConsecutiveTaps); mMetricsLogger.histogram("power_double_tap_interval", (int) powerTapInterval); outLaunched.value = launchCamera || launchPanic; // Intercept power key event if the press is part of a gesture (camera, panic) and the user // has completed setup. outLaunched.value = launchCamera || launchEmergencyGesture; // Intercept power key event if the press is part of a gesture (camera, eGesture) and the // user has completed setup. return intercept && isUserSetupComplete(); } Loading Loading @@ -512,27 +512,25 @@ public class GestureLauncherService extends SystemService { } /** * @return true if panic ui was launched, false otherwise. * @return true if emergency gesture UI was launched, false otherwise. */ @VisibleForTesting boolean handlePanicButtonGesture() { // TODO(b/160006048): This is the wrong way to launch panic ui. Rewrite this to go // through SysUI boolean handleEmergencyGesture() { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "GestureLauncher:handlePanicButtonGesture"); "GestureLauncher:handleEmergencyGesture"); try { boolean userSetupComplete = isUserSetupComplete(); if (!userSetupComplete) { if (DBG) { Slog.d(TAG, String.format( "userSetupComplete = %s, ignoring panic gesture.", "userSetupComplete = %s, ignoring emergency gesture.", userSetupComplete)); } return false; } if (DBG) { Slog.d(TAG, String.format( "userSetupComplete = %s, performing panic gesture.", "userSetupComplete = %s, performing emergency gesture.", userSetupComplete)); } StatusBarManagerInternal service = LocalServices.getService( Loading @@ -558,7 +556,7 @@ public class GestureLauncherService extends SystemService { registerContentObservers(); updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); } } }; Loading @@ -568,7 +566,7 @@ public class GestureLauncherService extends SystemService { if (userId == mUserId) { updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); } } }; Loading services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java +27 −28 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.test.runner.AndroidJUnit4; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.LocalServices; import com.android.server.statusbar.StatusBarManagerInternal; import org.junit.Before; Loading Loading @@ -158,16 +157,16 @@ public class GestureLauncherServiceTest { } @Test public void testIsPanicButtonGestureEnabled_settingDisabled() { withPanicGestureEnabledSettingValue(false); assertFalse(mGestureLauncherService.isPanicButtonGestureEnabled( public void testIsEmergencyGestureEnabled_settingDisabled() { withEmergencyGestureEnabledSettingValue(false); assertFalse(mGestureLauncherService.isEmergencyGestureEnabled( mContext, FAKE_USER_ID)); } @Test public void testIsPanicButtonGestureEnabled_settingEnabled() { withPanicGestureEnabledSettingValue(true); assertTrue(mGestureLauncherService.isPanicButtonGestureEnabled( public void testIsEmergencyGestureEnabled_settingEnabled() { withEmergencyGestureEnabledSettingValue(true); assertTrue(mGestureLauncherService.isEmergencyGestureEnabled( mContext, FAKE_USER_ID)); } Loading @@ -181,10 +180,10 @@ public class GestureLauncherServiceTest { } @Test public void testHandlePanicGesture_userSetupComplete() { public void testHandleEmergencyGesture_userSetupComplete() { withUserSetupCompleteValue(true); assertTrue(mGestureLauncherService.handlePanicButtonGesture()); assertTrue(mGestureLauncherService.handleEmergencyGesture()); } @Test Loading @@ -196,10 +195,10 @@ public class GestureLauncherServiceTest { } @Test public void testHandlePanicGesture_userSetupNotComplete() { public void testHandleEmergencyGesture_userSetupNotComplete() { withUserSetupCompleteValue(false); assertFalse(mGestureLauncherService.handlePanicButtonGesture()); assertFalse(mGestureLauncherService.handleEmergencyGesture()); } @Test Loading @@ -223,9 +222,9 @@ public class GestureLauncherServiceTest { } @Test public void testInterceptPowerKeyDown_firstPowerDown_panicGestureNotLaunched() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); public void testInterceptPowerKeyDown_firstPowerDown_emergencyGestureNotLaunched() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); long eventTime = INITIAL_EVENT_TIME_MILLIS + GestureLauncherService.POWER_SHORT_TAP_SEQUENCE_MAX_INTERVAL_MS - 1; Loading Loading @@ -425,12 +424,12 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_fiveInboundPresses_cameraAndPanicEnabled_bothLaunch() { testInterceptPowerKeyDown_fiveInboundPresses_cameraAndEmergencyEnabled_bothLaunch() { withCameraDoubleTapPowerEnableConfigValue(true); withCameraDoubleTapPowerDisableSettingValue(0); withPanicGestureEnabledSettingValue(true); withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateCameraDoubleTapPowerEnabled(); mGestureLauncherService.updatePanicButtonGestureEnabled(); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading Loading @@ -476,7 +475,7 @@ public class GestureLauncherServiceTest { assertEquals(1, tapCounts.get(0).intValue()); assertEquals(2, tapCounts.get(1).intValue()); // Continue the button presses for the panic gesture. // Continue the button presses for the emergency gesture. // Presses 3 and 4 should not trigger any gesture for (int i = 0; i < 2; i++) { Loading @@ -490,7 +489,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading @@ -513,9 +512,9 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_fiveInboundPresses_panicGestureEnabled_launchesPanicFlow() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); testInterceptPowerKeyDown_fiveInboundPresses_emergencyGestureEnabled_launchesFlow() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading @@ -542,7 +541,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading @@ -565,9 +564,9 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_tenInboundPresses_panicGestureEnabled_pressesIntercepted() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); testInterceptPowerKeyDown_tenInboundPresses_emergencyGestureEnabled_keyIntercepted() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading @@ -594,7 +593,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading Loading @@ -1128,7 +1127,7 @@ public class GestureLauncherServiceTest { UserHandle.USER_CURRENT); } private void withPanicGestureEnabledSettingValue(boolean enable) { private void withEmergencyGestureEnabledSettingValue(boolean enable) { Settings.Secure.putIntForUser( mContentResolver, Settings.Secure.PANIC_GESTURE_ENABLED, Loading Loading
services/core/java/com/android/server/GestureLauncherService.java +29 −31 Original line number Diff line number Diff line Loading @@ -75,9 +75,9 @@ public class GestureLauncherService extends SystemService { @VisibleForTesting static final long POWER_SHORT_TAP_SEQUENCE_MAX_INTERVAL_MS = 500; /** * Number of taps required to launch panic ui. * Number of taps required to launch emergency gesture ui. */ private static final int PANIC_POWER_TAP_COUNT_THRESHOLD = 5; private static final int EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD = 5; /** * Number of taps required to launch camera shortcut. Loading Loading @@ -138,9 +138,9 @@ public class GestureLauncherService extends SystemService { private boolean mCameraDoubleTapPowerEnabled; /** * Whether panic button gesture is currently enabled * Whether emergency gesture is currently enabled */ private boolean mPanicButtonGestureEnabled; private boolean mEmergencyGestureEnabled; private long mLastPowerDown; private int mPowerButtonConsecutiveTaps; Loading Loading @@ -178,7 +178,7 @@ public class GestureLauncherService extends SystemService { "GestureLauncherService"); updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); mUserId = ActivityManager.getCurrentUser(); mContext.registerReceiver(mUserReceiver, new IntentFilter(Intent.ACTION_USER_SWITCHED)); Loading Loading @@ -225,10 +225,10 @@ public class GestureLauncherService extends SystemService { } @VisibleForTesting void updatePanicButtonGestureEnabled() { boolean enabled = isPanicButtonGestureEnabled(mContext, mUserId); void updateEmergencyGestureEnabled() { boolean enabled = isEmergencyGestureEnabled(mContext, mUserId); synchronized (this) { mPanicButtonGestureEnabled = enabled; mEmergencyGestureEnabled = enabled; } } Loading Loading @@ -357,9 +357,9 @@ public class GestureLauncherService extends SystemService { } /** * Whether to enable panic button gesture. * Whether to enable emergency gesture. */ public static boolean isPanicButtonGestureEnabled(Context context, int userId) { public static boolean isEmergencyGestureEnabled(Context context, int userId) { return Settings.Secure.getIntForUser(context.getContentResolver(), Settings.Secure.PANIC_GESTURE_ENABLED, 0, userId) != 0; } Loading Loading @@ -409,7 +409,7 @@ public class GestureLauncherService extends SystemService { return false; } boolean launchCamera = false; boolean launchPanic = false; boolean launchEmergencyGesture = false; boolean intercept = false; long powerTapInterval; synchronized (this) { Loading @@ -428,15 +428,15 @@ public class GestureLauncherService extends SystemService { mPowerButtonConsecutiveTaps++; mPowerButtonSlowConsecutiveTaps++; } // Check if we need to launch camera or panic flows if (mPanicButtonGestureEnabled) { // Check if we need to launch camera or emergency gesture flows if (mEmergencyGestureEnabled) { // Commit to intercepting the powerkey event after the second "quick" tap to avoid // lockscreen changes between launching camera and the panic flow. // lockscreen changes between launching camera and the emergency gesture flow. if (mPowerButtonConsecutiveTaps > 1) { intercept = interactive; } if (mPowerButtonConsecutiveTaps == PANIC_POWER_TAP_COUNT_THRESHOLD) { launchPanic = true; if (mPowerButtonConsecutiveTaps == EMERGENCY_GESTURE_POWER_TAP_COUNT_THRESHOLD) { launchEmergencyGesture = true; } } if (mCameraDoubleTapPowerEnabled Loading @@ -461,18 +461,18 @@ public class GestureLauncherService extends SystemService { mMetricsLogger.action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) powerTapInterval); } } else if (launchPanic) { Slog.i(TAG, "Panic gesture detected, launching panic."); launchPanic = handlePanicButtonGesture(); } else if (launchEmergencyGesture) { Slog.i(TAG, "Emergency gesture detected, launching."); launchEmergencyGesture = handleEmergencyGesture(); // TODO(b/160006048): Add logging } mMetricsLogger.histogram("power_consecutive_short_tap_count", mPowerButtonSlowConsecutiveTaps); mMetricsLogger.histogram("power_double_tap_interval", (int) powerTapInterval); outLaunched.value = launchCamera || launchPanic; // Intercept power key event if the press is part of a gesture (camera, panic) and the user // has completed setup. outLaunched.value = launchCamera || launchEmergencyGesture; // Intercept power key event if the press is part of a gesture (camera, eGesture) and the // user has completed setup. return intercept && isUserSetupComplete(); } Loading Loading @@ -512,27 +512,25 @@ public class GestureLauncherService extends SystemService { } /** * @return true if panic ui was launched, false otherwise. * @return true if emergency gesture UI was launched, false otherwise. */ @VisibleForTesting boolean handlePanicButtonGesture() { // TODO(b/160006048): This is the wrong way to launch panic ui. Rewrite this to go // through SysUI boolean handleEmergencyGesture() { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "GestureLauncher:handlePanicButtonGesture"); "GestureLauncher:handleEmergencyGesture"); try { boolean userSetupComplete = isUserSetupComplete(); if (!userSetupComplete) { if (DBG) { Slog.d(TAG, String.format( "userSetupComplete = %s, ignoring panic gesture.", "userSetupComplete = %s, ignoring emergency gesture.", userSetupComplete)); } return false; } if (DBG) { Slog.d(TAG, String.format( "userSetupComplete = %s, performing panic gesture.", "userSetupComplete = %s, performing emergency gesture.", userSetupComplete)); } StatusBarManagerInternal service = LocalServices.getService( Loading @@ -558,7 +556,7 @@ public class GestureLauncherService extends SystemService { registerContentObservers(); updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); } } }; Loading @@ -568,7 +566,7 @@ public class GestureLauncherService extends SystemService { if (userId == mUserId) { updateCameraRegistered(); updateCameraDoubleTapPowerEnabled(); updatePanicButtonGestureEnabled(); updateEmergencyGestureEnabled(); } } }; Loading
services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java +27 −28 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.test.runner.AndroidJUnit4; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.test.FakeSettingsProvider; import com.android.server.LocalServices; import com.android.server.statusbar.StatusBarManagerInternal; import org.junit.Before; Loading Loading @@ -158,16 +157,16 @@ public class GestureLauncherServiceTest { } @Test public void testIsPanicButtonGestureEnabled_settingDisabled() { withPanicGestureEnabledSettingValue(false); assertFalse(mGestureLauncherService.isPanicButtonGestureEnabled( public void testIsEmergencyGestureEnabled_settingDisabled() { withEmergencyGestureEnabledSettingValue(false); assertFalse(mGestureLauncherService.isEmergencyGestureEnabled( mContext, FAKE_USER_ID)); } @Test public void testIsPanicButtonGestureEnabled_settingEnabled() { withPanicGestureEnabledSettingValue(true); assertTrue(mGestureLauncherService.isPanicButtonGestureEnabled( public void testIsEmergencyGestureEnabled_settingEnabled() { withEmergencyGestureEnabledSettingValue(true); assertTrue(mGestureLauncherService.isEmergencyGestureEnabled( mContext, FAKE_USER_ID)); } Loading @@ -181,10 +180,10 @@ public class GestureLauncherServiceTest { } @Test public void testHandlePanicGesture_userSetupComplete() { public void testHandleEmergencyGesture_userSetupComplete() { withUserSetupCompleteValue(true); assertTrue(mGestureLauncherService.handlePanicButtonGesture()); assertTrue(mGestureLauncherService.handleEmergencyGesture()); } @Test Loading @@ -196,10 +195,10 @@ public class GestureLauncherServiceTest { } @Test public void testHandlePanicGesture_userSetupNotComplete() { public void testHandleEmergencyGesture_userSetupNotComplete() { withUserSetupCompleteValue(false); assertFalse(mGestureLauncherService.handlePanicButtonGesture()); assertFalse(mGestureLauncherService.handleEmergencyGesture()); } @Test Loading @@ -223,9 +222,9 @@ public class GestureLauncherServiceTest { } @Test public void testInterceptPowerKeyDown_firstPowerDown_panicGestureNotLaunched() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); public void testInterceptPowerKeyDown_firstPowerDown_emergencyGestureNotLaunched() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); long eventTime = INITIAL_EVENT_TIME_MILLIS + GestureLauncherService.POWER_SHORT_TAP_SEQUENCE_MAX_INTERVAL_MS - 1; Loading Loading @@ -425,12 +424,12 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_fiveInboundPresses_cameraAndPanicEnabled_bothLaunch() { testInterceptPowerKeyDown_fiveInboundPresses_cameraAndEmergencyEnabled_bothLaunch() { withCameraDoubleTapPowerEnableConfigValue(true); withCameraDoubleTapPowerDisableSettingValue(0); withPanicGestureEnabledSettingValue(true); withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateCameraDoubleTapPowerEnabled(); mGestureLauncherService.updatePanicButtonGestureEnabled(); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading Loading @@ -476,7 +475,7 @@ public class GestureLauncherServiceTest { assertEquals(1, tapCounts.get(0).intValue()); assertEquals(2, tapCounts.get(1).intValue()); // Continue the button presses for the panic gesture. // Continue the button presses for the emergency gesture. // Presses 3 and 4 should not trigger any gesture for (int i = 0; i < 2; i++) { Loading @@ -490,7 +489,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading @@ -513,9 +512,9 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_fiveInboundPresses_panicGestureEnabled_launchesPanicFlow() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); testInterceptPowerKeyDown_fiveInboundPresses_emergencyGestureEnabled_launchesFlow() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading @@ -542,7 +541,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading @@ -565,9 +564,9 @@ public class GestureLauncherServiceTest { @Test public void testInterceptPowerKeyDown_tenInboundPresses_panicGestureEnabled_pressesIntercepted() { withPanicGestureEnabledSettingValue(true); mGestureLauncherService.updatePanicButtonGestureEnabled(); testInterceptPowerKeyDown_tenInboundPresses_emergencyGestureEnabled_keyIntercepted() { withEmergencyGestureEnabledSettingValue(true); mGestureLauncherService.updateEmergencyGestureEnabled(); withUserSetupCompleteValue(true); // First button press does nothing Loading @@ -594,7 +593,7 @@ public class GestureLauncherServiceTest { assertFalse(outLaunched.value); } // Fifth button press should trigger the panic flow // Fifth button press should trigger the emergency flow eventTime += interval; keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE, IGNORED_REPEAT); Loading Loading @@ -1128,7 +1127,7 @@ public class GestureLauncherServiceTest { UserHandle.USER_CURRENT); } private void withPanicGestureEnabledSettingValue(boolean enable) { private void withEmergencyGestureEnabledSettingValue(boolean enable) { Settings.Secure.putIntForUser( mContentResolver, Settings.Secure.PANIC_GESTURE_ENABLED, Loading