diff --git a/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java b/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java index ff271c1e016..059b85e62a4 100644 --- a/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationAlwaysOnPreferenceController.java @@ -44,7 +44,7 @@ import com.android.settingslib.core.lifecycle.events.OnResume; * to 100%. */ public class MagnificationAlwaysOnPreferenceController extends - MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause { + MagnificationTogglePreferenceController implements LifecycleObserver, OnResume, OnPause { private static final String TAG = MagnificationAlwaysOnPreferenceController.class.getSimpleName(); diff --git a/src/com/android/settings/accessibility/MagnificationBasePreferenceController.java b/src/com/android/settings/accessibility/MagnificationBasePreferenceController.java new file mode 100644 index 00000000000..cf710a0928f --- /dev/null +++ b/src/com/android/settings/accessibility/MagnificationBasePreferenceController.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2025 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.BasePreferenceController; + +/** + * A base preference controller of magnification feature with common methods. + */ +public abstract class MagnificationBasePreferenceController extends BasePreferenceController { + + private boolean mInSetupWizard; + + protected MagnificationBasePreferenceController(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/MagnificationFeedbackPreferenceController.java b/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceController.java index bfcd2930513..578a172b5b7 100644 --- a/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceController.java @@ -25,7 +25,6 @@ import androidx.lifecycle.DefaultLifecycleObserver; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.SurveyFeatureProvider; @@ -35,7 +34,7 @@ import com.android.settings.overlay.SurveyFeatureProvider; * visibility and click behavior of the preference based on the availability of a user survey * related to magnification. */ -public class MagnificationFeedbackPreferenceController extends BasePreferenceController +public class MagnificationFeedbackPreferenceController extends MagnificationBasePreferenceController implements DefaultLifecycleObserver { private static final String TAG = "MagnificationFeedbackPreferenceController"; public static final String PREF_KEY = "magnification_feedback"; @@ -53,7 +52,7 @@ public class MagnificationFeedbackPreferenceController extends BasePreferenceCon @Override public int getAvailabilityStatus() { - return AVAILABLE; + return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE; } @Override diff --git a/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java b/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java index 6092b4b809c..c247ecb517e 100644 --- a/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationFollowTypingPreferenceController.java @@ -26,7 +26,7 @@ import com.android.settings.R; /** Controller that accesses and switches the preference status of following typing feature */ public class MagnificationFollowTypingPreferenceController extends - MagnificationFeaturePreferenceController { + MagnificationTogglePreferenceController { private static final String TAG = MagnificationFollowTypingPreferenceController.class.getSimpleName(); diff --git a/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java b/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java index 690a9453c29..17ea9f42820 100644 --- a/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationJoystickPreferenceController.java @@ -28,7 +28,7 @@ import com.android.settings.R; * Controller that accesses and switches the preference status of the magnification joystick feature */ public class MagnificationJoystickPreferenceController extends - MagnificationFeaturePreferenceController { + MagnificationTogglePreferenceController { private static final String TAG = MagnificationJoystickPreferenceController.class.getSimpleName(); diff --git a/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java index a6d87f268e6..f6ed209942e 100644 --- a/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationOneFingerPanningPreferenceController.java @@ -41,7 +41,7 @@ import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; public class MagnificationOneFingerPanningPreferenceController extends - MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause { + MagnificationTogglePreferenceController implements LifecycleObserver, OnResume, OnPause { static final String PREF_KEY = Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED; private TwoStatePreference mSwitchPreference; diff --git a/src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java b/src/com/android/settings/accessibility/MagnificationTogglePreferenceController.java similarity index 81% rename from src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java rename to src/com/android/settings/accessibility/MagnificationTogglePreferenceController.java index 9664756ac45..62a877cd0a0 100644 --- a/src/com/android/settings/accessibility/MagnificationFeaturePreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationTogglePreferenceController.java @@ -21,13 +21,13 @@ import android.content.Context; import com.android.settings.core.TogglePreferenceController; /** - * A base preference controller of magnification feature with common methods. + * A base toggle preference controller of magnification feature with common methods. */ -public abstract class MagnificationFeaturePreferenceController extends TogglePreferenceController { +public abstract class MagnificationTogglePreferenceController extends TogglePreferenceController { private boolean mInSetupWizard; - protected MagnificationFeaturePreferenceController(Context context, + protected MagnificationTogglePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index fef83ae2ef1..0d0c7fa7b02 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -387,6 +387,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends final MagnificationFeedbackPreferenceController magnificationFeedbackPreferenceController = new MagnificationFeedbackPreferenceController(getContext(), this, MagnificationFeedbackPreferenceController.PREF_KEY); + magnificationFeedbackPreferenceController.setInSetupWizard(mInSetupWizard); magnificationFeedbackPreferenceController.displayPreference(getPreferenceScreen()); addPreferenceController(magnificationFeedbackPreferenceController); } diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceControllerTest.java index 389e12756bf..d34cc9b5926 100644 --- a/tests/robotests/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationFeedbackPreferenceControllerTest.java @@ -18,6 +18,8 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.MagnificationFeedbackPreferenceController.FEEDBACK_KEY; import static com.android.settings.accessibility.MagnificationFeedbackPreferenceController.PREF_KEY; +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; @@ -118,4 +120,18 @@ public class MagnificationFeedbackPreferenceControllerTest { verify(mSurveyFeatureProvider).sendActivityIfAvailable(FEEDBACK_KEY); } + + @Test + public void getAvailableStatus_notInSetupWizard_returnAvailable() { + mController.setInSetupWizard(false); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); + } + + @Test + public void getAvailableStatus_inSetupWizard_returnConditionallyUnavailable() { + mController.setInSetupWizard(true); + + assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); + } }