From d1567bf7c382b2164df3af564f8fd60d7346a78e Mon Sep 17 00:00:00 2001 From: ryanlwlin Date: Wed, 17 Mar 2021 13:44:39 +0800 Subject: [PATCH] Change context to WindowContext for non-activity window Currently the window bounds of an non-acitivty window depends on the display area bounds. We need to change to this windowContext to get the correct windowmetrics for the further display area feature support. Bug: 180054792 Test: atest com.android.systemui.accessibility Change-Id: I0f995f745e7f6cb4ac3616d04c1a65e2e69b8043 --- .../systemui/accessibility/MagnificationModeSwitch.java | 3 ++- .../systemui/accessibility/ModeSwitchesController.java | 9 +++++---- .../systemui/accessibility/WindowMagnification.java | 9 +++++---- .../WindowMagnificationAnimationController.java | 5 +++-- .../accessibility/WindowMagnificationController.java | 5 +++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java index c1cf8d31bd67b..9f77b7d26c96c 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java @@ -19,6 +19,7 @@ package com.android.systemui.accessibility; import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW; import android.annotation.NonNull; +import android.annotation.UiContext; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.PixelFormat; @@ -69,7 +70,7 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL private final MagnificationGestureDetector mGestureDetector; private boolean mSingleTapDetected = false; - MagnificationModeSwitch(Context context) { + MagnificationModeSwitch(@UiContext Context context) { this(context, createView(context)); } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java b/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java index 50f6e9f6af440..1a01ad85fccc2 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java @@ -16,6 +16,8 @@ package com.android.systemui.accessibility; +import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY; + import android.annotation.MainThread; import android.content.Context; import android.hardware.display.DisplayManager; @@ -106,10 +108,9 @@ public class ModeSwitchesController { @Override protected MagnificationModeSwitch createInstance(Display display) { - final Context context = (display.getDisplayId() == Display.DEFAULT_DISPLAY) - ? mContext - : mContext.createDisplayContext(display); - return new MagnificationModeSwitch(context); + final Context uiContext = mContext.createWindowContext(display, + TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, /* options */ null); + return new MagnificationModeSwitch(uiContext); } } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java index f52dcd596a557..cdd69429132ac 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java @@ -16,6 +16,8 @@ package com.android.systemui.accessibility; +import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY; + import android.annotation.MainThread; import android.annotation.Nullable; import android.content.Context; @@ -82,9 +84,8 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall @Override protected WindowMagnificationAnimationController createInstance(Display display) { - final Context context = (display.getDisplayId() == Display.DEFAULT_DISPLAY) - ? mContext - : mContext.createDisplayContext(display); + final Context windowContext = mContext.createWindowContext(display, + TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, /* options */ null); final WindowMagnificationController controller = new WindowMagnificationController( mContext, mHandler, new SfVsyncFrameCallbackProvider(), null, @@ -92,7 +93,7 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall final int navBarMode = mNavigationModeController.addListener( controller::onNavigationModeChanged); controller.onNavigationModeChanged(navBarMode); - return new WindowMagnificationAnimationController(context, controller); + return new WindowMagnificationAnimationController(windowContext, controller); } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java index 24d83884f0932..5758b1575f5ac 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationAnimationController.java @@ -20,6 +20,7 @@ import android.animation.Animator; import android.animation.ValueAnimator; import android.annotation.IntDef; import android.annotation.Nullable; +import android.annotation.UiContext; import android.content.Context; import android.content.res.Resources; import android.os.RemoteException; @@ -69,8 +70,8 @@ class WindowMagnificationAnimationController implements ValueAnimator.AnimatorUp @MagnificationState private int mState = STATE_DISABLED; - WindowMagnificationAnimationController( - Context context, WindowMagnificationController controller) { + WindowMagnificationAnimationController(@UiContext Context context, + WindowMagnificationController controller) { this(context, controller, newValueAnimator(context.getResources())); } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index 3f7d2d837e2d6..2b666f13efcca 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -24,6 +24,7 @@ import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UiContext; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Resources; @@ -134,7 +135,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold @Nullable private MirrorWindowControl mMirrorWindowControl; - WindowMagnificationController(Context context, @NonNull Handler handler, + WindowMagnificationController(@UiContext Context context, @NonNull Handler handler, SfVsyncFrameCallbackProvider sfVsyncFrameProvider, MirrorWindowControl mirrorWindowControl, SurfaceControl.Transaction transaction, @NonNull WindowMagnifierCallback callback) { @@ -147,7 +148,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold mDisplayId = mContext.getDisplayId(); mRotation = display.getRotation(); - mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + mWm = context.getSystemService(WindowManager.class); mResources = mContext.getResources(); mScale = mResources.getInteger(R.integer.magnification_default_scale);