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);