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 settingsClassName = mA11yShortcutInfo.getSettingsActivityName();
final String tileServiceClassName = mA11yShortcutInfo.getTileServiceName();
final int metricsCategory = FeatureFactory.getFeatureFactory()
.getAccessibilityMetricsFeatureProvider()
.getDownloadedFeatureMetricsCategory(mComponentName);
final int pageIdCategory = FeatureFactory.getFeatureFactory()
.getAccessibilityPageIdFeatureProvider().getCategory(mComponentName);
ThreadUtils.getUiThreadHandler().post(() -> {
RestrictedPreferenceHelper.putBasicExtras(
this, prefKey, getTitle(), intro, description, imageRes,
htmlDescription, mComponentName, metricsCategory);
htmlDescription, mComponentName, pageIdCategory);
RestrictedPreferenceHelper.putSettingsExtras(this, getPackageName(), settingsClassName);
RestrictedPreferenceHelper.putTileServiceExtras(
this, getPackageName(), tileServiceClassName);

View File

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

View File

@@ -21,9 +21,9 @@ import android.content.ComponentName;
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
@@ -32,5 +32,5 @@ public interface AccessibilityMetricsFeatureProvider {
* @param componentName the component name of the downloaded service or activity
* @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.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
AccessibilityMetricsFeatureProvider {
public class AccessibilityPageIdFeatureProviderImpl implements
AccessibilityPageIdFeatureProvider {
@Override
public int getDownloadedFeatureMetricsCategory(ComponentName componentName) {
public int getCategory(@Nullable ComponentName componentName) {
return SettingsEnums.ACCESSIBILITY_SERVICE;
}
}

View File

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

View File

@@ -17,7 +17,7 @@ package com.android.settings.overlay
import android.content.Context
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.accounts.AccountFeatureProvider
import com.android.settings.applications.ApplicationFeatureProvider
@@ -145,9 +145,9 @@ abstract class FeatureFactory {
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.

View File

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

View File

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

View File

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

View File

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