Merge changes Ife935485,Ic9b44d73,I44f7f058,I39868ac1,I05c59a76 into main

* changes:
  chore(magnification suw): hide joystick toggle in setup wizard
  chore(magnification suw): hide one finger pan toggle in setup wizard
  refactor(magnification suw): hide follow typing toggle in setup wizard
  chore(magnification suw): hide always on toggle in setup wizard
  chore(magnification suw): create MagnificationFeaturePreferenceController
This commit is contained in:
Roy Chou
2024-05-21 05:25:12 +00:00
committed by Android (Google) Code Review
12 changed files with 119 additions and 29 deletions

View File

@@ -34,7 +34,6 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; 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.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; 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 * feature, where the magnifier will not deactivate on Activity transitions; it will only zoom out
* to 100%. * to 100%.
*/ */
public class MagnificationAlwaysOnPreferenceController extends TogglePreferenceController public class MagnificationAlwaysOnPreferenceController extends
implements LifecycleObserver, OnResume, OnPause { MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause {
private static final String TAG = private static final String TAG =
MagnificationAlwaysOnPreferenceController.class.getSimpleName(); MagnificationAlwaysOnPreferenceController.class.getSimpleName();
@@ -89,7 +88,7 @@ public class MagnificationAlwaysOnPreferenceController extends TogglePreferenceC
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
} }
@Override @Override

View File

@@ -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;
}
}

View File

