Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b277756c authored by Ryan Lin's avatar Ryan Lin Committed by Automerger Merge Worker
Browse files

Merge "Constranit the magnification window size for large screen devices" into...

Merge "Constranit the magnification window size for large screen devices" into sc-v2-dev am: 85e113d3 am: c969964d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15659014

Change-Id: I98e36e9d3b4972ff41e2ae1213170d90f07fc157
parents ee1244f8 c969964d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1338,6 +1338,7 @@
    <dimen name="magnifier_up_down_controls_height">40dp</dimen>
    <!-- The extra padding to show the whole outer border -->
    <dimen name="magnifier_drag_handle_padding">3dp</dimen>
    <dimen name="magnification_max_frame_size">300dp</dimen>

    <!-- Home Controls -->
    <dimen name="controls_header_side_margin">4dp</dimen>
+6 −3
Original line number Diff line number Diff line
@@ -499,9 +499,12 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
    }

    private void setMagnificationFrameWith(Rect windowBounds, int centerX, int centerY) {
        // Sets the initial frame area for the mirror and places it in the center of the display.
        final int initSize = Math.min(windowBounds.width(), windowBounds.height()) / 2
                + 2 * mMirrorSurfaceMargin;
        // Sets the initial frame area for the mirror and place it to the given center on the
        // display.
        int initSize = Math.min(windowBounds.width(), windowBounds.height()) / 2;
        initSize = Math.min(mResources.getDimensionPixelSize(R.dimen.magnification_max_frame_size),
                initSize);
        initSize += 2 * mMirrorSurfaceMargin;
        final int initX = centerX - initSize / 2;
        final int initY = centerY - initSize / 2;
        mMagnificationFrame.set(initX, initY, initX + initSize, initY + initSize);
+44 −0
Original line number Diff line number Diff line
@@ -168,6 +168,29 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
        assertFalse(rects.isEmpty());
    }

    @Test
    public void enableWindowMagnification_LargeScreen_windowSizeIsConstrained() {
        final int screenSize = mContext.getResources().getDimensionPixelSize(
                R.dimen.magnification_max_frame_size) * 10;
        mWindowManager.setWindowBounds(new Rect(0, 0, screenSize, screenSize));
        //We need to initialize new one because the window size is determined when initialization.
        final WindowMagnificationController controller = new WindowMagnificationController(mContext,
                mHandler, mSfVsyncFrameProvider,
                mMirrorWindowControl, mTransaction, mWindowMagnifierCallback, mSysUiState);

        mInstrumentation.runOnMainSync(() -> {
            controller.enableWindowMagnification(Float.NaN, Float.NaN,
                    Float.NaN);
        });

        final int halfScreenSize = screenSize / 2;
        WindowManager.LayoutParams params = mWindowManager.getLayoutParamsFromAttachedView();
        // The frame size should be the half of smaller value of window height/width unless it
        //exceed the max frame size.
        assertTrue(params.width < halfScreenSize);
        assertTrue(params.height < halfScreenSize);
    }

    @Test
    public void deleteWindowMagnification_destroyControl() {
        mInstrumentation.runOnMainSync(() -> {
@@ -316,6 +339,27 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
                mWindowMagnificationController.getCenterY() / testWindowBounds.height(),
                0);
    }
    @Test
    public void screenSizeIsChangedToLarge_enabled_windowSizeIsConstrained() {
        mInstrumentation.runOnMainSync(() -> {
            mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
                    Float.NaN);
        });
        final int screenSize = mContext.getResources().getDimensionPixelSize(
                R.dimen.magnification_max_frame_size) * 10;
        mWindowManager.setWindowBounds(new Rect(0, 0, screenSize, screenSize));

        mInstrumentation.runOnMainSync(() -> {
            mWindowMagnificationController.onConfigurationChanged(ActivityInfo.CONFIG_SCREEN_SIZE);
        });

        final int halfScreenSize = screenSize / 2;
        WindowManager.LayoutParams params = mWindowManager.getLayoutParamsFromAttachedView();
        // The frame size should be the half of smaller value of window height/width unless it
        //exceed the max frame size.
        assertTrue(params.width < halfScreenSize);
        assertTrue(params.height < halfScreenSize);
    }

    @Test
    public void onDensityChanged_enabled_updateDimensionsAndResetWindowMagnification() {