From 4541a3234c6f5fd531ee6665306f9f3e2140395f Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Fri, 14 Aug 2020 11:54:50 -0700 Subject: Rename InputWindowHandle hasFocus to focusable A window with hasFocus set to true, means the window can be focusable. The current name is confusing when mutliple windows set the field to true. Rename this to focusable and also remove canRecieveKeys field which is not used. Test: presubmit Test: drag freeform windows Bug: 151179149 Change-Id: I1b2354da0dc241d5e887e599e43f0426671289b8 --- core/java/android/view/InputWindowHandle.java | 7 ++----- core/jni/android_hardware_input_InputWindowHandle.cpp | 14 +++----------- services/core/java/com/android/server/wm/DragState.java | 5 +++-- .../core/java/com/android/server/wm/InputConsumerImpl.java | 3 +-- services/core/java/com/android/server/wm/InputMonitor.java | 6 ++---- .../com/android/server/wm/RecentsAnimationController.java | 2 +- .../core/java/com/android/server/wm/TaskPositioner.java | 4 ++-- .../java/com/android/server/wm/WindowManagerService.java | 3 +-- 8 files changed, 15 insertions(+), 29 deletions(-) diff --git a/core/java/android/view/InputWindowHandle.java b/core/java/android/view/InputWindowHandle.java index e341845277d4..1ef701f732ff 100644 --- a/core/java/android/view/InputWindowHandle.java +++ b/core/java/android/view/InputWindowHandle.java @@ -70,11 +70,8 @@ public final class InputWindowHandle { // Window is visible. public boolean visible; - // Window can receive keys. - public boolean canReceiveKeys; - - // Window has focus. - public boolean hasFocus; + // Window can be focused. + public boolean focusable; // Window has wallpaper. (window is the current wallpaper target) public boolean hasWallpaper; diff --git a/core/jni/android_hardware_input_InputWindowHandle.cpp b/core/jni/android_hardware_input_InputWindowHandle.cpp index ecdba3fcb023..a0638207a841 100644 --- a/core/jni/android_hardware_input_InputWindowHandle.cpp +++ b/core/jni/android_hardware_input_InputWindowHandle.cpp @@ -56,8 +56,7 @@ static struct { jfieldID scaleFactor; jfieldID touchableRegion; jfieldID visible; - jfieldID canReceiveKeys; - jfieldID hasFocus; + jfieldID focusable; jfieldID hasWallpaper; jfieldID paused; jfieldID trustedOverlay; @@ -145,10 +144,7 @@ bool NativeInputWindowHandle::updateInfo() { mInfo.visible = env->GetBooleanField(obj, gInputWindowHandleClassInfo.visible); - mInfo.canReceiveKeys = env->GetBooleanField(obj, - gInputWindowHandleClassInfo.canReceiveKeys); - mInfo.hasFocus = env->GetBooleanField(obj, - gInputWindowHandleClassInfo.hasFocus); + mInfo.focusable = env->GetBooleanField(obj, gInputWindowHandleClassInfo.focusable); mInfo.hasWallpaper = env->GetBooleanField(obj, gInputWindowHandleClassInfo.hasWallpaper); mInfo.paused = env->GetBooleanField(obj, @@ -320,11 +316,7 @@ int register_android_view_InputWindowHandle(JNIEnv* env) { GET_FIELD_ID(gInputWindowHandleClassInfo.visible, clazz, "visible", "Z"); - GET_FIELD_ID(gInputWindowHandleClassInfo.canReceiveKeys, clazz, - "canReceiveKeys", "Z"); - - GET_FIELD_ID(gInputWindowHandleClassInfo.hasFocus, clazz, - "hasFocus", "Z"); + GET_FIELD_ID(gInputWindowHandleClassInfo.focusable, clazz, "focusable", "Z"); GET_FIELD_ID(gInputWindowHandleClassInfo.hasWallpaper, clazz, "hasWallpaper", "Z"); diff --git a/services/core/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java index 133b11116460..c9f463b8fbeb 100644 --- a/services/core/java/com/android/server/wm/DragState.java +++ b/services/core/java/com/android/server/wm/DragState.java @@ -283,8 +283,9 @@ class DragState { mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG; mDragWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; mDragWindowHandle.visible = true; - mDragWindowHandle.canReceiveKeys = false; - mDragWindowHandle.hasFocus = true; + // Allows the system to consume keys when dragging is active. This can also be used to + // modify the drag state on key press. Example, cancel drag on escape key. + mDragWindowHandle.focusable = true; mDragWindowHandle.hasWallpaper = false; mDragWindowHandle.paused = false; mDragWindowHandle.ownerPid = Process.myPid(); diff --git a/services/core/java/com/android/server/wm/InputConsumerImpl.java b/services/core/java/com/android/server/wm/InputConsumerImpl.java index 3b24584b0357..a79d3bb00907 100644 --- a/services/core/java/com/android/server/wm/InputConsumerImpl.java +++ b/services/core/java/com/android/server/wm/InputConsumerImpl.java @@ -80,8 +80,7 @@ class InputConsumerImpl implements IBinder.DeathRecipient { mWindowHandle.layoutParamsFlags = 0; mWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; mWindowHandle.visible = true; - mWindowHandle.canReceiveKeys = false; - mWindowHandle.hasFocus = false; + mWindowHandle.focusable = false; mWindowHandle.hasWallpaper = false; mWindowHandle.paused = false; mWindowHandle.ownerPid = Process.myPid(); diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index 0fe9735c9e46..4ace4966c8f8 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -271,8 +271,7 @@ final class InputMonitor { inputWindowHandle.layoutParamsType = type; inputWindowHandle.dispatchingTimeoutMillis = child.getInputDispatchingTimeoutMillis(); inputWindowHandle.visible = isVisible; - inputWindowHandle.canReceiveKeys = child.canReceiveKeys(); - inputWindowHandle.hasFocus = hasFocus; + inputWindowHandle.focusable = hasFocus; inputWindowHandle.hasWallpaper = hasWallpaper; inputWindowHandle.paused = child.mActivityRecord != null ? child.mActivityRecord.paused : false; inputWindowHandle.ownerPid = child.mSession.mPid; @@ -572,8 +571,7 @@ final class InputMonitor { inputWindowHandle.layoutParamsType = type; inputWindowHandle.dispatchingTimeoutMillis = 0; // it should never receive input inputWindowHandle.visible = isVisible; - inputWindowHandle.canReceiveKeys = false; - inputWindowHandle.hasFocus = false; + inputWindowHandle.focusable = false; inputWindowHandle.inputFeatures = INPUT_FEATURE_NO_INPUT_CHANNEL; inputWindowHandle.scaleFactor = 1; inputWindowHandle.layoutParamsFlags = diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index 143fbb0fe48b..6882dc4ca151 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -821,7 +821,7 @@ public class RecentsAnimationController implements DeathRecipient { : null; if (targetAppMainWindow != null) { targetAppMainWindow.getBounds(mTmpRect); - inputWindowHandle.hasFocus = hasFocus; + inputWindowHandle.focusable = hasFocus; inputWindowHandle.touchableRegion.set(mTmpRect); return true; } diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java index a66cd846e8be..f32781a8fcb8 100644 --- a/services/core/java/com/android/server/wm/TaskPositioner.java +++ b/services/core/java/com/android/server/wm/TaskPositioner.java @@ -242,8 +242,8 @@ class TaskPositioner implements IBinder.DeathRecipient { mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG; mDragWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; mDragWindowHandle.visible = true; - mDragWindowHandle.canReceiveKeys = false; - mDragWindowHandle.hasFocus = true; + // When dragging the window around, we do not want to steal focus for the window. + mDragWindowHandle.focusable = false; mDragWindowHandle.hasWallpaper = false; mDragWindowHandle.paused = false; mDragWindowHandle.ownerPid = Process.myPid(); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index cd222a97f4d9..e1ed5e96a602 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8065,8 +8065,7 @@ public class WindowManagerService extends IWindowManager.Stub h.layoutParamsFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | sanitizedFlags; h.layoutParamsType = type; h.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; - h.canReceiveKeys = false; - h.hasFocus = false; + h.focusable = false; h.hasWallpaper = false; h.paused = false; -- cgit v1.2.3-59-g8ed1b