Merge "Hide a11y usage when there is no enabled a11y service"
This commit is contained in:
committed by
Android (Google) Code Review
commit
4421cff86f
@@ -29,19 +29,30 @@ import com.android.settings.core.BasePreferenceController;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class AccessibilityUsagePreferenceController extends BasePreferenceController {
|
||||
public class AccessibilityUsagePreferenceController extends BasePreferenceController {
|
||||
|
||||
private final @NonNull List<AccessibilityServiceInfo> mEnabledServiceInfos;
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
@NonNull
|
||||
private List<AccessibilityServiceInfo> mEnabledServiceInfos;
|
||||
|
||||
public AccessibilityUsagePreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
|
||||
final AccessibilityManager accessibilityManager = context.getSystemService(
|
||||
AccessibilityManager.class);
|
||||
mEnabledServiceInfos = accessibilityManager.getEnabledAccessibilityServiceList(
|
||||
mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
|
||||
mEnabledServiceInfos = mAccessibilityManager.getEnabledAccessibilityServiceList(
|
||||
AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
super.updateState(preference);
|
||||
mEnabledServiceInfos = mAccessibilityManager.getEnabledAccessibilityServiceList(
|
||||
AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
|
||||
|
||||
if (mEnabledServiceInfos.isEmpty()) {
|
||||
preference.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return mEnabledServiceInfos.isEmpty() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
|
||||
|
@@ -20,12 +20,13 @@ import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
||||
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.content.Context;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -65,10 +66,8 @@ public class AccessibilityUsagePreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_noEnabledServices_shouldReturnUnsupported() {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
||||
Utils.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true);
|
||||
mAccessibilityManager.setEnabledAccessibilityServiceList(new ArrayList<>());
|
||||
AccessibilityUsagePreferenceController controller =
|
||||
final AccessibilityUsagePreferenceController controller =
|
||||
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
||||
|
||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||
@@ -76,13 +75,24 @@ public class AccessibilityUsagePreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_enabledServices_shouldReturnAvailable() {
|
||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
||||
Utils.PROPERTY_PERMISSIONS_HUB_ENABLED, "false", true);
|
||||
mAccessibilityManager.setEnabledAccessibilityServiceList(
|
||||
new ArrayList<>(Arrays.asList(new AccessibilityServiceInfo())));
|
||||
AccessibilityUsagePreferenceController controller =
|
||||
final AccessibilityUsagePreferenceController controller =
|
||||
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
||||
|
||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_noEnabledServices_shouldHidePreference() {
|
||||
mAccessibilityManager.setEnabledAccessibilityServiceList(new ArrayList<>());
|
||||
final AccessibilityUsagePreferenceController controller =
|
||||
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
||||
final Preference preference = new Preference(mContext);
|
||||
preference.setVisible(true);
|
||||
|
||||
controller.updateState(preference);
|
||||
|
||||
assertThat(preference.isVisible()).isFalse();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user