refactor(A11yFeedback): Rename AccessibilityMetricsFeatureProvider

The AccessibilityMetricsFeatureProvider currently provides page IDs
derived from component names, primarily for metrics purposes.
However, its functionality should be expanded to also support
feedback needs, not just metrics collection, by returning
appropriate settings enum values.

Bug: 393980229
Test: atest AccessibilityMetricsFeatureProviderGoogleImplTest
Flag: com.android.server.accessibility.enable_low_vision_generic_feedback
Change-Id: I2d64db866010ae5e3c6a9738f92860df3d0b86aa
This commit is contained in:
Menghan Li
2025-03-03 02:58:50 +00:00
parent 9ffca7cbfc
commit b511fe690b
10 changed files with 38 additions and 39 deletions

View File

@@ -127,14 +127,13 @@ public class AccessibilityActivityPreference extends RestrictedPreference {
final String htmlDescription = mA11yShortcutInfo.loadHtmlDescription(mPm); final String htmlDescription = mA11yShortcutInfo.loadHtmlDescription(mPm);
final String settingsClassName = mA11yShortcutInfo.getSettingsActivityName(); final String settingsClassName = mA11yShortcutInfo.getSettingsActivityName();
final String tileServiceClassName = mA11yShortcutInfo.getTileServiceName(); final String tileServiceClassName = mA11yShortcutInfo.getTileServiceName();
final int metricsCategory = FeatureFactory.getFeatureFactory() final int pageIdCategory = FeatureFactory.getFeatureFactory()
.getAccessibilityMetricsFeatureProvider() .getAccessibilityPageIdFeatureProvider().getCategory(mComponentName);
.getDownloadedFeatureMetricsCategory(mComponentName);
ThreadUtils.getUiThreadHandler().post(() -> { ThreadUtils.getUiThreadHandler().post(() -> {
RestrictedPreferenceHelper.putBasicExtras( RestrictedPreferenceHelper.putBasicExtras(
this, prefKey, getTitle(), intro, description, imageRes, this, prefKey, getTitle(), intro, description, imageRes,
htmlDescription, mComponentName, metricsCategory); htmlDescription, mComponentName, pageIdCategory);
RestrictedPreferenceHelper.putSettingsExtras(this, getPackageName(), settingsClassName); RestrictedPreferenceHelper.putSettingsExtras(this, getPackageName(), settingsClassName);
RestrictedPreferenceHelper.putTileServiceExtras( RestrictedPreferenceHelper.putTileServiceExtras(
this, getPackageName(), tileServiceClassName); this, getPackageName(), tileServiceClassName);

View File

@@ -228,11 +228,10 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment {
new ComponentName(packageName, tileServiceClassName).flattenToString()); new ComponentName(packageName, tileServiceClassName).flattenToString());
} }
final int metricsCategory = FeatureFactory.getFeatureFactory() final int pageIdCategory = FeatureFactory.getFeatureFactory()
.getAccessibilityMetricsFeatureProvider() .getAccessibilityPageIdFeatureProvider().getCategory(componentName);
.getDownloadedFeatureMetricsCategory(componentName); extras.putInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY, pageIdCategory);
extras.putInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY, metricsCategory); extras.putInt(AccessibilitySettings.EXTRA_FEEDBACK_CATEGORY, pageIdCategory);
extras.putInt(AccessibilitySettings.EXTRA_FEEDBACK_CATEGORY, metricsCategory);
extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName); extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes()); extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes());

View File

@@ -21,9 +21,9 @@ import android.content.ComponentName;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
/** /**
* Provider for Accessibility metrics related features. * Provider for Accessibility page id related features.
*/ */
public interface AccessibilityMetricsFeatureProvider { public interface AccessibilityPageIdFeatureProvider {
/** /**
* Returns {@link android.app.settings.SettingsEnums} value according to the {@code * Returns {@link android.app.settings.SettingsEnums} value according to the {@code
@@ -32,5 +32,5 @@ public interface AccessibilityMetricsFeatureProvider {
* @param componentName the component name of the downloaded service or activity * @param componentName the component name of the downloaded service or activity
* @return value in {@link android.app.settings.SettingsEnums} * @return value in {@link android.app.settings.SettingsEnums}
*/ */
int getDownloadedFeatureMetricsCategory(@Nullable ComponentName componentName); int getCategory(@Nullable ComponentName componentName);
} }

View File

@@ -19,14 +19,16 @@ package com.android.settings.accessibility;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import androidx.annotation.Nullable;
/** /**
* Provider implementation for Accessibility metrics related features. * Provider implementation for Accessibility page id related features.
*/ */
public class AccessibilityMetricsFeatureProviderImpl implements public class AccessibilityPageIdFeatureProviderImpl implements
AccessibilityMetricsFeatureProvider { AccessibilityPageIdFeatureProvider {
@Override @Override
public int getDownloadedFeatureMetricsCategory(ComponentName componentName) { public int getCategory(@Nullable ComponentName componentName) {
return SettingsEnums.ACCESSIBILITY_SERVICE; return SettingsEnums.ACCESSIBILITY_SERVICE;
} }
} }

