From 9780020f6b443b86f3b148f595cd71059a488fbc Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:03:15 +0000 Subject: [PATCH 1/5] chore(magnification suw): create MagnificationFeaturePreferenceController Add a new abstract class MagnificationFeaturePreferenceController that extends TogglePreferenceController, to wrap inSetupWizard setter/getter. Then for magnification feature preference controllers like alwaysOn or followTyping, they can just check isInSetupWizard to decide whether hiding in setup wizard. Besides, in ToggleScreenMagnificationPreferenceFragment we cache a flag mInSetupWizard when fragment created, so we can pass the info to the preferece controllers when creating them. Bug: 340721852 Flag: NONE Test: build pass Change-Id: I05c59a766219862117d2a6ede775d68a4c3dedac --- ...nificationFeaturePreferenceController.java | 42 +++++++++++++++++++ ...ScreenMagnificationPreferenceFragment.java | 5 ++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java diff --git a/src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java b/src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java new file mode 100644 index 00000000000..9664756ac45 --- /dev/null +++ b/src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2024 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 com.android.settings.core.TogglePreferenceController; + +/** + * A base preference controller of magnification feature with common methods. + */ +public abstract class MagnificationFeaturePreferenceController extends TogglePreferenceController { + + private boolean mInSetupWizard; + + protected MagnificationFeaturePreferenceController(Context context, + String preferenceKey) { + super(context, preferenceKey); + } + + protected final boolean isInSetupWizard() { + return mInSetupWizard; + } + + protected final void setInSetupWizard(boolean inSetupWizard) { + mInSetupWizard = inSetupWizard; + } +} diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 25c8768375f..e3f53e47172 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -92,10 +92,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Nullable private CheckBox mTwoFingerTripleTapTypeCheckBox; private DialogCreatable mDialogDelegate; + private boolean mInSetupWizard; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActivity().setTitle(R.string.accessibility_screen_magnification_title); + mInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); } @Override @@ -169,7 +172,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends .showAccessibilityGestureTutorialDialog(getPrefContext()); case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT: final CharSequence dialogTitle = getShortcutTitle(); - final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) + final int dialogType = mInSetupWizard ? DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW : DialogType.EDIT_SHORTCUT_MAGNIFICATION; mDialog = AccessibilityDialogUtils.showEditShortcutDialog(getPrefContext(), From 3761f61c7e3ac1e2ad4522ff70cafadca4ad6c28 Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:16:18 +0000 Subject: [PATCH 2/5] chore(magnification suw): hide always on toggle in setup wizard Bug: 340721852 Flag: NONE Test: manually atest MagnificationAlwaysOnPreferenceControllerTest Change-Id: I39868ac1d4423584e43473683db20a2259311049 --- .../MagnificationAlwaysOnPreferenceController.java | 7 +++---- ...ToggleScreenMagnificationPreferenceFragment.java | 1 + ...gnificationAlwaysOnPreferenceControllerTest.java | 13 +++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java b/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java index 4a37a416414..43d11b0148d 100644 --- a/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java @@ -34,7 +34,6 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; -import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; @@ -44,8 +43,8 @@ import com.android.settingslib.core.lifecycle.events.OnResume; * feature, where the magnifier will not deactivate on Activity transitions; it will only zoom out * to 100%. */ -public class MagnificationAlwaysOnPreferenceController extends TogglePreferenceController - implements LifecycleObserver, OnResume, OnPause { +public class MagnificationAlwaysOnPreferenceController extends + MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause { private static final String TAG = MagnificationAlwaysOnPreferenceController.class.getSimpleName(); @@ -89,7 +88,7 @@ public class MagnificationAlwaysOnPreferenceController extends TogglePreferenceC @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 e3f53e47172..5c1ddbecd4c 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -285,6 +285,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends var alwaysOnPreferenceController = new MagnificationAlwaysOnPreferenceController( getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY); + alwaysOnPreferenceController.setInSetupWizard(mInSetupWizard); getSettingsLifecycle().addObserver(alwaysOnPreferenceController); alwaysOnPreferenceController.displayPreference(getPreferenceScreen()); addPreferenceController(alwaysOnPreferenceController); diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceControllerTest.java index 3e97cec0f4a..f0decabccee 100644 --- a/tests/robotests/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceControllerTest.java @@ -18,6 +18,8 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; import static com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; +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; @@ -148,4 +150,15 @@ public class MagnificationAlwaysOnPreferenceControllerTest { mController.updateState(mSwitchPreference); assertThat(mSwitchPreference.isEnabled()).isTrue(); } + + @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); + } } From c9d3b39a6284eb4daf99d2ba47a50f6dc74370c9 Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:22:17 +0000 Subject: [PATCH 3/5] 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 From f094c19d0ac9518b74a2fa376626fef6274cf29b Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:32:04 +0000 Subject: [PATCH 4/5] chore(magnification suw): hide one finger pan toggle in setup wizard Bug: 340721852 Flag: NONE Test: manually atest MagnificationOneFingerPanningPreferenceControllerTest Change-Id: Ic9b44d73f75b47e6b97c5f4994b2e0b23bfb623b --- ...icationOneFingerPanningPreferenceController.java | 7 +++---- ...ToggleScreenMagnificationPreferenceFragment.java | 1 + ...ionOneFingerPanningPreferenceControllerTest.java | 13 +++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java index 4eb5090dce6..3e3b8d907df 100644 --- a/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java @@ -35,13 +35,12 @@ import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; -import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; -public class MagnificationOneFingerPanningPreferenceController - extends TogglePreferenceController implements LifecycleObserver, OnResume, OnPause { +public class MagnificationOneFingerPanningPreferenceController extends + MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause { static final String PREF_KEY = Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED; private TwoStatePreference mSwitchPreference; @@ -82,7 +81,7 @@ public class MagnificationOneFingerPanningPreferenceController @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 c8d566d0aae..a76dcf1bbb8 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -304,6 +304,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends var oneFingerPanningPreferenceController = new MagnificationOneFingerPanningPreferenceController(getContext()); + oneFingerPanningPreferenceController.setInSetupWizard(mInSetupWizard); getSettingsLifecycle().addObserver(oneFingerPanningPreferenceController); oneFingerPanningPreferenceController.displayPreference(getPreferenceScreen()); addPreferenceController(oneFingerPanningPreferenceController); diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java index bfc8313d142..8b4bcd8fe47 100644 --- a/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceControllerTest.java @@ -19,6 +19,8 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import static com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; +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; @@ -186,6 +188,17 @@ public class MagnificationOneFingerPanningPreferenceControllerTest { assertThat(mSwitchPreference.isChecked()).isFalse(); } + @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); + } + private String enabledSummary() { return mContext.getString( R.string.accessibility_magnification_one_finger_panning_summary_on); From a511ddb75ac0eb5b41f67fb991a99d2331818325 Mon Sep 17 00:00:00 2001 From: Roy Chou Date: Mon, 20 May 2024 08:43:48 +0000 Subject: [PATCH 5/5] chore(magnification suw): hide joystick toggle in setup wizard Although we haven't implemented joystick feature, but the joystick preference controller is already in the codebase, so we also add hiding logic for joystick toggle when in setup wizard. Bug: 340721852 Flag: NONE Test: manually atest MagnificationJoystickPreferenceControllerTest Change-Id: Ife93548583c3e82eac030e6e3aa55b9f643b055a --- .../MagnificationJoystickPreferenceController.java | 6 +++--- ...ToggleScreenMagnificationPreferenceFragment.java | 1 + ...gnificationJoystickPreferenceControllerTest.java | 13 +++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java b/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java index b480a0a3f2f..690a9453c29 100644 --- a/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java @@ -23,12 +23,12 @@ 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 the magnification joystick feature */ -public class MagnificationJoystickPreferenceController extends TogglePreferenceController { +public class MagnificationJoystickPreferenceController extends + MagnificationFeaturePreferenceController { private static final String TAG = MagnificationJoystickPreferenceController.class.getSimpleName(); @@ -40,7 +40,7 @@ public class MagnificationJoystickPreferenceController extends TogglePreferenceC @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 a76dcf1bbb8..0821b87c2f0 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -333,6 +333,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends getContext(), MagnificationJoystickPreferenceController.PREF_KEY ); + joystickPreferenceController.setInSetupWizard(mInSetupWizard); joystickPreferenceController.displayPreference(getPreferenceScreen()); addPreferenceController(joystickPreferenceController); } diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationJoystickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationJoystickPreferenceControllerTest.java index 11258bb6041..3fe3ed6d6d1 100644 --- a/tests/robotests/src/com/android/settings/accessibility/MagnificationJoystickPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationJoystickPreferenceControllerTest.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; @@ -80,4 +82,15 @@ public class MagnificationJoystickPreferenceControllerTest { assertThat(mController.isChecked()).isFalse(); assertThat(mSwitchPreference.isChecked()).isFalse(); } + + @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); + } }