summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Minche Li <mincheli@google.com> 2021-06-02 02:53:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-06-02 02:53:06 +0000
commit9cc5e58c985342c46a9d91e65ccb6490bcfa00c9 (patch)
tree0a10178f9ac894af5c57f8dda277d1702d271293
parent01a10d6a648b2c8e0eed7c905872d2426d5e9efa (diff)
parentb5aac103c82f6caa17aad2f8ca8627d599001719 (diff)
Merge "Adjusts the draggable bounds with the display cutcout" into sc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java20
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java16
2 files changed, 26 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
index 964b135d7b50..99cf095ef61d 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
@@ -18,6 +18,7 @@ package com.android.systemui.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
import android.annotation.NonNull;
import android.annotation.UiContext;
@@ -36,6 +37,7 @@ import android.view.View;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
+import android.view.WindowMetrics;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
@@ -362,21 +364,21 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL
PixelFormat.TRANSPARENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.accessibilityTitle = getAccessibilityWindowTitle(context);
+ params.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
return params;
}
private Rect getDraggableWindowBounds() {
final int layoutMargin = mContext.getResources().getDimensionPixelSize(
R.dimen.magnification_switch_button_margin);
- final Rect boundRect = new Rect(mWindowManager.getCurrentWindowMetrics().getBounds());
- final Insets systemBars =
- mWindowManager.getCurrentWindowMetrics().getWindowInsets()
- .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars());
- final Rect insets = new Rect(layoutMargin,
- systemBars.top + layoutMargin,
- mParams.width + layoutMargin,
- mParams.height + layoutMargin + systemBars.bottom);
- boundRect.inset(insets);
+ final WindowMetrics windowMetrics = mWindowManager.getCurrentWindowMetrics();
+ final Insets windowInsets = windowMetrics.getWindowInsets().getInsetsIgnoringVisibility(
+ WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout());
+ final Rect boundRect = new Rect(windowMetrics.getBounds());
+ boundRect.offsetTo(0, 0);
+ boundRect.inset(0, 0, mParams.width, mParams.height);
+ boundRect.inset(windowInsets);
+ boundRect.inset(layoutMargin, layoutMargin);
return boundRect;
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
index d18997438d59..ab5bdf4835da 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
@@ -22,6 +22,7 @@ import static android.view.MotionEvent.ACTION_CANCEL;
import static android.view.MotionEvent.ACTION_DOWN;
import static android.view.MotionEvent.ACTION_MOVE;
import static android.view.MotionEvent.ACTION_UP;
+import static android.view.WindowInsets.Type.displayCutout;
import static android.view.WindowInsets.Type.systemBars;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK;
@@ -225,7 +226,7 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
}
@Test
- public void onApplyWindowInsetsWithWindowInsetsChange_buttonIsShowing_draggableBoundsChanged() {
+ public void onSystemBarsInsetsChanged_buttonIsShowing_draggableBoundsChanged() {
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
final Rect oldDraggableBounds = new Rect(mMagnificationModeSwitch.mDraggableWindowBounds);
@@ -238,6 +239,19 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
}
@Test
+ public void onDisplayCutoutInsetsChanged_buttonIsShowing_draggableBoundsChanged() {
+ mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
+ final Rect oldDraggableBounds = new Rect(mMagnificationModeSwitch.mDraggableWindowBounds);
+
+ mWindowManager.setWindowInsets(new WindowInsets.Builder()
+ .setInsetsIgnoringVisibility(displayCutout(), Insets.of(20, 30, 20, 30))
+ .build());
+ mSpyImageView.onApplyWindowInsets(WindowInsets.CONSUMED);
+
+ assertNotEquals(oldDraggableBounds, mMagnificationModeSwitch.mDraggableWindowBounds);
+ }
+
+ @Test
public void onDraggingGestureFinish_buttonIsShowing_stickToRightEdge() {
final int windowHalfWidth =
mWindowManager.getCurrentWindowMetrics().getBounds().width() / 2;