From 53844535aaa1ff2e256a593dbfb538b1d786740d Mon Sep 17 00:00:00 2001 From: ryanlwlin Date: Fri, 3 Dec 2021 18:23:09 +0800 Subject: [PATCH] Expose window type MAGNIFCATION_OVERLAY to AccessibilityService This window type is for distinguishing the windows used for magnification. Accessibility apps could move the window magnifier to follow accessibility focus, but they need to exclude the case that the focus is on the window magnfier with this information Bug: 188136191 Test: manual test , will add cts when the public api is ready Change-Id: Ic2598d25ead5b1d74ebb2c0ea181bfe139675750 --- core/api/current.txt | 1 + .../view/accessibility/AccessibilityWindowInfo.java | 9 +++++++++ .../server/accessibility/AccessibilityWindowManager.java | 7 +++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index a8a252e68303d..da096242ce8be 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -51779,6 +51779,7 @@ package android.view.accessibility { field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4 field public static final int TYPE_APPLICATION = 1; // 0x1 field public static final int TYPE_INPUT_METHOD = 2; // 0x2 + field public static final int TYPE_MAGNIFICATION_OVERLAY = 6; // 0x6 field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5 field public static final int TYPE_SYSTEM = 3; // 0x3 } diff --git a/core/java/android/view/accessibility/AccessibilityWindowInfo.java b/core/java/android/view/accessibility/AccessibilityWindowInfo.java index 76e226163ca1c..67e6d3f2aec36 100644 --- a/core/java/android/view/accessibility/AccessibilityWindowInfo.java +++ b/core/java/android/view/accessibility/AccessibilityWindowInfo.java @@ -84,6 +84,12 @@ public final class AccessibilityWindowInfo implements Parcelable { */ public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; + /** + * Window type: A system window used to show the UI for the interaction with + * window-based magnification, which includes the magnified content and the option menu. + */ + public static final int TYPE_MAGNIFICATION_OVERLAY = 6; + /* Special values for window IDs */ /** @hide */ public static final int ACTIVE_WINDOW_ID = Integer.MAX_VALUE; @@ -801,6 +807,9 @@ public final class AccessibilityWindowInfo implements Parcelable { case TYPE_SPLIT_SCREEN_DIVIDER: { return "TYPE_SPLIT_SCREEN_DIVIDER"; } + case TYPE_MAGNIFICATION_OVERLAY: { + return "TYPE_MAGNIFICATION_OVERLAY"; + } default: return ""; } diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java index 09485d179e602..59c1461e4abca 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java @@ -735,8 +735,7 @@ public class AccessibilityWindowManager { case WindowManager.LayoutParams.TYPE_SYSTEM_ERROR: case WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY: case WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY: - case WindowManager.LayoutParams.TYPE_SCREENSHOT: - case WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY: { + case WindowManager.LayoutParams.TYPE_SCREENSHOT: { return AccessibilityWindowInfo.TYPE_SYSTEM; } @@ -748,6 +747,10 @@ public class AccessibilityWindowManager { return AccessibilityWindowInfo.TYPE_ACCESSIBILITY_OVERLAY; } + case WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY: { + return AccessibilityWindowInfo.TYPE_MAGNIFICATION_OVERLAY; + } + default: { return -1; }