summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vaibhav Devmurari <vdevmurari@google.com> 2025-02-24 11:12:45 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-24 11:12:45 -0800
commitb9a9cd5f30df9994e4e3eb7e10cb7820f3fe4f6f (patch)
treefc85a1701df89300e8cc2d352398c5d4a8730116
parent0df1c851ba7303f8224aa422dcd5287f927acd91 (diff)
parent19c468c8b796d6c65dbbbdb8469f62d7af946342 (diff)
Merge "(1/n) Remove usage of isKeyGestureSupported() from KeyGestureController" into main
-rw-r--r--services/core/java/com/android/server/input/KeyGestureController.java38
-rw-r--r--services/core/java/com/android/server/policy/KeyCombinationManager.java8
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java17
3 files changed, 26 insertions, 37 deletions
diff --git a/services/core/java/com/android/server/input/KeyGestureController.java b/services/core/java/com/android/server/input/KeyGestureController.java
index fba0b0453bfb..ef5babf19d83 100644
--- a/services/core/java/com/android/server/input/KeyGestureController.java
+++ b/services/core/java/com/android/server/input/KeyGestureController.java
@@ -35,6 +35,7 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.hardware.display.DisplayManager;
import android.hardware.input.AidlInputGestureData;
import android.hardware.input.AidlKeyGestureEvent;
import android.hardware.input.AppLaunchData;
@@ -57,6 +58,7 @@ import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
+import android.view.Display;
import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
@@ -127,6 +129,7 @@ final class KeyGestureController {
private final SettingsObserver mSettingsObserver;
private final AppLaunchShortcutManager mAppLaunchShortcutManager;
private final InputGestureManager mInputGestureManager;
+ private final DisplayManager mDisplayManager;
@GuardedBy("mInputDataStore")
private final InputDataStore mInputDataStore;
private static final Object mUserLock = new Object();
@@ -194,6 +197,7 @@ final class KeyGestureController {
mSettingsObserver = new SettingsObserver(mHandler);
mAppLaunchShortcutManager = new AppLaunchShortcutManager(mContext);
mInputGestureManager = new InputGestureManager(mContext);
+ mDisplayManager = Objects.requireNonNull(mContext.getSystemService(DisplayManager.class));
mInputDataStore = inputDataStore;
mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
initBehaviors();
@@ -246,12 +250,6 @@ final class KeyGestureController {
new KeyCombinationManager.TwoKeysCombinationRule(KeyEvent.KEYCODE_VOLUME_DOWN,
KeyEvent.KEYCODE_POWER) {
@Override
- public boolean preCondition() {
- return isKeyGestureSupported(
- KeyGestureEvent.KEY_GESTURE_TYPE_SCREENSHOT_CHORD);
- }
-
- @Override
public void execute() {
handleMultiKeyGesture(
new int[]{KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_POWER},
@@ -274,12 +272,6 @@ final class KeyGestureController {
new KeyCombinationManager.TwoKeysCombinationRule(KeyEvent.KEYCODE_POWER,
KeyEvent.KEYCODE_STEM_PRIMARY) {
@Override
- public boolean preCondition() {
- return isKeyGestureSupported(
- KeyGestureEvent.KEY_GESTURE_TYPE_SCREENSHOT_CHORD);
- }
-
- @Override
public void execute() {
handleMultiKeyGesture(new int[]{KeyEvent.KEYCODE_POWER,
KeyEvent.KEYCODE_STEM_PRIMARY},
@@ -333,9 +325,6 @@ final class KeyGestureController {
KeyEvent.KEYCODE_POWER) {
@Override
public boolean preCondition() {
- if (!isKeyGestureSupported(getGestureType())) {
- return false;
- }
switch (mPowerVolUpBehavior) {
case POWER_VOLUME_UP_BEHAVIOR_MUTE:
return mRingerToggleChord != Settings.Secure.VOLUME_HUSH_OFF;
@@ -423,12 +412,6 @@ final class KeyGestureController {
new KeyCombinationManager.TwoKeysCombinationRule(KeyEvent.KEYCODE_BACK,
KeyEvent.KEYCODE_DPAD_CENTER) {
@Override
- public boolean preCondition() {
- return isKeyGestureSupported(
- KeyGestureEvent.KEY_GESTURE_TYPE_TV_TRIGGER_BUG_REPORT);
- }
-
- @Override
public void execute() {
handleMultiKeyGesture(
new int[]{KeyEvent.KEYCODE_BACK, KeyEvent.KEYCODE_DPAD_CENTER},
@@ -468,10 +451,11 @@ final class KeyGestureController {
if (mVisibleBackgroundUsersEnabled && shouldIgnoreKeyEventForVisibleBackgroundUser(event)) {
return false;
}
- final boolean interactive = (policyFlags & FLAG_INTERACTIVE) != 0;
if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
- return mKeyCombinationManager.interceptKey(event, interactive);
+ final boolean interactive = (policyFlags & FLAG_INTERACTIVE) != 0;
+ final boolean isDefaultDisplayOn = isDefaultDisplayOn();
+ return mKeyCombinationManager.interceptKey(event, interactive && isDefaultDisplayOn);
}
return false;
}
@@ -1038,6 +1022,14 @@ final class KeyGestureController {
mIoHandler.obtainMessage(MSG_LOAD_CUSTOM_GESTURES, userId).sendToTarget();
}
+ private boolean isDefaultDisplayOn() {
+ Display defaultDisplay = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
+ if (defaultDisplay == null) {
+ return false;
+ }
+ return Display.isOnState(defaultDisplay.getState());
+ }
+
@MainThread
private void notifyKeyGestureEvent(AidlKeyGestureEvent event) {
InputDevice device = getInputDevice(event.deviceId);
diff --git a/services/core/java/com/android/server/policy/KeyCombinationManager.java b/services/core/java/com/android/server/policy/KeyCombinationManager.java
index 1592ef306cb3..1b98dd1e249c 100644
--- a/services/core/java/com/android/server/policy/KeyCombinationManager.java
+++ b/services/core/java/com/android/server/policy/KeyCombinationManager.java
@@ -148,19 +148,19 @@ public class KeyCombinationManager {
* to a window.
* Return true if any active rule could be triggered by the key event, otherwise false.
*/
- public boolean interceptKey(KeyEvent event, boolean interactive) {
+ public boolean interceptKey(KeyEvent event, boolean isDefaultDisplayInteractive) {
synchronized (mLock) {
- return interceptKeyLocked(event, interactive);
+ return interceptKeyLocked(event, isDefaultDisplayInteractive);
}
}
- private boolean interceptKeyLocked(KeyEvent event, boolean interactive) {
+ private boolean interceptKeyLocked(KeyEvent event, boolean isDefaultDisplayInteractive) {
final boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
final int keyCode = event.getKeyCode();
final int count = mActiveRules.size();
final long eventTime = event.getEventTime();
- if (interactive && down) {
+ if (isDefaultDisplayInteractive && down) {
if (mDownTimes.size() > 0) {
if (count > 0
&& eventTime > mDownTimes.valueAt(0) + COMBINE_KEY_DELAY_MILLIS) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index d11f5e7b495f..f27194a7b792 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -4283,22 +4283,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case KeyGestureEvent.KEY_GESTURE_TYPE_CLOSE_ALL_DIALOGS:
case KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_APPLICATION:
case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_DO_NOT_DISTURB:
- return true;
case KeyGestureEvent.KEY_GESTURE_TYPE_SCREENSHOT_CHORD:
case KeyGestureEvent.KEY_GESTURE_TYPE_RINGER_TOGGLE_CHORD:
case KeyGestureEvent.KEY_GESTURE_TYPE_GLOBAL_ACTIONS:
case KeyGestureEvent.KEY_GESTURE_TYPE_TV_TRIGGER_BUG_REPORT:
- return mDefaultDisplayPolicy.isAwake();
- case KeyGestureEvent.KEY_GESTURE_TYPE_ACCESSIBILITY_SHORTCUT_CHORD:
- return mDefaultDisplayPolicy.isAwake() && mAccessibilityShortcutController
- .isAccessibilityShortcutAvailable(isKeyguardLocked());
- case KeyGestureEvent.KEY_GESTURE_TYPE_TV_ACCESSIBILITY_SHORTCUT_CHORD:
- return mDefaultDisplayPolicy.isAwake() && mAccessibilityShortcutController
- .isAccessibilityShortcutAvailable(false);
case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TALKBACK:
- return enableTalkbackAndMagnifierKeyGestures();
case KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS:
- return enableVoiceAccessKeyGestures();
+ return true;
+ case KeyGestureEvent.KEY_GESTURE_TYPE_ACCESSIBILITY_SHORTCUT_CHORD:
+ return mAccessibilityShortcutController.isAccessibilityShortcutAvailable(
+ isKeyguardLocked());
+ case KeyGestureEvent.KEY_GESTURE_TYPE_TV_ACCESSIBILITY_SHORTCUT_CHORD:
+ return mAccessibilityShortcutController.isAccessibilityShortcutAvailable(
+ false);
default:
return false;
}