Merge "Create an empty color and motion screen with Catalyst Infra" into main
diff --git a/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java b/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
index d04b34a..f05b157 100644
--- a/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragment.java
@@ -61,6 +61,7 @@
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;
@@ -201,9 +202,14 @@
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;
}
@@ -219,10 +225,11 @@
);
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
diff --git a/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
index 414fe63..b3270e9 100644
--- a/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/shortcuts/EditShortcutsPreferenceFragmentTest.java
@@ -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;
@@ -45,6 +48,7 @@
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;
@@ -160,7 +164,7 @@
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);
@@ -199,6 +203,53 @@
}
@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());
for (Uri uri : SHORTCUT_SETTINGS) {
@@ -654,9 +705,14 @@
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,
@@ -664,7 +720,11 @@
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();
@@ -672,11 +732,7 @@
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);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java
index fcd1e42..7de69a7 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManager.java
@@ -24,6 +24,8 @@
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;
@@ -71,4 +73,14 @@
@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();
+ }
}