View File

@@ -123,13 +123,12 @@ public class AccessibilityServicePreference extends RestrictedPreference {
final String settingsClassName = mA11yServiceInfo.getSettingsActivityName(); final String settingsClassName = mA11yServiceInfo.getSettingsActivityName();
final String tileServiceClassName = mA11yServiceInfo.getTileServiceName(); final String tileServiceClassName = mA11yServiceInfo.getTileServiceName();
final ResolveInfo resolveInfo = mA11yServiceInfo.getResolveInfo(); final ResolveInfo resolveInfo = mA11yServiceInfo.getResolveInfo();
final int metricsCategory = FeatureFactory.getFeatureFactory() final int pageIdCategory = FeatureFactory.getFeatureFactory()
.getAccessibilityMetricsFeatureProvider() .getAccessibilityPageIdFeatureProvider().getCategory(mComponentName);
.getDownloadedFeatureMetricsCategory(mComponentName);
ThreadUtils.getUiThreadHandler().post(() -> { ThreadUtils.getUiThreadHandler().post(() -> {
RestrictedPreferenceHelper.putBasicExtras( RestrictedPreferenceHelper.putBasicExtras(
this, prefKey, getTitle(), intro, description, imageRes, this, prefKey, getTitle(), intro, description, imageRes,
htmlDescription, mComponentName, metricsCategory); htmlDescription, mComponentName, pageIdCategory);
RestrictedPreferenceHelper.putServiceExtras(this, resolveInfo, mServiceEnabled); RestrictedPreferenceHelper.putServiceExtras(this, resolveInfo, mServiceEnabled);
RestrictedPreferenceHelper.putSettingsExtras(this, getPackageName(), settingsClassName); RestrictedPreferenceHelper.putSettingsExtras(this, getPackageName(), settingsClassName);
RestrictedPreferenceHelper.putTileServiceExtras( RestrictedPreferenceHelper.putTileServiceExtras(

View File

@@ -17,7 +17,7 @@ package com.android.settings.overlay
import android.content.Context import android.content.Context
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider
import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider import com.android.settings.accessibility.AccessibilityPageIdFeatureProvider
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
import com.android.settings.accounts.AccountFeatureProvider import com.android.settings.accounts.AccountFeatureProvider
import com.android.settings.applications.ApplicationFeatureProvider import com.android.settings.applications.ApplicationFeatureProvider
@@ -145,9 +145,9 @@ abstract class FeatureFactory {
abstract val accessibilitySearchFeatureProvider: AccessibilitySearchFeatureProvider abstract val accessibilitySearchFeatureProvider: AccessibilitySearchFeatureProvider
/** /**
* Retrieves implementation for Accessibility metrics category feature. * Retrieves implementation for Accessibility page id category feature.
*/ */
abstract val accessibilityMetricsFeatureProvider: AccessibilityMetricsFeatureProvider abstract val accessibilityPageIdFeatureProvider: AccessibilityPageIdFeatureProvider
/** /**
* Retrieves implementation for advanced vpn feature. * Retrieves implementation for advanced vpn feature.

View File

@@ -22,8 +22,8 @@ import android.net.VpnManager
import android.os.UserManager import android.os.UserManager
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProviderImpl import com.android.settings.accessibility.AccessibilityFeedbackFeatureProviderImpl
import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider import com.android.settings.accessibility.AccessibilityPageIdFeatureProvider
import com.android.settings.accessibility.AccessibilityMetricsFeatureProviderImpl import com.android.settings.accessibility.AccessibilityPageIdFeatureProviderImpl
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
import com.android.settings.accessibility.AccessibilitySearchFeatureProviderImpl import com.android.settings.accessibility.AccessibilitySearchFeatureProviderImpl
import com.android.settings.accounts.AccountFeatureProvider import com.android.settings.accounts.AccountFeatureProvider
@@ -174,8 +174,8 @@ open class FeatureFactoryImpl : FeatureFactory() {
AccessibilitySearchFeatureProviderImpl() AccessibilitySearchFeatureProviderImpl()
} }
override val accessibilityMetricsFeatureProvider: AccessibilityMetricsFeatureProvider by lazy { override val accessibilityPageIdFeatureProvider: AccessibilityPageIdFeatureProvider by lazy {
AccessibilityMetricsFeatureProviderImpl() AccessibilityPageIdFeatureProviderImpl()
} }
override val advancedVpnFeatureProvider by lazy { AdvancedVpnFeatureProviderImpl() } override val advancedVpnFeatureProvider by lazy { AdvancedVpnFeatureProviderImpl() }

View File

@@ -20,7 +20,7 @@ import static org.mockito.Mockito.mock;
import android.content.Context; import android.content.Context;
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider; import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider;
import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider; import com.android.settings.accessibility.AccessibilityPageIdFeatureProvider;
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider; import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider; import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.ApplicationFeatureProvider;
@@ -94,7 +94,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public WifiTrackerLibProvider wifiTrackerLibProvider; public WifiTrackerLibProvider wifiTrackerLibProvider;
public SecuritySettingsFeatureProvider securitySettingsFeatureProvider; public SecuritySettingsFeatureProvider securitySettingsFeatureProvider;
public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider; public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
public AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider; public AccessibilityPageIdFeatureProvider mAccessibilityPageIdFeatureProvider;
public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider; public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
public WifiFeatureProvider mWifiFeatureProvider; public WifiFeatureProvider mWifiFeatureProvider;
public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider; public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider;
@@ -145,7 +145,7 @@ public class FakeFeatureFactory extends FeatureFactory {
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class); wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class); securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class); mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class);
mAccessibilityMetricsFeatureProvider = mock(AccessibilityMetricsFeatureProvider.class); mAccessibilityPageIdFeatureProvider = mock(AccessibilityPageIdFeatureProvider.class);
mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class); mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class);
mWifiFeatureProvider = mock(WifiFeatureProvider.class); mWifiFeatureProvider = mock(WifiFeatureProvider.class);
mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class); mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class);
@@ -294,8 +294,8 @@ public class FakeFeatureFactory extends FeatureFactory {
} }
@Override @Override
public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() { public AccessibilityPageIdFeatureProvider getAccessibilityPageIdFeatureProvider() {
return mAccessibilityMetricsFeatureProvider; return mAccessibilityPageIdFeatureProvider;
} }
@Override @Override

View File

@@ -18,7 +18,7 @@ package com.android.settings.testutils
import android.content.Context import android.content.Context
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider
import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider import com.android.settings.accessibility.AccessibilityPageIdFeatureProvider
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
import com.android.settings.accounts.AccountFeatureProvider import com.android.settings.accounts.AccountFeatureProvider
import com.android.settings.applications.ApplicationFeatureProvider import com.android.settings.applications.ApplicationFeatureProvider
@@ -130,7 +130,7 @@ class FakeFeatureFactory : FeatureFactory() {
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")
override val accessibilitySearchFeatureProvider: AccessibilitySearchFeatureProvider override val accessibilitySearchFeatureProvider: AccessibilitySearchFeatureProvider
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")
override val accessibilityMetricsFeatureProvider: AccessibilityMetricsFeatureProvider override val accessibilityPageIdFeatureProvider: AccessibilityPageIdFeatureProvider
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")
override val advancedVpnFeatureProvider: AdvancedVpnFeatureProvider override val advancedVpnFeatureProvider: AdvancedVpnFeatureProvider
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")

View File

@@ -20,7 +20,7 @@ import static org.mockito.Mockito.mock;
import android.content.Context; import android.content.Context;
import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider; import com.android.settings.accessibility.AccessibilityFeedbackFeatureProvider;
import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider; import com.android.settings.accessibility.AccessibilityPageIdFeatureProvider;
import com.android.settings.accessibility.AccessibilitySearchFeatureProvider; import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
import com.android.settings.accounts.AccountFeatureProvider; import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.ApplicationFeatureProvider;
@@ -93,7 +93,7 @@ public class FakeFeatureFactory extends FeatureFactory {
public WifiTrackerLibProvider wifiTrackerLibProvider; public WifiTrackerLibProvider wifiTrackerLibProvider;
public SecuritySettingsFeatureProvider securitySettingsFeatureProvider; public SecuritySettingsFeatureProvider securitySettingsFeatureProvider;
public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider; public AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
public AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider; public AccessibilityPageIdFeatureProvider mAccessibilityPageIdFeatureProvider;
public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider; public AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
public WifiFeatureProvider mWifiFeatureProvider; public WifiFeatureProvider mWifiFeatureProvider;
public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider; public KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider;
@@ -146,7 +146,7 @@ public class FakeFeatureFactory extends FeatureFactory {
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class); wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class); securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class); mAccessibilitySearchFeatureProvider = mock(AccessibilitySearchFeatureProvider.class);
mAccessibilityMetricsFeatureProvider = mock(AccessibilityMetricsFeatureProvider.class); mAccessibilityPageIdFeatureProvider = mock(AccessibilityPageIdFeatureProvider.class);
mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class); mAdvancedVpnFeatureProvider = mock(AdvancedVpnFeatureProvider.class);
mWifiFeatureProvider = mock(WifiFeatureProvider.class); mWifiFeatureProvider = mock(WifiFeatureProvider.class);
mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class); mKeyboardSettingsFeatureProvider = mock(KeyboardSettingsFeatureProvider.class);
@@ -295,8 +295,8 @@ public class FakeFeatureFactory extends FeatureFactory {
} }
@Override @Override
public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() { public AccessibilityPageIdFeatureProvider getAccessibilityPageIdFeatureProvider() {
return mAccessibilityMetricsFeatureProvider; return mAccessibilityPageIdFeatureProvider;
} }
@Override @Override