From 3d41fe560b5ac9b3ed5b14d9be2494f9493336da Mon Sep 17 00:00:00 2001 From: mincheli Date: Wed, 20 Jan 2021 17:24:25 +0800 Subject: [PATCH] Hides the settings entry in Magnification Settings if device is not supported If the device doesn't support magnification area, we should hide the settings entry in mangification settings Bug: 177371954 Test: atest ToggleScreenMagnificationPreferenceFragmentTest Change-Id: I41fc3177f86c6a19e3ef0d2fbe5e052d77c1cb47 --- ...eScreenMagnificationPreferenceFragment.java | 7 +++++++ ...eenMagnificationPreferenceFragmentTest.java | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index ff467226ea8..dde5be17d74 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -128,8 +128,15 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override protected void initSettingsPreference() { + // If the device doesn't support magnification area, it should hide the settings preference. + if (!getContext().getResources().getBoolean( + com.android.internal.R.bool.config_magnification_area)) { + return; + } mSettingsPreference = new Preference(getPrefContext()); mSettingsPreference.setTitle(R.string.accessibility_menu_item_settings); + // TODO(b/177371954): "magnification area" should be brought up to the highest level of the + // settings UI so that it appears below "shortcut" to replace "settings. mSettingsPreference.setFragment(MagnificationSettingsFragment.class.getName()); mSettingsPreference.setPersistent(false); diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index 3df62215ddc..0ed6747e517 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; +import android.content.res.Resources; import android.os.Bundle; import android.provider.Settings; import android.view.LayoutInflater; @@ -75,7 +76,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { "com.android.server.accessibility.MagnificationController"; private TestToggleScreenMagnificationPreferenceFragment mFragment; - private Context mContext = ApplicationProvider.getApplicationContext(); + private Context mContext; + private Resources mResources; @Mock private PreferenceManager mPreferenceManager; @@ -86,10 +88,14 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { public void setUpTestFragment() { MockitoAnnotations.initMocks(this); + mContext = spy(ApplicationProvider.getApplicationContext()); mFragment = spy(new TestToggleScreenMagnificationPreferenceFragment()); when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager); when(mFragment.getPreferenceManager().getContext()).thenReturn(mContext); when(mFragment.getContext()).thenReturn(mContext); + mResources = spy(mContext.getResources()); + when(mContext.getResources()).thenReturn(mResources); + when(mFragment.getContext().getResources()).thenReturn(mResources); doReturn(null).when(mFragment).getPreferenceScreen(); doReturn(mActivity).when(mFragment).getActivity(); } @@ -250,6 +256,16 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { assertThat(expectedType).isEqualTo(UserShortcutType.HARDWARE | UserShortcutType.TRIPLETAP); } + @Test + public void initSettingsPreference_notSupportsMagnificationArea_settingsPreferenceIsNull() { + when(mResources.getBoolean( + com.android.internal.R.bool.config_magnification_area)) + .thenReturn(false); + mFragment.initSettingsPreference(); + + assertThat(mFragment.mSettingsPreference).isNull(); + } + private void putStringIntoSettings(String key, String componentName) { Settings.Secure.putString(mContext.getContentResolver(), key, componentName); }