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

Commit d6164f72 authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "fix(magnify_ime): Stop magnifying the nav bar with this setting." into main

parents 23952cf7 f6880a49
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -699,8 +699,8 @@ public class WindowManagerService extends IWindowManager.Stub
    boolean mBootAnimationStopped = false;
    long mBootWaitForWindowsStartTime = -1;

    // Cache whether to Magnify the Navigation Bar and IME.
    private boolean mMagnifyNavAndIme = false;
    // Cache whether to Magnify the IME.
    private boolean mMagnifyIme = false;

    /** Dump of the windows and app tokens at the time of the last ANR. Cleared after
     * LAST_ANR_LIFETIME_DURATION_MSECS */
@@ -819,7 +819,7 @@ public class WindowManagerService extends IWindowManager.Stub
                Settings.Secure.getUriFor(Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS);
        private final Uri mDisableSecureWindowsUri =
                Settings.Secure.getUriFor(Settings.Secure.DISABLE_SECURE_WINDOWS);
        private final Uri mMagnifyNavAndImeEnabledUri = Settings.Secure.getUriFor(
        private final Uri mMagnifyImeEnabledUri = Settings.Secure.getUriFor(
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME);
        private final Uri mPolicyControlUri =
                Settings.Global.getUriFor(Settings.Global.POLICY_CONTROL);
@@ -854,7 +854,7 @@ public class WindowManagerService extends IWindowManager.Stub
            resolver.registerContentObserver(mDisableSecureWindowsUri, false, this,
                    UserHandle.USER_ALL);
            if (com.android.server.accessibility.Flags.enableMagnificationMagnifyNavBarAndIme()) {
                resolver.registerContentObserver(mMagnifyNavAndImeEnabledUri, false, this,
                resolver.registerContentObserver(mMagnifyImeEnabledUri, false, this,
                        UserHandle.USER_ALL);
            }
            resolver.registerContentObserver(mPolicyControlUri, false, this, UserHandle.USER_ALL);
@@ -918,8 +918,8 @@ public class WindowManagerService extends IWindowManager.Stub
                return;
            }

            if (mMagnifyNavAndImeEnabledUri.equals(uri)) {
                updateMagnifyNavAndIme();
            if (mMagnifyImeEnabledUri.equals(uri)) {
                updateMagnifyIme();
            }

            if (mDevelopmentOverrideDesktopExperienceUri.equals(uri)) {
@@ -946,7 +946,7 @@ public class WindowManagerService extends IWindowManager.Stub
        void loadSettings() {
            updateMaximumObscuringOpacityForTouch();
            updateDisableSecureWindows();
            updateMagnifyNavAndIme();
            updateMagnifyIme();
        }

        void updateMaximumObscuringOpacityForTouch() {
@@ -1056,23 +1056,23 @@ public class WindowManagerService extends IWindowManager.Stub
            }
        }

        void updateMagnifyNavAndIme() {
        void updateMagnifyIme() {
            if (!com.android.server.accessibility.Flags.enableMagnificationMagnifyNavBarAndIme()) {
                mMagnifyNavAndIme = false;
                mMagnifyIme = false;
                return;
            }

            boolean enabledMagnifyNavAndIme = Settings.Secure.getIntForUser(
            boolean enabledMagnifyIme = Settings.Secure.getIntForUser(
                    mContext.getContentResolver(),
                    Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME,
                    AccessibilityUtils.getMagnificationMagnifyKeyboardDefaultValue(mContext),
                    mCurrentUserId) == 1;
            if (mMagnifyNavAndIme == enabledMagnifyNavAndIme) {
            if (mMagnifyIme == enabledMagnifyIme) {
                return;
            }

            synchronized (mGlobalLock) {
                mMagnifyNavAndIme = enabledMagnifyNavAndIme;
                mMagnifyIme = enabledMagnifyIme;
            }
        }
    }
@@ -1514,8 +1514,8 @@ public class WindowManagerService extends IWindowManager.Stub
    }

    @VisibleForTesting
    boolean isMagnifyNavAndImeEnabled() {
        return mMagnifyNavAndIme;
    boolean isMagnifyImeEnabled() {
        return mMagnifyIme;
    }

    DisplayAreaPolicy.Provider getDisplayAreaPolicyProvider() {
+3 −3
Original line number Diff line number Diff line
@@ -4907,15 +4907,15 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    boolean shouldMagnify() {
        if (mAttrs.type == TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY
                || mAttrs.type == TYPE_MAGNIFICATION_OVERLAY
                || mAttrs.type == TYPE_NAVIGATION_BAR
                // It's tempting to wonder: Have we forgotten the rounded corners overlay?
                // worry not: it's a fake TYPE_NAVIGATION_BAR_PANEL
                || mAttrs.type == TYPE_NAVIGATION_BAR_PANEL) {
            return false;
        }
        if (mAttrs.type == TYPE_INPUT_METHOD
                || mAttrs.type == TYPE_INPUT_METHOD_DIALOG
                || mAttrs.type == TYPE_NAVIGATION_BAR) {
            return mWmService.isMagnifyNavAndImeEnabled();
                || mAttrs.type == TYPE_INPUT_METHOD_DIALOG) {
            return mWmService.isMagnifyImeEnabled();
        }
        if ((mAttrs.privateFlags & PRIVATE_FLAG_NOT_MAGNIFIABLE) != 0) {
            return false;
+11 −17
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ public class WindowStateTests extends WindowTestsBase {
    @Test
    @DisableFlags(com.android.server.accessibility
            .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME)
    public void testMagnifyNavAndIme_flagOffAndSettingsEnabled_typeIsIme_shouldNotMagnify() {
    public void testMagnifyIme_flagOffAndSettingsEnabled_typeIsIme_shouldNotMagnify() {
        final ContentResolver cr = useFakeSettingsProvider();
        Settings.Secure.putInt(cr,
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME, 1);
@@ -300,7 +300,7 @@ public class WindowStateTests extends WindowTestsBase {
        imeDialogWindow.setHasSurface(true);
        navWindow.setHasSurface(true);

        assertFalse(mWm.isMagnifyNavAndImeEnabled());
        assertFalse(mWm.isMagnifyImeEnabled());
        assertFalse(imeWindow.shouldMagnify());
        assertFalse(imeDialogWindow.shouldMagnify());
        assertFalse(navWindow.shouldMagnify());
@@ -309,7 +309,7 @@ public class WindowStateTests extends WindowTestsBase {
    @Test
    @EnableFlags(com.android.server.accessibility
            .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME)
    public void testMagnifyNavAndIme_flagOnAndSettingsDisabled_typeIsIme_shouldNotMagnify() {
    public void testMagnifyIme_flagOnAndSettingsDisabled_typeIsIme_shouldNotMagnify() {
        final ContentResolver cr = useFakeSettingsProvider();
        Settings.Secure.putInt(cr,
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME, 0);
@@ -325,14 +325,14 @@ public class WindowStateTests extends WindowTestsBase {
        imeDialogWindow.setHasSurface(true);
        navWindow.setHasSurface(true);

        assertFalse(mWm.isMagnifyNavAndImeEnabled());
        assertFalse(mWm.isMagnifyImeEnabled());
        assertFalse(imeWindow.shouldMagnify());
        assertFalse(imeDialogWindow.shouldMagnify());
        assertFalse(navWindow.shouldMagnify());
    }

    @Test
    public void testMagnifyNavAndIme_typeIsMagnification_shouldNotMagnify() {
    public void testMagnifyIme_typeIsMagnification_shouldNotMagnify() {
        final WindowState a11yMagWindow = newWindowBuilder("a11yMagWindow",
                TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY).build();
        final WindowState magWindow = newWindowBuilder("magWindow",
@@ -352,7 +352,7 @@ public class WindowStateTests extends WindowTestsBase {
    @Test
    @EnableFlags(com.android.server.accessibility
            .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME)
    public void testMagnifyNavAndIme_flagOnAndSettingsEnabled_typeIsIme_shouldMagnify() {
    public void testMagnifyIme_flagOnAndSettingsEnabled_typeIsIme_shouldMagnify() {
        final ContentResolver cr = useFakeSettingsProvider();
        Settings.Secure.putInt(cr,
                Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME, 1);
@@ -362,22 +362,19 @@ public class WindowStateTests extends WindowTestsBase {
        final WindowState imeWindow = newWindowBuilder("imeWindow", TYPE_INPUT_METHOD).build();
        final WindowState imeDialogWindow =
                newWindowBuilder("imeDialogWindow", TYPE_INPUT_METHOD_DIALOG).build();
        final WindowState navWindow = newWindowBuilder("navWindow", TYPE_NAVIGATION_BAR).build();

        imeWindow.setHasSurface(true);
        imeDialogWindow.setHasSurface(true);
        navWindow.setHasSurface(true);

        assertTrue(mWm.isMagnifyNavAndImeEnabled());
        assertTrue(mWm.isMagnifyImeEnabled());
        assertTrue(imeWindow.shouldMagnify());
        assertTrue(imeDialogWindow.shouldMagnify());
        assertTrue(navWindow.shouldMagnify());
    }

    @Test
    @EnableFlags(com.android.server.accessibility
            .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME)
    public void testMagnifyNavAndIme_flagOnAndDefaultEnable_typeIsIme_shouldMagnify() {
    public void testMagnifyIme_flagOnAndDefaultEnable_typeIsIme_shouldMagnify() {
        useFakeSettingsProvider();  // This resets the Settings.Secure value.
        spyOn(mContext.getResources());
        when(mContext.getResources().getBoolean(
@@ -386,24 +383,21 @@ public class WindowStateTests extends WindowTestsBase {
        final WindowState imeWindow = newWindowBuilder("imeWindow", TYPE_INPUT_METHOD).build();
        final WindowState imeDialogWindow =
                newWindowBuilder("imeDialogWindow", TYPE_INPUT_METHOD_DIALOG).build();
        final WindowState navWindow = newWindowBuilder("navWindow", TYPE_NAVIGATION_BAR).build();

        imeWindow.setHasSurface(true);
        imeDialogWindow.setHasSurface(true);
        navWindow.setHasSurface(true);

        mWm.mSettingsObserver.loadSettings();

        assertTrue(mWm.isMagnifyNavAndImeEnabled());
        assertTrue(mWm.isMagnifyImeEnabled());
        assertTrue(imeWindow.shouldMagnify());
        assertTrue(imeDialogWindow.shouldMagnify());
        assertTrue(navWindow.shouldMagnify());
    }

    @Test
    @EnableFlags(com.android.server.accessibility
            .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME)
    public void testMagnifyNavAndIme_flagOnAndDefaultDisable_typeIsIme_shouldNotMagnify() {
    public void testMagnifyIme_flagOnAndDefaultDisable_typeIsIme_shouldNotMagnify() {
        useFakeSettingsProvider();  // This resets the Settings.Secure value.
        spyOn(mContext.getResources());
        when(mContext.getResources().getBoolean(
@@ -420,7 +414,7 @@ public class WindowStateTests extends WindowTestsBase {

        mWm.mSettingsObserver.loadSettings();

        assertFalse(mWm.isMagnifyNavAndImeEnabled());
        assertFalse(mWm.isMagnifyImeEnabled());
        assertFalse(imeWindow.shouldMagnify());
        assertFalse(imeDialogWindow.shouldMagnify());
        assertFalse(navWindow.shouldMagnify());