summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Philip Junker <philipjunker@google.com> 2022-10-04 17:25:26 +0200
committer Philip Junker <philipjunker@google.com> 2022-10-04 16:20:10 +0000
commit95026d42044ae0d30e775310714b68c9dd85bedc (patch)
treefd259319454c10b507193eb4e0523b2679f7568d
parent01a8beee3f86b3d9cdcbb3b8e035650ce3fe5ed4 (diff)
Add testApi to query global keys.
This removes cts/GlobalKeyMapping which copied the behavior of GlobalKeyManager. Bug: 199182608 Test: GoogleAtvReferenceRemoteControlTest Change-Id: I7d48f7ce5484fb360ff41c62516c06b27b3e1d88
-rw-r--r--core/api/test-current.txt1
-rw-r--r--core/java/android/view/IWindowManager.aidl8
-rw-r--r--core/java/android/view/WindowManager.java12
-rw-r--r--core/java/android/view/WindowManagerImpl.java9
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java5
-rw-r--r--services/core/java/com/android/server/policy/WindowManagerPolicy.java8
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java5
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java5
8 files changed, 53 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 9f333315451c..ce6012ba70e5 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -2937,6 +2937,7 @@ package android.view {
public interface WindowManager extends android.view.ViewManager {
method public default int getDisplayImePolicy(int);
method public default void holdLock(android.os.IBinder, int);
+ method public default boolean isGlobalKey(int);
method public default boolean isTaskSnapshotSupported();
method public default void setDisplayImePolicy(int, int);
method public default void setShouldShowSystemDecors(int, boolean);
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 30dc0c2aa7d6..dddbe395aef1 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -985,4 +985,12 @@ interface IWindowManager
*/
oneway void captureDisplay(int displayId, in @nullable ScreenCapture.CaptureArgs captureArgs,
in ScreenCapture.ScreenCaptureListener listener);
+
+ /**
+ * Returns {@code true} if the key will be handled globally and not forwarded to all apps.
+ *
+ * @param keyCode the key code to check
+ * @return {@code true} if the key will be handled globally.
+ */
+ boolean isGlobalKey(int keyCode);
}
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 8656af2151d9..e757d6a33dd1 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -945,6 +945,18 @@ public interface WindowManager extends ViewManager {
}
/**
+ * Returns {@code true} if the key will be handled globally and not forwarded to all apps.
+ *
+ * @param keyCode the key code to check
+ * @return {@code true} if the key will be handled globally.
+ * @hide
+ */
+ @TestApi
+ default boolean isGlobalKey(int keyCode) {
+ return false;
+ }
+
+ /**
* <p>
* Returns whether cross-window blur is currently enabled. This affects both window blur behind
* (see {@link LayoutParams#setBlurBehindRadius}) and window background blur (see
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index dc4ccbad27be..6dc90117bf55 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -283,6 +283,15 @@ public final class WindowManagerImpl implements WindowManager {
}
@Override
+ public boolean isGlobalKey(int keyCode) {
+ try {
+ return WindowManagerGlobal.getWindowManagerService().isGlobalKey(keyCode);
+ } catch (RemoteException e) {
+ }
+ return false;
+ }
+
+ @Override
public WindowMetrics getCurrentWindowMetrics() {
final Context context = mParentWindow != null ? mParentWindow.getContext() : mContext;
final Rect bounds = getCurrentBounds(context);
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 41663648c98c..42a0515fd620 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -5494,6 +5494,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
@Override
+ public boolean isGlobalKey(int keyCode) {
+ return mGlobalKeyManager.shouldHandleGlobalKey(keyCode);
+ }
+
+ @Override
public boolean performHapticFeedback(int uid, String packageName, int effectId,
boolean always, String reason) {
if (!mVibrator.hasVibrator()) {
diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
index 2b0405073323..f5ce461c1583 100644
--- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java
+++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
@@ -1188,4 +1188,12 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {
* A new window on default display has been focused.
*/
default void onDefaultDisplayFocusChangedLw(WindowState newFocus) {}
+
+ /**
+ * Returns {@code true} if the key will be handled globally and not forwarded to all apps.
+ *
+ * @param keyCode the key code to check
+ * @return {@code true} if the key will be handled globally.
+ */
+ boolean isGlobalKey(int keyCode);
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 1497a192ff1e..86a97f8abd74 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -9351,4 +9351,9 @@ public class WindowManagerService extends IWindowManager.Stub
.setSourceCrop(mTmpRect)
.build();
}
+
+ @Override
+ public boolean isGlobalKey(int keyCode) {
+ return mPolicy.isGlobalKey(keyCode);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
index 13da1543cfb8..3344bdb24d1e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java
@@ -338,4 +338,9 @@ class TestWindowManagerPolicy implements WindowManagerPolicy {
public boolean canDismissBootAnimation() {
return true;
}
+
+ @Override
+ public boolean isGlobalKey(int keyCode) {
+ return false;
+ }
}