Merge "Hides the Edit Shortcut top preference when empty." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
29641287d8
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
@@ -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.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;
|
||||
@@ -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);
|
||||
@@ -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());
|
||||
@@ -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,
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
|
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user