Provide installed a11y services/activities from dynamicRawData for search

Bug: 354076686
Flag: com.android.settings.accessibility.fix_a11y_settings_search
Test: Search Project Relate and verify the item shows up in the search
result
Test: Search Talkback with keywords, verify the Talkback shows up in the
search result
Test: atest AccessibilitySettingsTest

Change-Id: I258ecb0928308b7cde30c12104408e11cc25ecd5
This commit is contained in:
Chun-Ku Lin
2024-09-11 19:05:37 +00:00
parent 06ab83eb50
commit 3f19805209
6 changed files with 140 additions and 7 deletions

View File

@@ -473,7 +473,7 @@ public class AccessibilitySettings extends DashboardFragment implements
* @param installedShortcutList A list of installed {@link AccessibilityShortcutInfo}s.
* @param installedServiceList A list of installed {@link AccessibilityServiceInfo}s.
*/
private List<RestrictedPreference> getInstalledAccessibilityPreferences(Context context,
private static List<RestrictedPreference> getInstalledAccessibilityPreferences(Context context,
List<AccessibilityShortcutInfo> installedShortcutList,
List<AccessibilityServiceInfo> installedServiceList) {
final RestrictedPreferenceHelper preferenceHelper = new RestrictedPreferenceHelper(context);
@@ -623,6 +623,51 @@ public class AccessibilitySettings extends DashboardFragment implements
.getAccessibilitySearchFeatureProvider().getSearchIndexableRawData(
context);
}
@Override
public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context,
boolean enabled) {
List<SearchIndexableRaw> dynamicRawData = super.getDynamicRawDataToIndex(
context, enabled);
if (dynamicRawData == null) {
dynamicRawData = new ArrayList<>();
}
if (!Flags.fixA11ySettingsSearch()) {
return dynamicRawData;
}
AccessibilityManager a11yManager = context.getSystemService(
AccessibilityManager.class);
AccessibilitySearchFeatureProvider a11ySearchFeatureProvider =
FeatureFactory.getFeatureFactory()
.getAccessibilitySearchFeatureProvider();
List<RestrictedPreference> installedA11yFeaturesPref =
AccessibilitySettings.getInstalledAccessibilityPreferences(
context,
a11yManager.getInstalledAccessibilityShortcutListAsUser(
context, UserHandle.myUserId()),
a11yManager.getInstalledAccessibilityServiceList()
);
for (RestrictedPreference pref : installedA11yFeaturesPref) {
SearchIndexableRaw indexableRaw = new SearchIndexableRaw(context);
indexableRaw.key = pref.getKey();
indexableRaw.title = pref.getTitle().toString();
@NonNull String synonyms = "";
if (pref instanceof AccessibilityServicePreference) {
synonyms = a11ySearchFeatureProvider.getSynonymsForComponent(
context,
((AccessibilityServicePreference) pref).getComponentName());
} else if (pref instanceof AccessibilityActivityPreference) {
synonyms = a11ySearchFeatureProvider.getSynonymsForComponent(
context,
((AccessibilityActivityPreference) pref).getComponentName());
}
indexableRaw.keywords = synonyms;
dynamicRawData.add(indexableRaw);
}
return dynamicRawData;
}
};
@Override