From 57b35f9f359e416a7ed201d85e0328b4fb5d0009 Mon Sep 17 00:00:00 2001 From: mincheli Date: Mon, 21 Mar 2022 00:32:48 +0800 Subject: [PATCH] Hides the settings entry in Magnification Settings if window magnification feature is not supported If the device doesn't support window magnification featue, we should hide the settings entry in mangification settings Bug: 213414385 Test: atest ToggleScreenMagnificationPreferenceFragmentTest Change-Id: I73f087da54cd2930c049dabb6b843c3b373e3c20 --- ...ScreenMagnificationPreferenceFragment.java | 12 +++++++--- ...enMagnificationPreferenceFragmentTest.java | 22 ++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 1176fa462c0..d2d6a3374ca 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -27,6 +27,7 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.icu.text.CaseMap; import android.net.Uri; import android.os.Bundle; @@ -162,9 +163,14 @@ 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)) { + // If the device doesn't support window magnification feature, it should hide the + // settings preference. + final boolean supportWindowMagnification = + getContext().getResources().getBoolean( + com.android.internal.R.bool.config_magnification_area) + && getContext().getPackageManager().hasSystemFeature( + PackageManager.FEATURE_WINDOW_MAGNIFICATION); + if (!supportWindowMagnification) { return; } mSettingsPreference = new Preference(getPrefContext()); diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index 8500e61a9d8..00ff9604a52 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -36,6 +36,7 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.Bundle; import android.provider.Settings; @@ -101,6 +102,8 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { private FragmentActivity mActivity; @Mock private ContentResolver mContentResolver; + @Mock + private PackageManager mPackageManager; @Before public void setUpTestFragment() { @@ -110,6 +113,7 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { mFragment = spy(new TestToggleScreenMagnificationPreferenceFragment(mContext)); mResources = spy(mContext.getResources()); when(mContext.getResources()).thenReturn(mResources); + when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mFragment.getContext().getResources()).thenReturn(mResources); when(mFragment.getActivity()).thenReturn(mActivity); when(mActivity.getContentResolver()).thenReturn(mContentResolver); @@ -334,10 +338,26 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { @Ignore("Ignore it since a NPE is happened in ShadowWindowManagerGlobal. (Ref. b/214161063)") @Test - public void onCreateView_notSupportsMagnificationArea_settingsPreferenceIsNull() { + public void onCreateView_magnificationAreaNotSupported_settingsPreferenceIsNull() { when(mResources.getBoolean( com.android.internal.R.bool.config_magnification_area)) .thenReturn(false); + when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_WINDOW_MAGNIFICATION)) + .thenReturn(true); + + mFragment.onCreateView(LayoutInflater.from(mContext), mock(ViewGroup.class), Bundle.EMPTY); + + assertThat(mFragment.mSettingsPreference).isNull(); + } + + @Ignore("Ignore it since a NPE is happened in ShadowWindowManagerGlobal. (Ref. b/214161063)") + @Test + public void onCreateView_windowMagnificationNotSupported_settingsPreferenceIsNull() { + when(mResources.getBoolean( + com.android.internal.R.bool.config_magnification_area)) + .thenReturn(true); + when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_WINDOW_MAGNIFICATION)) + .thenReturn(false); mFragment.onCreateView(LayoutInflater.from(mContext), mock(ViewGroup.class), Bundle.EMPTY);