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;
|
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) {
|
public AccessibilityUsagePreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
|
mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
|
||||||
final AccessibilityManager accessibilityManager = context.getSystemService(
|
mEnabledServiceInfos = mAccessibilityManager.getEnabledAccessibilityServiceList(
|
||||||
AccessibilityManager.class);
|
|
||||||
mEnabledServiceInfos = accessibilityManager.getEnabledAccessibilityServiceList(
|
|
||||||
AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
|
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
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return mEnabledServiceInfos.isEmpty() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
|
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.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.provider.DeviceConfig;
|
|
||||||
import android.view.accessibility.AccessibilityManager;
|
import android.view.accessibility.AccessibilityManager;
|
||||||
|
|
||||||
import com.android.settings.Utils;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
|
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -65,10 +66,8 @@ public class AccessibilityUsagePreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_noEnabledServices_shouldReturnUnsupported() {
|
public void getAvailabilityStatus_noEnabledServices_shouldReturnUnsupported() {
|
||||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
|
||||||
Utils.PROPERTY_PERMISSIONS_HUB_ENABLED, "true", true);
|
|
||||||
mAccessibilityManager.setEnabledAccessibilityServiceList(new ArrayList<>());
|
mAccessibilityManager.setEnabledAccessibilityServiceList(new ArrayList<>());
|
||||||
AccessibilityUsagePreferenceController controller =
|
final AccessibilityUsagePreferenceController controller =
|
||||||
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
@@ -76,13 +75,24 @@ public class AccessibilityUsagePreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_enabledServices_shouldReturnAvailable() {
|
public void getAvailabilityStatus_enabledServices_shouldReturnAvailable() {
|
||||||
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
|
||||||
Utils.PROPERTY_PERMISSIONS_HUB_ENABLED, "false", true);
|
|
||||||
mAccessibilityManager.setEnabledAccessibilityServiceList(
|
mAccessibilityManager.setEnabledAccessibilityServiceList(
|
||||||
new ArrayList<>(Arrays.asList(new AccessibilityServiceInfo())));
|
new ArrayList<>(Arrays.asList(new AccessibilityServiceInfo())));
|
||||||
AccessibilityUsagePreferenceController controller =
|
final AccessibilityUsagePreferenceController controller =
|
||||||
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
new AccessibilityUsagePreferenceController(mContext, "test_key");
|
||||||
|
|
||||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
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