From 0a496a2aa045016d80a4b968359b0d1e266a84f4 Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Wed, 12 May 2021 14:46:39 +0800 Subject: [PATCH] Make inline suggestions tooltip is not magnified Because the tooltip is part of suggestions on keyboard, it should be the same as keyboard that is not magnified by the accessibility magnifier when the magnifier is full screen mode. Bug: 183462449 Test: Manual Test: atest CtsAutoFillServiceTestCases Change-Id: I3cfd84357b556a85c2788776d3966cf94d4a981d --- core/java/android/view/WindowManager.java | 13 +++++++++++++ .../internal/view/inline/InlineTooltipUi.java | 2 ++ .../java/com/android/server/wm/WindowState.java | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index c1e394d7456a2..5964f632da1a1 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -2370,6 +2370,14 @@ public interface WindowManager extends ViewManager { */ public static final int PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY = 0x00100000; + /** + * Flag to prevent the window from being magnified by the accessibility magnifier. + * + * TODO(b/190623172): This is a temporary solution and need to find out another way instead. + * @hide + */ + public static final int PRIVATE_FLAG_NOT_MAGNIFIABLE = 0x00400000; + /** * Flag to indicate that the status bar window is in a state such that it forces showing * the navigation bar unless the navigation bar window is explicitly set to @@ -2473,6 +2481,7 @@ public interface WindowManager extends ViewManager { PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE, SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY, + PRIVATE_FLAG_NOT_MAGNIFIABLE, PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC, PRIVATE_FLAG_USE_BLAST, @@ -2552,6 +2561,10 @@ public interface WindowManager extends ViewManager { mask = PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY, equals = PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY, name = "IS_ROUNDED_CORNERS_OVERLAY"), + @ViewDebug.FlagToString( + mask = PRIVATE_FLAG_NOT_MAGNIFIABLE, + equals = PRIVATE_FLAG_NOT_MAGNIFIABLE, + name = "NOT_MAGNIFIABLE"), @ViewDebug.FlagToString( mask = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, equals = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, diff --git a/core/java/com/android/internal/view/inline/InlineTooltipUi.java b/core/java/com/android/internal/view/inline/InlineTooltipUi.java index 5ec8b30d6a7bf..25fa678d0507e 100644 --- a/core/java/com/android/internal/view/inline/InlineTooltipUi.java +++ b/core/java/com/android/internal/view/inline/InlineTooltipUi.java @@ -213,6 +213,8 @@ public final class InlineTooltipUi extends PopupWindow implements AutoCloseable if (!mShowing) { params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; + params.privateFlags |= + WindowManager.LayoutParams.PRIVATE_FLAG_NOT_MAGNIFIABLE; mContentContainer.addOnLayoutChangeListener(mAnchoredOnLayoutChangeListener); mWm.addView(mContentContainer, params); mShowing = true; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 642ce1b34769b..81c119b1826f9 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -60,6 +60,7 @@ import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_M import static android.view.WindowManager.LayoutParams.MATCH_PARENT; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NOT_MAGNIFIABLE; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH; @@ -5380,6 +5381,9 @@ class WindowState extends WindowContainer implements WindowManagerP || mAttrs.type == TYPE_NAVIGATION_BAR_PANEL) { return false; } + if ((mAttrs.privateFlags & PRIVATE_FLAG_NOT_MAGNIFIABLE) != 0) { + return false; + } return true; }