@@ -23,10 +23,10 @@ import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/** Controller that accesses and switches the preference status of following typing feature */ /** 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 = private static final String TAG =
MagnificationFollowTypingPreferenceController.class.getSimpleName(); MagnificationFollowTypingPreferenceController.class.getSimpleName();
@@ -38,7 +38,7 @@ public class MagnificationFollowTypingPreferenceController extends TogglePrefere
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
} }
@Override @Override

View File

@@ -23,12 +23,12 @@ import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/** /**
* Controller that accesses and switches the preference status of the magnification joystick feature * 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 = private static final String TAG =
MagnificationJoystickPreferenceController.class.getSimpleName(); MagnificationJoystickPreferenceController.class.getSimpleName();
@@ -40,7 +40,7 @@ public class MagnificationJoystickPreferenceController extends TogglePreferenceC
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
} }
@Override @Override

View File

@@ -35,13 +35,12 @@ import androidx.preference.TwoStatePreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; 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.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
public class MagnificationOneFingerPanningPreferenceController public class MagnificationOneFingerPanningPreferenceController extends
extends TogglePreferenceController implements LifecycleObserver, OnResume, OnPause { MagnificationFeaturePreferenceController implements LifecycleObserver, OnResume, OnPause {
static final String PREF_KEY = Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED; static final String PREF_KEY = Settings.Secure.ACCESSIBILITY_SINGLE_FINGER_PANNING_ENABLED;
private TwoStatePreference mSwitchPreference; private TwoStatePreference mSwitchPreference;
@@ -82,7 +81,7 @@ public class MagnificationOneFingerPanningPreferenceController
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return isInSetupWizard() ? CONDITIONALLY_UNAVAILABLE : AVAILABLE;
} }
@Override @Override

View File

@@ -82,8 +82,6 @@ public class ToggleScreenMagnificationPreferenceFragment extends
private static final TextUtils.SimpleStringSplitter sStringColonSplitter = private static final TextUtils.SimpleStringSplitter sStringColonSplitter =
new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR); new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR);
protected TwoStatePreference mFollowingTypingSwitchPreference;
// TODO(b/147021230): Move duplicated functions with android/internal/accessibility into util. // TODO(b/147021230): Move duplicated functions with android/internal/accessibility into util.
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener; private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
private CheckBox mSoftwareTypeCheckBox; private CheckBox mSoftwareTypeCheckBox;
@@ -92,10 +90,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends
@Nullable private CheckBox mTwoFingerTripleTapTypeCheckBox; @Nullable private CheckBox mTwoFingerTripleTapTypeCheckBox;
private DialogCreatable mDialogDelegate; private DialogCreatable mDialogDelegate;
private boolean mInSetupWizard;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
getActivity().setTitle(R.string.accessibility_screen_magnification_title); getActivity().setTitle(R.string.accessibility_screen_magnification_title);
mInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
} }
@Override @Override
@@ -169,7 +170,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
.showAccessibilityGestureTutorialDialog(getPrefContext()); .showAccessibilityGestureTutorialDialog(getPrefContext());
case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT: case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT:
final CharSequence dialogTitle = getShortcutTitle(); final CharSequence dialogTitle = getShortcutTitle();
final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) final int dialogType = mInSetupWizard
? DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW ? DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW
: DialogType.EDIT_SHORTCUT_MAGNIFICATION; : DialogType.EDIT_SHORTCUT_MAGNIFICATION;
mDialog = AccessibilityDialogUtils.showEditShortcutDialog(getPrefContext(), mDialog = AccessibilityDialogUtils.showEditShortcutDialog(getPrefContext(),
@@ -240,17 +241,18 @@ public class ToggleScreenMagnificationPreferenceFragment extends
} }
private void addFollowTypingSetting(PreferenceCategory generalCategory) { private void addFollowTypingSetting(PreferenceCategory generalCategory) {
mFollowingTypingSwitchPreference = new SwitchPreferenceCompat(getPrefContext()); var followingTypingSwitchPreference = new SwitchPreferenceCompat(getPrefContext());
mFollowingTypingSwitchPreference.setTitle( followingTypingSwitchPreference.setTitle(
R.string.accessibility_screen_magnification_follow_typing_title); R.string.accessibility_screen_magnification_follow_typing_title);
mFollowingTypingSwitchPreference.setSummary( followingTypingSwitchPreference.setSummary(
R.string.accessibility_screen_magnification_follow_typing_summary); R.string.accessibility_screen_magnification_follow_typing_summary);
mFollowingTypingSwitchPreference.setKey( followingTypingSwitchPreference.setKey(
MagnificationFollowTypingPreferenceController.PREF_KEY); MagnificationFollowTypingPreferenceController.PREF_KEY);
generalCategory.addPreference(mFollowingTypingSwitchPreference); generalCategory.addPreference(followingTypingSwitchPreference);
var followTypingPreferenceController = new MagnificationFollowTypingPreferenceController( var followTypingPreferenceController = new MagnificationFollowTypingPreferenceController(
getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY); getContext(), MagnificationFollowTypingPreferenceController.PREF_KEY);
followTypingPreferenceController.setInSetupWizard(mInSetupWizard);
followTypingPreferenceController.displayPreference(getPreferenceScreen()); followTypingPreferenceController.displayPreference(getPreferenceScreen());
addPreferenceController(followTypingPreferenceController); addPreferenceController(followTypingPreferenceController);
} }
@@ -282,6 +284,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
var alwaysOnPreferenceController = new MagnificationAlwaysOnPreferenceController( var alwaysOnPreferenceController = new MagnificationAlwaysOnPreferenceController(
getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY); getContext(), MagnificationAlwaysOnPreferenceController.PREF_KEY);
alwaysOnPreferenceController.setInSetupWizard(mInSetupWizard);
getSettingsLifecycle().addObserver(alwaysOnPreferenceController); getSettingsLifecycle().addObserver(alwaysOnPreferenceController);
alwaysOnPreferenceController.displayPreference(getPreferenceScreen()); alwaysOnPreferenceController.displayPreference(getPreferenceScreen());
addPreferenceController(alwaysOnPreferenceController); addPreferenceController(alwaysOnPreferenceController);
@@ -301,6 +304,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
var oneFingerPanningPreferenceController = var oneFingerPanningPreferenceController =
new MagnificationOneFingerPanningPreferenceController(getContext()); new MagnificationOneFingerPanningPreferenceController(getContext());
oneFingerPanningPreferenceController.setInSetupWizard(mInSetupWizard);
getSettingsLifecycle().addObserver(oneFingerPanningPreferenceController); getSettingsLifecycle().addObserver(oneFingerPanningPreferenceController);
oneFingerPanningPreferenceController.displayPreference(getPreferenceScreen()); oneFingerPanningPreferenceController.displayPreference(getPreferenceScreen());
addPreferenceController(oneFingerPanningPreferenceController); addPreferenceController(oneFingerPanningPreferenceController);
@@ -329,6 +333,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
getContext(), getContext(),
MagnificationJoystickPreferenceController.PREF_KEY MagnificationJoystickPreferenceController.PREF_KEY
); );
joystickPreferenceController.setInSetupWizard(mInSetupWizard);
joystickPreferenceController.displayPreference(getPreferenceScreen()); joystickPreferenceController.displayPreference(getPreferenceScreen());
addPreferenceController(joystickPreferenceController); addPreferenceController(joystickPreferenceController);
} }

View File

@@ -72,10 +72,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
if (mSettingsPreference != null) { if (mSettingsPreference != null) {
mSettingsPreference.setVisible(false); mSettingsPreference.setVisible(false);
} }
// Setting of following typing
if (mFollowingTypingSwitchPreference != null) {
mFollowingTypingSwitchPreference.setVisible(false);
}
} }
@Override @Override

View File

@@ -18,6 +18,8 @@ package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; 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; import static com.google.common.truth.Truth.assertThat;
@@ -148,4 +150,15 @@ public class MagnificationAlwaysOnPreferenceControllerTest {
mController.updateState(mSwitchPreference); mController.updateState(mSwitchPreference);
assertThat(mSwitchPreference.isEnabled()).isTrue(); 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);
}
} }

View File

@@ -17,6 +17,8 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; 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; import static com.google.common.truth.Truth.assertThat;
@@ -61,6 +63,17 @@ public class MagnificationFollowTypingPreferenceControllerTest {
reset(mSwitchPreference); 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 @Test
public void performClick_switchDefaultStateForFollowTyping_shouldReturnFalse() { public void performClick_switchDefaultStateForFollowTyping_shouldReturnFalse() {
mSwitchPreference.performClick(); mSwitchPreference.performClick();

View File

@@ -17,6 +17,8 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; 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; import static com.google.common.truth.Truth.assertThat;
@@ -80,4 +82,15 @@ public class MagnificationJoystickPreferenceControllerTest {
assertThat(mController.isChecked()).isFalse(); assertThat(mController.isChecked()).isFalse();
assertThat(mSwitchPreference.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);
}
} }

View File

@@ -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.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
import static com.android.settings.accessibility.MagnificationCapabilities.MagnificationMode; 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; import static com.google.common.truth.Truth.assertThat;
@@ -186,6 +188,17 @@ public class MagnificationOneFingerPanningPreferenceControllerTest {
assertThat(mSwitchPreference.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);
}
private String enabledSummary() { private String enabledSummary() {
return mContext.getString( return mContext.getString(
R.string.accessibility_magnification_one_finger_panning_summary_on); R.string.accessibility_magnification_one_finger_panning_summary_on);

View File

@@ -32,7 +32,6 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreferenceCompat;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
@@ -97,7 +96,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest {
verify(mFooterBarMixin).setPrimaryButton(any()); verify(mFooterBarMixin).setPrimaryButton(any());
assertThat(mFragment.mTopIntroPreference.isVisible()).isFalse(); assertThat(mFragment.mTopIntroPreference.isVisible()).isFalse();
assertThat(mFragment.mSettingsPreference.isVisible()).isFalse(); assertThat(mFragment.mSettingsPreference.isVisible()).isFalse();
assertThat(mFragment.mFollowingTypingSwitchPreference.isVisible()).isFalse();
} }
@Test @Test
@@ -124,7 +122,6 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizardTest {
mPreferenceManager.setPreferences(mPreferenceManager.createPreferenceScreen(context)); mPreferenceManager.setPreferences(mPreferenceManager.createPreferenceScreen(context));
mTopIntroPreference = new TopIntroPreference(context); mTopIntroPreference = new TopIntroPreference(context);
mSettingsPreference = new Preference(context); mSettingsPreference = new Preference(context);
mFollowingTypingSwitchPreference = new SwitchPreferenceCompat(context);
} }
@Override @Override