From c9d3b39a6284eb4daf99d2ba47a50f6dc74370c9 Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:22:17 +0000 Subject: [PATCH] refactor(magnification suw): hide follow typing toggle in setup wizard Originally we cache mFollowingTypingSwitchPreference in fragment so in ToggleScreenMagnificationPreferenceFragmentForSetupWizard we can set the preference visible to false to hide it. After creating MagnificationFeaturePreferenceController, the MagnificationFollowTypingPreferenceController can extend it and check isInSetupWizard internally then dicide whether to hide. Therefore, we don't need to cache mFollowingTypingSwitchPreference in fragment and let the fragment control the preference visibility anymore. Bug: 340721852 Flag: NONE Test: manually atest MagnificationFollowTypingPreferenceControllerTest atest ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest atest ToggleScreenMagnificationPreferenceFragmentTest Change-Id: I44f7f0589b2df3d83a27139323fc68a0561f1cfa --- ...gnificationFollowTypingPreferenceController.java | 6 +++--- ...ToggleScreenMagnificationPreferenceFragment.java | 13 ++++++------- ...gnificationPreferenceFragmentForSetupWizard.java | 4 ---- ...icationFollowTypingPreferenceControllerTest.java | 13 +++++++++++++ ...icationPreferenceFragmentForSetupWizardTest.java | 3 --- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java b/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java index b269a9975e5..6092b4b809c 100644 --- a/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java @@ -23,10 +23,10 @@ import android.content.Context; import android.provider.Settings; import com.android.settings.R; -import com.android.settings.core.TogglePreferenceController; /** Controller that accesses and switches the preference status of following typing feature */ -public class MagnificationFollowTypingPreferenceController extends TogglePreferenceController { +public class MagnificationFollowTypingPreferenceController extends + MagnificationFeaturePreferenceController { private static final String TAG = MagnificationFollowTypingPreferenceController.class.getSimpleName(); @@ -38,7 +38,7 @@ public class MagnificationFollowTypingPreferenceController extends TogglePrefere @Override public int getAvailabilityStatus() { - return AVAILABLE; + return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE; } @Override diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 5c1ddbecd4c..c8d566d0aae 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -82,8 +82,6 @@ public class ToggleScreenMagnificationPreferenceFragment extends private static final TextUtils.SimpleStringSplitter sStringColonSplitter = new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR); - protected TwoStatePreference mFollowingTypingSwitchPreference; - // TODO(b/147021230): Move duplicated functions with android/internal/accessibility into util. private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener; private CheckBox mSoftwareTypeCheckBox; @@ -243,17 +241,18 @@ public class ToggleScreenMagnificationPreferenceFragment extends } private void addFollowTypingSetting(PreferenceCategory generalCategory) { - mFollowingTypingSwitchPreference = new SwitchPreferenceCompat(getPrefContext()); - mFollowingTypingSwitchPreference.setTitle( + var followingTypingSwitchPreference = new SwitchPreferenceCompat(getPrefContext()); + followingTypingSwitchPreference.setTitle( R.string.accessibility_screen_magnification_follow_typing_title); - mFollowingTypingSwitchPreference.setSummary( + followingTypingSwitchPreference.setSummary( R.string.accessibility_screen_magnification_follow_typing_summary); - mFollowingTypingSwitchPreference.setKey( + followingTypingSwitchPreference.setKey( MagnificationFollowTypingPreferenceController.PREF_KEY); - generalCategory.addPreference(mFollowingTypingSwitchPreference); + generalCategory.addPreference(followingTypingSwitchPreference); var followTypingPreferenceController = new MagnificationFollowTypingPreferenceController( getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY); + followTypingPreferenceController.setInSetupWizard(mInSetupWizard); followTypingPreferenceController.displayPreference(getPreferenceScreen()); addPreferenceController(followTypingPreferenceController); } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java index 9182fbb565a..97405d24e9f 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java @@ -72,10 +72,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard if (mSettingsPreference != null) { mSettingsPreference.setVisible(false); } - // Setting of following typing - if (mFollowingTypingSwitchPreference != null) { - mFollowingTypingSwitchPreference.setVisible(false); - } } @Override diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceControllerTest.java index 3aeeca8f59c..bc0563a9631 100644 --- a/tests/robotests/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceControllerTest.java @@ -17,6 +17,8 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.google.common.truth.Truth.assertThat; @@ -61,6 +63,17 @@ public class MagnificationFollowTypingPreferenceControllerTest { reset(mSwitchPreference); } + @Test + public void getAvailableStatus_notInSetupWizard_returnAvailable() { + assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); + } + + @Test + public void getAvailableStatus_inSetupWizard_returnConditionallyUnavailable() { + mController.setInSetupWizard(true); + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } + @Test public void performClick_switchDefaultStateForFollowTyping_shouldReturnFalse() { mSwitchPreference.performClick(); diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest.java index f26e838375d..59bae921b0d 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest.java @@ -32,7 +32,6 @@ import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreferenceCompat; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; @@ -97,7 +96,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest { verify(mFooterBarMixin).setPrimaryButton(any()); assertThat(mFragment.mTopIntroPreference.isVisible()).isFalse(); assertThat(mFragment.mSettingsPreference.isVisible()).isFalse(); - assertThat(mFragment.mFollowingTypingSwitchPreference.isVisible()).isFalse(); } @Test @@ -124,7 +122,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest { mPreferenceManager.setPreferences(mPreferenceManager.createPreferenceScreen(context)); mTopIntroPreference = new TopIntroPreference(context); mSettingsPreference = new Preference(context); - mFollowingTypingSwitchPreference = new SwitchPreferenceCompat(context); } @Override