From 137cc9af687addba3a5fbdb970f3d307d550bc8f Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 28 Jun 2023 05:58:01 +0000 Subject: [PATCH] Set the shortcut size to large when user enabled Magnification Set the settings shortcut size to large when the Magnification shortcut it enabled. Provide users with the large size as the default, which is easy to see. Bug: 283844702 Test: manually - attach videos in the bug Test: atest ToggleScreenMagnificationPreferenceFragmentTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=ToggleScreenMagnificationPreferenceFragmentTest Change-Id: I8fac5780b8388b1b4f124cffbdd305235f035e72 --- .../FloatingMenuSizePreferenceController.java | 5 +- ...ScreenMagnificationPreferenceFragment.java | 11 +++ ...enMagnificationPreferenceFragmentTest.java | 71 ++++++++++++++++++- 3 files changed, 84 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java b/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java index bd447be1d1d..7d4f495f5a8 100644 --- a/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java +++ b/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java @@ -52,11 +52,12 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll @Retention(RetentionPolicy.SOURCE) @IntDef({ + Size.UNKNOWN, Size.SMALL, Size.LARGE, }) - @VisibleForTesting - @interface Size { + public @interface Size { + int UNKNOWN = -1; int SMALL = 0; int LARGE = 1; } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index e05943c5bce..a485b494ddb 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -643,6 +643,17 @@ public class ToggleScreenMagnificationPreferenceFragment extends joiner.add(MAGNIFICATION_CONTROLLER_NAME); Settings.Secure.putString(context.getContentResolver(), targetKey, joiner.toString()); + // The size setting defaults to unknown. If the user has ever manually changed the size + // before, we do not automatically change it. + if (shortcutType == UserShortcutType.SOFTWARE + && Settings.Secure.getInt(context.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + FloatingMenuSizePreferenceController.Size.UNKNOWN) + == FloatingMenuSizePreferenceController.Size.UNKNOWN) { + Settings.Secure.putInt(context.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + FloatingMenuSizePreferenceController.Size.LARGE); + } } @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index a4033b1127b..2eac7851688 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -64,6 +64,7 @@ import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowPackageManager; +import org.robolectric.shadows.ShadowSettings; import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.util.ReflectionHelpers; @@ -71,7 +72,8 @@ import java.util.Collection; import java.util.List; /** Tests for {@link ToggleScreenMagnificationPreferenceFragment}. */ -@Config(shadows = {ShadowUserManager.class, ShadowStorageManager.class}) +@Config(shadows = {ShadowUserManager.class, ShadowStorageManager.class, + ShadowSettings.ShadowSecure.class}) @RunWith(RobolectricTestRunner.class) public class ToggleScreenMagnificationPreferenceFragmentTest { @@ -208,6 +210,73 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { PLACEHOLDER_COMPONENT_NAME.flattenToString() + ":" + MAGNIFICATION_CONTROLLER_NAME); } + @Test + public void optInAllValuesToSettings_software_sizeValueIsNull_putLargeSizeValue() { + ShadowSettings.ShadowSecure.reset(); + + ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings(mContext, + UserShortcutType.SOFTWARE); + + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + FloatingMenuSizePreferenceController.Size.UNKNOWN)).isEqualTo( + FloatingMenuSizePreferenceController.Size.LARGE); + } + + @Test + public void optInAllValuesToSettings_software_sizeValueIsNotNull_sizeValueIsNotChanged() { + for (int size : new int[] {FloatingMenuSizePreferenceController.Size.LARGE, + FloatingMenuSizePreferenceController.Size.SMALL}) { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size); + + ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings( + mContext, + UserShortcutType.SOFTWARE); + + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, + FloatingMenuSizePreferenceController.Size.UNKNOWN)).isEqualTo( + size); + } + } + + @Test + public void optInAllValuesToSettings_hardware_sizeValueIsNotChanged() { + for (int size : new int[] {FloatingMenuSizePreferenceController.Size.UNKNOWN, + FloatingMenuSizePreferenceController.Size.LARGE, + FloatingMenuSizePreferenceController.Size.SMALL}) { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size); + + ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings( + mContext, + UserShortcutType.HARDWARE); + + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size + 1)).isEqualTo( + size); + } + } + + @Test + public void optInAllValuesToSettings_tripletap_sizeValueIsNotChanged() { + for (int size : new int[] {FloatingMenuSizePreferenceController.Size.UNKNOWN, + FloatingMenuSizePreferenceController.Size.LARGE, + FloatingMenuSizePreferenceController.Size.SMALL}) { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size); + + ToggleScreenMagnificationPreferenceFragment.optInAllMagnificationValuesToSettings( + mContext, + UserShortcutType.TRIPLETAP); + + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, size + 1)).isEqualTo( + size); + } + } + @Test public void optOutAllValuesToSettings_optOutValue_emptyString() { putStringIntoSettings(SOFTWARE_SHORTCUT_KEY, MAGNIFICATION_CONTROLLER_NAME);