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
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user