Loading src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java +11 −4 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import com.android.internal.accessibility.dialog.AccessibilityTargetHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; import com.android.settings.accessibility.AccessibilitySetupWizardUtils; import com.android.settings.accessibility.Flags; import com.android.settings.accessibility.PreferredShortcuts; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; Loading Loading @@ -201,9 +202,14 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment { super.onCreatePreferences(savedInstanceState, rootKey); Activity activity = getActivity(); final Preference descriptionPref = findPreference(getString( R.string.accessibility_shortcut_description_pref)); if (!activity.getIntent().getAction().equals( Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS)) { if (Flags.toggleFeatureFragmentCollectionInfo()) { descriptionPref.setVisible(false); } return; } Loading @@ -219,10 +225,11 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment { ); activity.setTitle(titles.first); String screenDescriptionPrefKey = getString( R.string.accessibility_shortcut_description_pref); findPreference(screenDescriptionPrefKey).setSummary(titles.second); if (titles.second != null || !Flags.toggleFeatureFragmentCollectionInfo()) { descriptionPref.setSummary(titles.second); } else { descriptionPref.setVisible(false); } } @NonNull Loading tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java +64 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.settings.accessibility.shortcuts; import static android.provider.Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS; import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME; import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.SOFTWARE; Loading Loading @@ -45,6 +48,7 @@ import android.util.Pair; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.Flags; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.testing.FragmentScenario; import androidx.lifecycle.Lifecycle; Loading Loading @@ -160,7 +164,7 @@ public class EditShortcutsPreferenceFragmentTest { public void showEditShortcutScreen_inSuw_launchSubSettingWithSuw() { EditShortcutsPreferenceFragment.showEditShortcutScreen( mActivity, METRICS_CATEGORY, SCREEN_TITLE, TARGET_FAKE_COMPONENT, createSuwIntent(new Intent(), /* isInSuw= */ true)); TARGET_FAKE_COMPONENT, setIntentInSuw(new Intent(), /* isInSuw= */ true)); assertLaunchSubSettingWithCurrentTargetComponents( TARGET_FAKE_COMPONENT.flattenToString(), /* isInSuw= */ true); Loading Loading @@ -198,6 +202,53 @@ public class EditShortcutsPreferenceFragmentTest { }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_defaultLaunch_notVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, TARGET); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isFalse(); }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_launchFromAction_singleTarget_notVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, List.of(TARGET), ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isFalse(); }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_launchFromAction_multipleTargets_isVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, // Both of these components are system components with known labels, so we don't // need to mock AccessibilityManager with fake labels. List.of(TARGET, DALTONIZER_COMPONENT_NAME.flattenToString()), ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isTrue(); }); } @Test public void fragmentCreated_settingsObserversAreRegistered() { ShadowContentResolver contentResolver = shadowOf(mContext.getContentResolver()); Loading Loading @@ -654,9 +705,14 @@ public class EditShortcutsPreferenceFragmentTest { private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario( boolean isInSuw, String target) { return createFragScenario(isInSuw, List.of(target), null); } private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario( boolean isInSuw, List<String> targets, @Nullable String intentAction) { Bundle args = new Bundle(); args.putStringArray( EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS, new String[]{target}); EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS, targets.toArray(new String[0])); FragmentScenario<EditShortcutsPreferenceFragment> scenario = FragmentScenario.launch( EditShortcutsPreferenceFragment.class, args, Loading @@ -664,7 +720,11 @@ public class EditShortcutsPreferenceFragmentTest { scenario.onFragment(fragment -> { Intent intent = fragment.requireActivity().getIntent(); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, SCREEN_TITLE); fragment.requireActivity().setIntent(createSuwIntent(intent, isInSuw)); setIntentInSuw(intent, isInSuw); if (intentAction != null) { intent.setAction(intentAction); } fragment.requireActivity().setIntent(intent); // Since the fragment is attached before we have a chance // to modify the activity's intent; initialize controllers again fragment.initializePreferenceControllerArguments(); Loading @@ -672,11 +732,7 @@ public class EditShortcutsPreferenceFragmentTest { return scenario; } private Intent createSuwIntent(Intent intent, boolean isInSuw) { if (intent == null) { intent = new Intent(); } private Intent setIntentInSuw(Intent intent, boolean isInSuw) { intent.putExtra(EXTRA_IS_SETUP_FLOW, isInSuw); intent.putExtra(EXTRA_IS_FIRST_RUN, isInSuw); intent.putExtra(EXTRA_IS_PRE_DEFERRED_SETUP, isInSuw); Loading tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java +12 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import android.content.Context; import android.util.ArrayMap; import android.view.accessibility.AccessibilityManager; import com.android.internal.accessibility.common.ShortcutConstants; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; Loading Loading @@ -71,4 +73,14 @@ public class ShadowAccessibilityManager extends org.robolectric.shadows.ShadowAc @NonNull List<AccessibilityShortcutInfo> installedAccessibilityShortcutList) { mInstalledAccessibilityShortcutList = installedAccessibilityShortcutList; } /** * Implements the hidden method * {@link AccessibilityManager#getAccessibilityShortcutTargets}. */ @Implementation public List<String> getAccessibilityShortcutTargets( @ShortcutConstants.UserShortcutType int shortcutType) { return List.of(); } } Loading
src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java +11 −4 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import com.android.internal.accessibility.dialog.AccessibilityTargetHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; import com.android.settings.accessibility.AccessibilitySetupWizardUtils; import com.android.settings.accessibility.Flags; import com.android.settings.accessibility.PreferredShortcuts; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; Loading Loading @@ -201,9 +202,14 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment { super.onCreatePreferences(savedInstanceState, rootKey); Activity activity = getActivity(); final Preference descriptionPref = findPreference(getString( R.string.accessibility_shortcut_description_pref)); if (!activity.getIntent().getAction().equals( Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS)) { if (Flags.toggleFeatureFragmentCollectionInfo()) { descriptionPref.setVisible(false); } return; } Loading @@ -219,10 +225,11 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment { ); activity.setTitle(titles.first); String screenDescriptionPrefKey = getString( R.string.accessibility_shortcut_description_pref); findPreference(screenDescriptionPrefKey).setSummary(titles.second); if (titles.second != null || !Flags.toggleFeatureFragmentCollectionInfo()) { descriptionPref.setSummary(titles.second); } else { descriptionPref.setVisible(false); } } @NonNull Loading
tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java +64 −8 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.settings.accessibility.shortcuts; import static android.provider.Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS; import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME; import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.SOFTWARE; Loading Loading @@ -45,6 +48,7 @@ import android.util.Pair; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.Flags; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.testing.FragmentScenario; import androidx.lifecycle.Lifecycle; Loading Loading @@ -160,7 +164,7 @@ public class EditShortcutsPreferenceFragmentTest { public void showEditShortcutScreen_inSuw_launchSubSettingWithSuw() { EditShortcutsPreferenceFragment.showEditShortcutScreen( mActivity, METRICS_CATEGORY, SCREEN_TITLE, TARGET_FAKE_COMPONENT, createSuwIntent(new Intent(), /* isInSuw= */ true)); TARGET_FAKE_COMPONENT, setIntentInSuw(new Intent(), /* isInSuw= */ true)); assertLaunchSubSettingWithCurrentTargetComponents( TARGET_FAKE_COMPONENT.flattenToString(), /* isInSuw= */ true); Loading Loading @@ -198,6 +202,53 @@ public class EditShortcutsPreferenceFragmentTest { }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_defaultLaunch_notVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, TARGET); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isFalse(); }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_launchFromAction_singleTarget_notVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, List.of(TARGET), ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isFalse(); }); } @Test @EnableFlags( com.android.settings.accessibility.Flags.FLAG_TOGGLE_FEATURE_FRAGMENT_COLLECTION_INFO) public void shortcutDescriptionPref_launchFromAction_multipleTargets_isVisible() { mFragmentScenario = createFragScenario(/* isInSuw= */ false, // Both of these components are system components with known labels, so we don't // need to mock AccessibilityManager with fake labels. List.of(TARGET, DALTONIZER_COMPONENT_NAME.flattenToString()), ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS); mFragmentScenario.moveToState(Lifecycle.State.CREATED); mFragmentScenario.onFragment(fragment -> { Preference preference = fragment.findPreference( mContext.getString(R.string.accessibility_shortcut_description_pref)); assertThat(preference.isVisible()).isTrue(); }); } @Test public void fragmentCreated_settingsObserversAreRegistered() { ShadowContentResolver contentResolver = shadowOf(mContext.getContentResolver()); Loading Loading @@ -654,9 +705,14 @@ public class EditShortcutsPreferenceFragmentTest { private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario( boolean isInSuw, String target) { return createFragScenario(isInSuw, List.of(target), null); } private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario( boolean isInSuw, List<String> targets, @Nullable String intentAction) { Bundle args = new Bundle(); args.putStringArray( EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS, new String[]{target}); EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS, targets.toArray(new String[0])); FragmentScenario<EditShortcutsPreferenceFragment> scenario = FragmentScenario.launch( EditShortcutsPreferenceFragment.class, args, Loading @@ -664,7 +720,11 @@ public class EditShortcutsPreferenceFragmentTest { scenario.onFragment(fragment -> { Intent intent = fragment.requireActivity().getIntent(); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, SCREEN_TITLE); fragment.requireActivity().setIntent(createSuwIntent(intent, isInSuw)); setIntentInSuw(intent, isInSuw); if (intentAction != null) { intent.setAction(intentAction); } fragment.requireActivity().setIntent(intent); // Since the fragment is attached before we have a chance // to modify the activity's intent; initialize controllers again fragment.initializePreferenceControllerArguments(); Loading @@ -672,11 +732,7 @@ public class EditShortcutsPreferenceFragmentTest { return scenario; } private Intent createSuwIntent(Intent intent, boolean isInSuw) { if (intent == null) { intent = new Intent(); } private Intent setIntentInSuw(Intent intent, boolean isInSuw) { intent.putExtra(EXTRA_IS_SETUP_FLOW, isInSuw); intent.putExtra(EXTRA_IS_FIRST_RUN, isInSuw); intent.putExtra(EXTRA_IS_PRE_DEFERRED_SETUP, isInSuw); Loading
tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java +12 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,8 @@ import android.content.Context; import android.util.ArrayMap; import android.view.accessibility.AccessibilityManager; import com.android.internal.accessibility.common.ShortcutConstants; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; Loading Loading @@ -71,4 +73,14 @@ public class ShadowAccessibilityManager extends org.robolectric.shadows.ShadowAc @NonNull List<AccessibilityShortcutInfo> installedAccessibilityShortcutList) { mInstalledAccessibilityShortcutList = installedAccessibilityShortcutList; } /** * Implements the hidden method * {@link AccessibilityManager#getAccessibilityShortcutTargets}. */ @Implementation public List<String> getAccessibilityShortcutTargets( @ShortcutConstants.UserShortcutType int shortcutType) { return List.of(); } }