diff --git a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java index 793ab5a8581..99e0dc035e8 100644 --- a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java @@ -14,7 +14,6 @@ package com.android.settings.accessibility; import android.content.Context; -import android.icu.text.MessageFormat; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; @@ -94,19 +93,11 @@ public class MagnificationGesturesPreferenceController extends TogglePreferenceC } static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) { - extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); + // TODO(b/270481978): It seems not necessary to put EXTRA_TITLE_RES. extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES, R.string.accessibility_screen_magnification_gestures_title); - String intro = context.getString(R.string.accessibility_screen_magnification_intro_text); - extras.putCharSequence(AccessibilitySettings.EXTRA_INTRO, intro); - - String summary = context.getString(R.string.accessibility_screen_magnification_summary); - final Object[] numberArguments = {1, 2, 3, 4, 5}; - summary = MessageFormat.format(summary, numberArguments); - extras.putCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, summary); - + // TODO(b/270481978): It seems not necessary to put EXTRA_VIDEO_RAW_RESOURCE_ID. extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID, R.raw.accessibility_screen_magnification); } diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index ca3c5f10e87..22c57b7a305 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -122,7 +122,7 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment private int mNeedsQSTooltipType = QuickSettingsTooltipType.GUIDE_TO_EDIT; private boolean mSavedAccessibilityFloatingMenuEnabled; private ImageView mImageGetterCacheView; - private final Html.ImageGetter mImageGetter = (String str) -> { + protected final Html.ImageGetter mImageGetter = (String str) -> { if (str != null && str.startsWith(IMG_PREFIX)) { final String fileName = str.substring(IMG_PREFIX.length()); return getDrawableFromUri(Uri.parse( diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 470e548d5d4..04a80dc489a 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -29,6 +29,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.icu.text.CaseMap; +import android.icu.text.MessageFormat; import android.net.Uri; import android.os.Bundle; import android.provider.DeviceConfig; @@ -220,6 +221,34 @@ public class ToggleScreenMagnificationPreferenceFragment extends addJoystickSetting(generalCategory); } + @Override + protected void onProcessArguments(Bundle arguments) { + Context context = getContext(); + + // This Fragment may get arguments from MagnificationGesturesPreferenceController or + // MagnificationNavbarPreferenceController and it's necessary to check if a key exists + // before putting a new value into arguments. + + if (!arguments.containsKey(AccessibilitySettings.EXTRA_PREFERENCE_KEY)) { + arguments.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); + } + + if (!arguments.containsKey(AccessibilitySettings.EXTRA_INTRO)) { + arguments.putCharSequence(AccessibilitySettings.EXTRA_INTRO, + context.getString(R.string.accessibility_screen_magnification_intro_text)); + } + + if (!arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION)) { + String summary = MessageFormat.format( + context.getString(R.string.accessibility_screen_magnification_summary), + new Object[]{1, 2, 3, 4, 5}); + arguments.putCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, summary); + } + + super.onProcessArguments(arguments); + } + private void addAlwaysOnSetting(PreferenceCategory generalCategory) { if (!DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_WINDOW_MANAGER, diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index 8697cb5aa91..9916dc9d7f4 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -23,6 +23,7 @@ import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; @@ -405,6 +406,17 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { assertThat(mFragment.getHelpResource()).isEqualTo(R.string.help_url_magnification); } + @Test + public void onProcessArguments_defaultArgumentUnavailable_shouldSetDefaultArguments() { + Bundle arguments = new Bundle(); + + mFragment.onProcessArguments(arguments); + + assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_PREFERENCE_KEY)); + assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_INTRO)); + assertTrue(arguments.containsKey(AccessibilitySettings.EXTRA_HTML_DESCRIPTION)); + } + private void putStringIntoSettings(String key, String componentName) { Settings.Secure.putString(mContext.getContentResolver(), key, componentName); }