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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user