From: rafftsai Date: Wed, 28 Mar 2018 08:07:24 +0000 (+0800) Subject: MagnificationPreferenceFragment use DashboardFragment X-Git-Tag: android-x86-9.0-r1~61^2~3^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=807506b1668b8438a138e1485f27e74de6a3d06c;p=android-x86%2Fpackages-apps-Settings.git MagnificationPreferenceFragment use DashboardFragment - Move preference related logic to Controller - Add settings:controller in xml file Bug: 73899467 Test: manual Test: make RunSettingsRoboTests Change-Id: I3eaccc617c4408f50110bf1f5df3482f491f7393 Signed-off-by: rafftsai --- diff --git a/res/xml/accessibility_magnification_settings.xml b/res/xml/accessibility_magnification_settings.xml index 4083360a39..bac01bd901 100644 --- a/res/xml/accessibility_magnification_settings.xml +++ b/res/xml/accessibility_magnification_settings.xml @@ -14,14 +14,17 @@ limitations under the License. --> + android:title="@string/accessibility_screen_magnification_gestures_title" + settings:controller="com.android.settings.accessibility.MagnificationGesturesPreferenceController"/> + android:title="@string/accessibility_screen_magnification_navbar_title" + settings:controller="com.android.settings.accessibility.MagnificationNavbarPreferenceController"/> diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index ae36e0a3cc..e0e8e4e0df 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -813,8 +813,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements if (!MagnificationPreferenceFragment.isApplicable(context.getResources())) { preference.setFragment(ToggleScreenMagnificationPreferenceFragment.class.getName()); final Bundle extras = preference.getExtras(); - MagnificationPreferenceFragment.populateMagnificationGesturesPreferenceExtras(extras, - context); + MagnificationGesturesPreferenceController + .populateMagnificationGesturesPreferenceExtras(extras, context); } } diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java index 55b79ba8ef..137a9e43cd 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java +++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java @@ -156,8 +156,8 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm preference.setFragment( ToggleScreenMagnificationPreferenceFragmentForSetupWizard.class.getName()); final Bundle extras = preference.getExtras(); - MagnificationPreferenceFragment.populateMagnificationGesturesPreferenceExtras(extras, - context); + MagnificationGesturesPreferenceController + .populateMagnificationGesturesPreferenceExtras(extras, context); } } } diff --git a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java new file mode 100644 index 0000000000..98f6672b33 --- /dev/null +++ b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.android.settings.accessibility; + +import android.content.Context; +import android.os.Bundle; +import android.provider.Settings; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +public class MagnificationGesturesPreferenceController extends BasePreferenceController { + + private boolean mIsFromSUW = false; + + public MagnificationGesturesPreferenceController(Context context, String key) { + super(context, key); + } + + public void setIsFromSUW(boolean fromSUW) { + mIsFromSUW = fromSUW; + } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (getPreferenceKey().equals(preference.getKey())) { + Bundle extras = preference.getExtras(); + populateMagnificationGesturesPreferenceExtras(extras, mContext); + extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mIsFromSUW); + } + return false; + } + + @Override + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public CharSequence getSummary() { + int resId = 0; + if (mIsFromSUW) { + resId = R.string.accessibility_screen_magnification_short_summary; + } else { + final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1; + resId = (enabled ? R.string.accessibility_feature_state_on : + R.string.accessibility_feature_state_off); + } + return mContext.getString(resId); + } + + static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) { + extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); + extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString( + R.string.accessibility_screen_magnification_gestures_title)); + extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES, + R.string.accessibility_screen_magnification_gestures_title); + extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText( + R.string.accessibility_screen_magnification_summary)); + extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, + Settings.Secure.getInt(context.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1); + extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID, + R.raw.accessibility_screen_magnification); + } +} diff --git a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java new file mode 100644 index 0000000000..e0ea6f27c9 --- /dev/null +++ b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package com.android.settings.accessibility; + +import android.content.Context; +import android.os.Bundle; +import android.provider.Settings; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; + +public class MagnificationNavbarPreferenceController extends BasePreferenceController { + + private boolean mIsFromSUW = false; + + public MagnificationNavbarPreferenceController(Context context, String key) { + super(context, key); + } + + public void setIsFromSUW(boolean fromSUW) { + mIsFromSUW = fromSUW; + } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (getPreferenceKey().equals(preference.getKey())) { + Bundle extras = preference.getExtras(); + extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); + extras.putString(AccessibilitySettings.EXTRA_TITLE, mContext.getString( + R.string.accessibility_screen_magnification_navbar_title)); + extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES, + R.string.accessibility_screen_magnification_navbar_title); + extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, + mContext.getResources().getText( + R.string.accessibility_screen_magnification_navbar_summary)); + extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, + Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) + == 1); + extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mIsFromSUW); + } + return false; + } + + @Override + public int getAvailabilityStatus() { + return MagnificationPreferenceFragment.isApplicable(mContext.getResources()) + ? AVAILABLE + : DISABLED_UNSUPPORTED; + } + + @Override + public CharSequence getSummary() { + int resId = 0; + if (mIsFromSUW) { + resId = R.string.accessibility_screen_magnification_navbar_short_summary; + } else { + final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1; + resId = (enabled ? R.string.accessibility_feature_state_on : + R.string.accessibility_feature_state_off); + } + return mContext.getText(resId); + } +} diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java index 24e87fc5ad..05cb46b4d8 100644 --- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java @@ -29,40 +29,39 @@ import android.view.View; import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.dashboard.DashboardFragment; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; +import com.android.settingslib.core.AbstractPreferenceController; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -public final class MagnificationPreferenceFragment extends SettingsPreferenceFragment implements - Indexable { +public final class MagnificationPreferenceFragment extends DashboardFragment { + + private static final String TAG = "MagnificationPreferenceFragment"; // Settings App preference keys private static final String PREFERENCE_TITLE_KEY = "magnification_preference_screen_title"; - private static final String MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY = - "screen_magnification_gestures_preference_screen"; - private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY = - "screen_magnification_navbar_preference_screen"; // Pseudo ComponentName used to represent navbar magnification in Settings.Secure. private static final String MAGNIFICATION_COMPONENT_ID = "com.android.server.accessibility.MagnificationController"; - private Preference mMagnificationGesturesPreference; - private Preference mMagnificationNavbarPreference; - private boolean mLaunchedFromSuw = false; @Override - public void onCreatePreferences(Bundle bundle, String s) { - addPreferencesFromResource(R.xml.accessibility_magnification_settings); - mMagnificationGesturesPreference = findPreference( - MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY); - mMagnificationNavbarPreference = findPreference(MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY); + public int getMetricsCategory() { + return MetricsEvent.ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS; + } + + @Override + protected String getLogTag() { + return TAG; } @Override @@ -71,28 +70,21 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra } @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); + protected int getPreferenceScreenResId() { + return R.xml.accessibility_magnification_settings; + } + @Override + public void onAttach(Context context) { + super.onAttach(context); final Bundle args = getArguments(); if ((args != null) && args.containsKey(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW)) { mLaunchedFromSuw = args.getBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW); } - } - - @Override - public void onResume() { - super.onResume(); - getActivity().setTitle(R.string.accessibility_screen_magnification_title); - updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, - mMagnificationGesturesPreference); - updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, - mMagnificationNavbarPreference); - } - - @Override - public int getMetricsCategory() { - return MetricsEvent.ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS; + use(MagnificationGesturesPreferenceController.class) + .setIsFromSUW(mLaunchedFromSuw); + use(MagnificationNavbarPreferenceController.class) + .setIsFromSUW(mLaunchedFromSuw); } @Override @@ -102,57 +94,9 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra preference.setFragment( ToggleScreenMagnificationPreferenceFragmentForSetupWizard.class.getName()); } - if (mMagnificationGesturesPreference == preference) { - handleMagnificationGesturesPreferenceScreenClick(); - super.onPreferenceTreeClick(mMagnificationGesturesPreference); - return true; - } else if (mMagnificationNavbarPreference == preference) { - handleMagnificationNavbarPreferenceScreenClick(); - super.onPreferenceTreeClick(mMagnificationNavbarPreference); - return true; - } return super.onPreferenceTreeClick(preference); } - private void updateFeatureSummary(String prefKey, Preference pref) { - if (!mLaunchedFromSuw) { - final boolean enabled = Settings.Secure.getInt(getContentResolver(), prefKey, 0) == 1; - pref.setSummary(enabled ? R.string.accessibility_feature_state_on - : R.string.accessibility_feature_state_off); - } else { - if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED.equals(prefKey)) { - pref.setSummary(R.string.accessibility_screen_magnification_short_summary); - } else if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals( - prefKey)) { - pref.setSummary(R.string.accessibility_screen_magnification_navbar_short_summary); - } - } - } - - private void handleMagnificationGesturesPreferenceScreenClick() { - Bundle extras = mMagnificationGesturesPreference.getExtras(); - populateMagnificationGesturesPreferenceExtras(extras, getContext()); - extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw); - } - - private void handleMagnificationNavbarPreferenceScreenClick() { - Bundle extras = mMagnificationNavbarPreference.getExtras(); - extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); - extras.putString(AccessibilitySettings.EXTRA_TITLE, getString( - R.string.accessibility_screen_magnification_navbar_title)); - extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES, - R.string.accessibility_screen_magnification_navbar_title); - extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, - getActivity().getResources().getText( - R.string.accessibility_screen_magnification_navbar_summary)); - extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, - Settings.Secure.getInt(getContentResolver(), - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) - == 1); - extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw); - } - static CharSequence getConfigurationWarningStringForSecureSettingsKey(String key, Context context) { if (!Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) { @@ -187,22 +131,6 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra return null; } - static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) { - extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); - extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString( - R.string.accessibility_screen_magnification_gestures_title)); - extras.putInt(AccessibilitySettings.EXTRA_TITLE_RES, - R.string.accessibility_screen_magnification_gestures_title); - extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText( - R.string.accessibility_screen_magnification_summary)); - extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, - Settings.Secure.getInt(context.getContentResolver(), - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1); - extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID, - R.raw.accessibility_screen_magnification); - } - /** * @return {@code true} if this fragment should be shown, {@code false} otherwise. This * fragment is shown in the case that more than one magnification mode is available. diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java new file mode 100644 index 0000000000..23ac795fb8 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.accessibility; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; + +@RunWith(SettingsRobolectricTestRunner.class) +public class MagnificationGesturesPreferenceControllerTest { + + private Context mContext; + private MagnificationGesturesPreferenceController mController; + private Preference mPreference; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mController = new MagnificationGesturesPreferenceController(mContext, "pref_key"); + mPreference = new Preference(mContext); + mController.updateState(mPreference); + } + + @Test + public void isAlwaysAvailable() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void updateState_shouldRefreshSummary() { + Settings.System.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 1); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getString(R.string.accessibility_feature_state_on)); + + Settings.System.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off)); + } + + @Test + public void updateState_shouldRefreshSummarySuw() { + mController.setIsFromSUW(true); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getString(R.string. + accessibility_screen_magnification_short_summary)); + } +} diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java new file mode 100644 index 0000000000..486ccd39e0 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.accessibility; + +import static com.android.settings.search.ResultPayload.Availability.AVAILABLE; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.spy; + +import android.content.Context; +import android.content.res.Resources; +import android.provider.Settings; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; + +@RunWith(SettingsRobolectricTestRunner.class) +public class MagnificationNavbarPreferenceControllerTest { + + private Context mContext; + private MagnificationNavbarPreferenceController mController; + private Preference mPreference; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); + mController = new MagnificationNavbarPreferenceController(mContext, "test_key"); + mPreference = new Preference(mContext); + mController.updateState(mPreference); + } + + @After + public void tearDown() { + ShadowMagnificationPreferenceFragment.reset(); + } + + @Test + @Config(shadows = ShadowMagnificationPreferenceFragment.class) + public void isAvailable_unsupported_shouldNotBeAvailable() { + ShadowMagnificationPreferenceFragment.setApplicable(false); + + assertThat(mController.getAvailabilityStatus()) + .isNotEqualTo(AVAILABLE); + } + + @Test + @Config(shadows = ShadowMagnificationPreferenceFragment.class) + public void isAvailable_supported_shouldBeAvailable() { + ShadowMagnificationPreferenceFragment.setApplicable(true); + + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(AVAILABLE); + } + + @Test + public void updateState_shouldRefreshSummary() { + Settings.System.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 1); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.accessibility_feature_state_on)); + + Settings.System.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getText(R.string.accessibility_feature_state_off)); + } + + @Test + public void updateState_shouldRefreshSummarySuw() { + mController.setIsFromSUW(true); + mController.updateState(mPreference); + assertThat(mPreference.getSummary()) + .isEqualTo(mContext.getString(R.string. + accessibility_screen_magnification_navbar_short_summary)); + } + + @Implements(MagnificationPreferenceFragment.class) + public static class ShadowMagnificationPreferenceFragment { + private static boolean sIsApplicable; + + @Resetter + static void reset() { + sIsApplicable = false; + } + + @Implementation + static boolean isApplicable(Resources res) { + return sIsApplicable; + } + + static void setApplicable(boolean applicable) { + sIsApplicable = applicable; + } + } +}