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

Commit b5a49f51 authored by Hongyu Long's avatar Hongyu Long
Browse files

a11y: Update getMagnificationModeLocked in userState

Before this change, for a specific display, if there is no cached mode
on the display, this function will return full screen mode.

After this change, if there is no cached mode on the display, and the
default display has a cached mode, then it will return the cached mode
on the default display.

Bug: b/442821756
Flag: EXEMPT update existing method
Test: atest AccessibilityUserStateTest
Change-Id: I2b842d7e9934941c993ccb0a506b026949df06e7
parent b504a04e
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static android.accessibilityservice.AccessibilityService.SHOW_MODE_IGNORE
import static android.accessibilityservice.AccessibilityService.SHOW_MODE_MASK;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.view.Display.DEFAULT_DISPLAY;

import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
@@ -746,7 +747,12 @@ public class AccessibilityUserState {
    public int getMagnificationModeLocked(int displayId) {
        int mode = mMagnificationModes.get(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
        if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_NONE) {
            mode = ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
            // If displayId doesn't have a mode, then get mode for DEFAULT_DISPLAY, OR if
            // DEFAULT_DISPLAY also has no mode, fall back directly to
            // ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN.
            mode =
                    mMagnificationModes.get(
                            DEFAULT_DISPLAY, ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
            setMagnificationModeLocked(displayId, mode);
        }
        return mode;
+22 −1
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ public class AccessibilityUserStateTest {

    private static final int USER_ID = 42;

    private static final int TEST_DISPLAY = Display.DEFAULT_DISPLAY;
    private static final int TEST_DISPLAY = Display.DEFAULT_DISPLAY + 1;

    // Mock package-private class AccessibilityServiceConnection
    @Rule public final DexmakerShareClassLoaderRule mDexmakerShareClassLoaderRule =
@@ -421,6 +421,27 @@ public class AccessibilityUserStateTest {
                mUserState.getMagnificationModeLocked(TEST_DISPLAY));
    }

    @Test
    public void getMagnificationModeLocked_setOnDefaultDisplay_returnExpectedMagnificationMode() {
        mUserState.setMagnificationModeLocked(
                Display.DEFAULT_DISPLAY, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);

        // If there is no cached magnification mode on TEST_DISPLAY, then it will retrieve the
        // cached mode on default display.
        assertEquals(
                ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
                mUserState.getMagnificationModeLocked(TEST_DISPLAY));
    }

    @Test
    public void getMagnificationModeLocked_returnFullScreenMagnificationModeByDefault() {
        // If there is no cached magnification mode on TEST_DISPLAY and on default display, then it
        // will return full screen mode.
        assertEquals(
                ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
                mUserState.getMagnificationModeLocked(TEST_DISPLAY));
    }

    @Test
    public void setCursorFollowingMode_returnExpectedCursorFollowingMode() {
        assertEquals(ACCESSIBILITY_MAGNIFICATION_CURSOR_FOLLOWING_MODE_CONTINUOUS,