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.R;
|
||||||
import com.android.settings.SetupWizardUtils;
|
import com.android.settings.SetupWizardUtils;
|
||||||
import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
|
import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
|
||||||
|
import com.android.settings.accessibility.Flags;
|
||||||
import com.android.settings.accessibility.PreferredShortcuts;
|
import com.android.settings.accessibility.PreferredShortcuts;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
@@ -201,9 +202,14 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment {
|
|||||||
super.onCreatePreferences(savedInstanceState, rootKey);
|
super.onCreatePreferences(savedInstanceState, rootKey);
|
||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
final Preference descriptionPref = findPreference(getString(
|
||||||
|
R.string.accessibility_shortcut_description_pref));
|
||||||
|
|
||||||
if (!activity.getIntent().getAction().equals(
|
if (!activity.getIntent().getAction().equals(
|
||||||
Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS)) {
|
Settings.ACTION_ACCESSIBILITY_SHORTCUT_SETTINGS)) {
|
||||||
|
if (Flags.toggleFeatureFragmentCollectionInfo()) {
|
||||||
|
descriptionPref.setVisible(false);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,10 +225,11 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment {
|
|||||||
);
|
);
|
||||||
|
|
||||||
activity.setTitle(titles.first);
|
activity.setTitle(titles.first);
|
||||||
|
if (titles.second != null || !Flags.toggleFeatureFragmentCollectionInfo()) {
|
||||||
String screenDescriptionPrefKey = getString(
|
descriptionPref.setSummary(titles.second);
|
||||||
R.string.accessibility_shortcut_description_pref);
|
} else {
|
||||||
findPreference(screenDescriptionPrefKey).setSummary(titles.second);
|
descriptionPref.setVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|||||||
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.accessibility.shortcuts;
|
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_COMPONENT_NAME;
|
||||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
|
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
|
||||||
import static com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType.SOFTWARE;
|
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.AccessibilityManager;
|
||||||
import android.view.accessibility.Flags;
|
import android.view.accessibility.Flags;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.testing.FragmentScenario;
|
import androidx.fragment.app.testing.FragmentScenario;
|
||||||
import androidx.lifecycle.Lifecycle;
|
import androidx.lifecycle.Lifecycle;
|
||||||
@@ -160,7 +164,7 @@ public class EditShortcutsPreferenceFragmentTest {
|
|||||||
public void showEditShortcutScreen_inSuw_launchSubSettingWithSuw() {
|
public void showEditShortcutScreen_inSuw_launchSubSettingWithSuw() {
|
||||||
EditShortcutsPreferenceFragment.showEditShortcutScreen(
|
EditShortcutsPreferenceFragment.showEditShortcutScreen(
|
||||||
mActivity, METRICS_CATEGORY, SCREEN_TITLE,
|
mActivity, METRICS_CATEGORY, SCREEN_TITLE,
|
||||||
TARGET_FAKE_COMPONENT, createSuwIntent(new Intent(), /* isInSuw= */ true));
|
TARGET_FAKE_COMPONENT, setIntentInSuw(new Intent(), /* isInSuw= */ true));
|
||||||
|
|
||||||
assertLaunchSubSettingWithCurrentTargetComponents(
|
assertLaunchSubSettingWithCurrentTargetComponents(
|
||||||
TARGET_FAKE_COMPONENT.flattenToString(), /* isInSuw= */ true);
|
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
|
@Test
|
||||||
public void fragmentCreated_settingsObserversAreRegistered() {
|
public void fragmentCreated_settingsObserversAreRegistered() {
|
||||||
ShadowContentResolver contentResolver = shadowOf(mContext.getContentResolver());
|
ShadowContentResolver contentResolver = shadowOf(mContext.getContentResolver());
|
||||||
@@ -654,9 +705,14 @@ public class EditShortcutsPreferenceFragmentTest {
|
|||||||
|
|
||||||
private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario(
|
private FragmentScenario<EditShortcutsPreferenceFragment> createFragScenario(
|
||||||
boolean isInSuw, String target) {
|
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();
|
Bundle args = new Bundle();
|
||||||
args.putStringArray(
|
args.putStringArray(
|
||||||
EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS, new String[]{target});
|
EditShortcutsPreferenceFragment.ARG_KEY_SHORTCUT_TARGETS,
|
||||||
|
targets.toArray(new String[0]));
|
||||||
FragmentScenario<EditShortcutsPreferenceFragment> scenario =
|
FragmentScenario<EditShortcutsPreferenceFragment> scenario =
|
||||||
FragmentScenario.launch(
|
FragmentScenario.launch(
|
||||||
EditShortcutsPreferenceFragment.class, args,
|
EditShortcutsPreferenceFragment.class, args,
|
||||||
@@ -664,7 +720,11 @@ public class EditShortcutsPreferenceFragmentTest {
|
|||||||
scenario.onFragment(fragment -> {
|
scenario.onFragment(fragment -> {
|
||||||
Intent intent = fragment.requireActivity().getIntent();
|
Intent intent = fragment.requireActivity().getIntent();
|
||||||
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, SCREEN_TITLE);
|
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
|
// Since the fragment is attached before we have a chance
|
||||||
// to modify the activity's intent; initialize controllers again
|
// to modify the activity's intent; initialize controllers again
|
||||||
fragment.initializePreferenceControllerArguments();
|
fragment.initializePreferenceControllerArguments();
|
||||||
@@ -672,11 +732,7 @@ public class EditShortcutsPreferenceFragmentTest {
|
|||||||
return scenario;
|
return scenario;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent createSuwIntent(Intent intent, boolean isInSuw) {
|
private Intent setIntentInSuw(Intent intent, boolean isInSuw) {
|
||||||
|
|
||||||
if (intent == null) {
|
|
||||||
intent = new Intent();
|
|
||||||
}
|
|
||||||
intent.putExtra(EXTRA_IS_SETUP_FLOW, isInSuw);
|
intent.putExtra(EXTRA_IS_SETUP_FLOW, isInSuw);
|
||||||
intent.putExtra(EXTRA_IS_FIRST_RUN, isInSuw);
|
intent.putExtra(EXTRA_IS_FIRST_RUN, isInSuw);
|
||||||
intent.putExtra(EXTRA_IS_PRE_DEFERRED_SETUP, isInSuw);
|
intent.putExtra(EXTRA_IS_PRE_DEFERRED_SETUP, isInSuw);
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import android.content.Context;
|
|||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.view.accessibility.AccessibilityManager;
|
import android.view.accessibility.AccessibilityManager;
|
||||||
|
|
||||||
|
import com.android.internal.accessibility.common.ShortcutConstants;
|
||||||
|
|
||||||
import org.robolectric.annotation.Implementation;
|
import org.robolectric.annotation.Implementation;
|
||||||
import org.robolectric.annotation.Implements;
|
import org.robolectric.annotation.Implements;
|
||||||
|
|
||||||
@@ -71,4 +73,14 @@ public class ShadowAccessibilityManager extends org.robolectric.shadows.ShadowAc
|
|||||||
@NonNull List<AccessibilityShortcutInfo> installedAccessibilityShortcutList) {
|
@NonNull List<AccessibilityShortcutInfo> installedAccessibilityShortcutList) {
|
||||||
mInstalledAccessibilityShortcutList = 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