Merge "Hide a11y usage when there is no enabled a11y service"

This commit is contained in:
TreeHugger Robot
2019-09-20 10:54:36 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 14 deletions

View File

@@ -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;

View File

@@ -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();
}
} }