Merge "Correct magnification switch button position after screen size is changed" into sc-v2-dev

This commit is contained in:
Minche Li
2021-07-13 01:42:34 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 1 deletions

View File

@@ -310,7 +310,8 @@ class MagnificationModeSwitch implements MagnificationGestureDetector.OnGestureL
}
void onConfigurationChanged(int configDiff) {
if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
if ((configDiff & (ActivityInfo.CONFIG_ORIENTATION | ActivityInfo.CONFIG_SCREEN_SIZE))
!= 0) {
final Rect previousDraggableBounds = new Rect(mDraggableWindowBounds);
mDraggableWindowBounds.set(getDraggableWindowBounds());
// Keep the Y position with the same height ratio before the window bounds and

View File

@@ -507,6 +507,30 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
expectedY, mWindowManager.getLayoutParamsFromAttachedView().y);
}
@Test
public void onScreenSizeChanged_buttonIsShowingOnTheRightSide_expectedPosition() {
final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
final Rect oldDraggableBounds = new Rect(mMagnificationModeSwitch.mDraggableWindowBounds);
final float windowHeightFraction =
(float) (mWindowManager.getLayoutParamsFromAttachedView().y
- oldDraggableBounds.top) / oldDraggableBounds.height();
// The window bounds and the draggable bounds are changed due to the screen size change.
final Rect tmpRect = new Rect(windowBounds);
tmpRect.scale(2);
final Rect newWindowBounds = new Rect(tmpRect);
mWindowManager.setWindowBounds(newWindowBounds);
mMagnificationModeSwitch.onConfigurationChanged(ActivityInfo.CONFIG_SCREEN_SIZE);
final int expectedX = mMagnificationModeSwitch.mDraggableWindowBounds.right;
final int expectedY = (int) (windowHeightFraction
* mMagnificationModeSwitch.mDraggableWindowBounds.height())
+ mMagnificationModeSwitch.mDraggableWindowBounds.top;
assertEquals(expectedX, mWindowManager.getLayoutParamsFromAttachedView().x);
assertEquals(expectedY, mWindowManager.getLayoutParamsFromAttachedView().y);
}
private void assertModeUnchanged(int expectedMode) {
final int actualMode = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE, 0);