Loading core/java/com/android/internal/accessibility/util/AccessibilityUtils.java +12 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.text.TextUtils; import android.util.ArraySet; import android.view.accessibility.AccessibilityManager; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import libcore.util.EmptyArray; Loading Loading @@ -372,4 +373,15 @@ public final class AccessibilityUtils { } return null; } /** * Returns the default value for * {@link android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME}. * * @return The {@link State} whether the default value is on or off. */ public static int getMagnificationMagnifyKeyboardDefaultValue(Context context) { return context.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default) ? State.ON : State.OFF; } } core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4163,6 +4163,9 @@ <!-- Whether to keep fullscreen magnification zoom level when context changes. --> <bool name="config_magnification_keep_zoom_level_when_context_changed">false</bool> <!-- The default value whether to magnify IME and keyboard with fullscreen magnification . --> <bool name="config_magnification_magnify_keyboard_default">false</bool> <!-- If true, the display will be shifted around in ambient mode. --> <bool name="config_enableBurnInProtection">false</bool> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4960,6 +4960,7 @@ <java-symbol type="bool" name="config_magnification_area" /> <java-symbol type="bool" name="config_magnification_always_on_enabled" /> <java-symbol type="bool" name="config_magnification_keep_zoom_level_when_context_changed" /> <java-symbol type="bool" name="config_magnification_magnify_keyboard_default" /> <java-symbol type="bool" name="config_trackerAppNeedsPermissions"/> <!-- FullScreenMagnification thumbnail --> Loading services/core/java/com/android/server/wm/WindowManagerService.java +5 −3 Original line number Diff line number Diff line Loading @@ -326,6 +326,7 @@ import android.window.WindowContainerToken; import android.window.WindowContextInfo; import com.android.internal.R; import com.android.internal.accessibility.util.AccessibilityUtils; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; Loading Loading @@ -1050,7 +1051,8 @@ public class WindowManagerService extends IWindowManager.Stub boolean enabledMagnifyNavAndIme = Settings.Secure.getIntForUser( mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME, 0, mCurrentUserId) == 1; AccessibilityUtils.getMagnificationMagnifyKeyboardDefaultValue(mContext), mCurrentUserId) == 1; if (mMagnifyNavAndIme == enabledMagnifyNavAndIme) { return; } Loading services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +55 −2 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY; Loading Loading @@ -120,6 +120,7 @@ import android.window.TaskFragmentOrganizer; import androidx.test.filters.SmallTest; import com.android.internal.R; import com.android.server.inputmethod.InputMethodManagerInternal; import com.android.server.testutils.StubTransaction; import com.android.server.wm.SensitiveContentPackages.PackageInfo; Loading Loading @@ -374,6 +375,58 @@ public class WindowStateTests extends WindowTestsBase { assertTrue(navWindow.shouldMagnify()); } @Test @EnableFlags(com.android.server.accessibility .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME) public void testMagnifyNavAndIme_flagOnAndDefaultEnable_typeIsIme_shouldMagnify() { useFakeSettingsProvider(); // This resets the Settings.Secure value. spyOn(mContext.getResources()); when(mContext.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default)).thenReturn(true); 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(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() { useFakeSettingsProvider(); // This resets the Settings.Secure value. spyOn(mContext.getResources()); when(mContext.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default)).thenReturn(false); 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(); assertFalse(mWm.isMagnifyNavAndImeEnabled()); assertFalse(imeWindow.shouldMagnify()); assertFalse(imeDialogWindow.shouldMagnify()); assertFalse(navWindow.shouldMagnify()); } @Test public void testCanBeImeLayeringTarget() { final WindowState appWindow = newWindowBuilder("appWindow", TYPE_APPLICATION).build(); Loading Loading
core/java/com/android/internal/accessibility/util/AccessibilityUtils.java +12 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.text.TextUtils; import android.util.ArraySet; import android.view.accessibility.AccessibilityManager; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import libcore.util.EmptyArray; Loading Loading @@ -372,4 +373,15 @@ public final class AccessibilityUtils { } return null; } /** * Returns the default value for * {@link android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME}. * * @return The {@link State} whether the default value is on or off. */ public static int getMagnificationMagnifyKeyboardDefaultValue(Context context) { return context.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default) ? State.ON : State.OFF; } }
core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4163,6 +4163,9 @@ <!-- Whether to keep fullscreen magnification zoom level when context changes. --> <bool name="config_magnification_keep_zoom_level_when_context_changed">false</bool> <!-- The default value whether to magnify IME and keyboard with fullscreen magnification . --> <bool name="config_magnification_magnify_keyboard_default">false</bool> <!-- If true, the display will be shifted around in ambient mode. --> <bool name="config_enableBurnInProtection">false</bool> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4960,6 +4960,7 @@ <java-symbol type="bool" name="config_magnification_area" /> <java-symbol type="bool" name="config_magnification_always_on_enabled" /> <java-symbol type="bool" name="config_magnification_keep_zoom_level_when_context_changed" /> <java-symbol type="bool" name="config_magnification_magnify_keyboard_default" /> <java-symbol type="bool" name="config_trackerAppNeedsPermissions"/> <!-- FullScreenMagnification thumbnail --> Loading
services/core/java/com/android/server/wm/WindowManagerService.java +5 −3 Original line number Diff line number Diff line Loading @@ -326,6 +326,7 @@ import android.window.WindowContainerToken; import android.window.WindowContextInfo; import com.android.internal.R; import com.android.internal.accessibility.util.AccessibilityUtils; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; Loading Loading @@ -1050,7 +1051,8 @@ public class WindowManagerService extends IWindowManager.Stub boolean enabledMagnifyNavAndIme = Settings.Secure.getIntForUser( mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MAGNIFY_NAV_AND_IME, 0, mCurrentUserId) == 1; AccessibilityUtils.getMagnificationMagnifyKeyboardDefaultValue(mContext), mCurrentUserId) == 1; if (mMagnifyNavAndIme == enabledMagnifyNavAndIme) { return; } Loading
services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +55 −2 Original line number Diff line number Diff line Loading @@ -42,10 +42,10 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_SECURE_SYSTEM_OVERLAY; Loading Loading @@ -120,6 +120,7 @@ import android.window.TaskFragmentOrganizer; import androidx.test.filters.SmallTest; import com.android.internal.R; import com.android.server.inputmethod.InputMethodManagerInternal; import com.android.server.testutils.StubTransaction; import com.android.server.wm.SensitiveContentPackages.PackageInfo; Loading Loading @@ -374,6 +375,58 @@ public class WindowStateTests extends WindowTestsBase { assertTrue(navWindow.shouldMagnify()); } @Test @EnableFlags(com.android.server.accessibility .Flags.FLAG_ENABLE_MAGNIFICATION_MAGNIFY_NAV_BAR_AND_IME) public void testMagnifyNavAndIme_flagOnAndDefaultEnable_typeIsIme_shouldMagnify() { useFakeSettingsProvider(); // This resets the Settings.Secure value. spyOn(mContext.getResources()); when(mContext.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default)).thenReturn(true); 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(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() { useFakeSettingsProvider(); // This resets the Settings.Secure value. spyOn(mContext.getResources()); when(mContext.getResources().getBoolean( R.bool.config_magnification_magnify_keyboard_default)).thenReturn(false); 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(); assertFalse(mWm.isMagnifyNavAndImeEnabled()); assertFalse(imeWindow.shouldMagnify()); assertFalse(imeDialogWindow.shouldMagnify()); assertFalse(navWindow.shouldMagnify()); } @Test public void testCanBeImeLayeringTarget() { final WindowState appWindow = newWindowBuilder("appWindow", TYPE_APPLICATION).build(); Loading