Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4421cff8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents ba664a7c 12155084
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -31,15 +31,26 @@ import java.util.List;

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);
        mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
        mEnabledServiceInfos = mAccessibilityManager.getEnabledAccessibilityServiceList(
                AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
    }

        final AccessibilityManager accessibilityManager = context.getSystemService(
                AccessibilityManager.class);
        mEnabledServiceInfos = accessibilityManager.getEnabledAccessibilityServiceList(
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        mEnabledServiceInfos = mAccessibilityManager.getEnabledAccessibilityServiceList(
                AccessibilityServiceInfo.FEEDBACK_ALL_MASK);

        if (mEnabledServiceInfos.isEmpty()) {
            preference.setVisible(false);
        }
    }

    @Override
+18 −8
Original line number Diff line number Diff line
@@ -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();
    }
}