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

Commit 6be0ccff authored by Menghan Li's avatar Menghan Li
Browse files

feat(DaLink): Add entry point in top-level a11y settings

Bug: 419387108
Test: atest BaseSupportFragmentTest
Flag: com.android.settings.accessibility.enable_disability_support
Change-Id: I13b10deb5d320b3d19e06a0612bbbf9663698c63
parent af478cbf
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -187,6 +187,12 @@ public class AccessibilitySettings extends BaseSupportFragment implements
        return SettingsEnums.ACCESSIBILITY;
    }

    @Override
    protected String getDisabilitySupportUrl() {
        // TODO(b/419387108): Use FeatureProvider to give URI customization
        return "https://support.google.com/accessibility?p=android-A11Y_setting";
    }

    @Override
    public int getHelpResource() {
        return R.string.help_uri_accessibility;
+22 −3
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.server.accessibility.Flags;
import com.android.settings.accessibility.actionbar.DisabilitySupportMenuController;
import com.android.settings.accessibility.actionbar.FeedbackMenuController;
import com.android.settings.accessibility.actionbar.SurveyMenuController;
import com.android.settings.dashboard.DashboardFragment;
@@ -39,7 +39,8 @@ import com.android.settings.overlay.SurveyFeatureProvider;
 * Base fragment for dashboard style UI containing support-related items.
 *
 * <p>Child classes <strong>must</strong> configure the mapping between {@link SettingsEnums} page
 * IDs and feedback bucket IDs from {@link AccessibilityFeedbackFeatureProvider}.
 * IDs, feedback bucket IDs from {@link AccessibilityFeedbackFeatureProvider}, and disability
 * support.
 */
public abstract class BaseSupportFragment extends DashboardFragment {

@@ -48,9 +49,13 @@ public abstract class BaseSupportFragment extends DashboardFragment {
        super.onCreate(savedInstanceState);
        handleFeedbackFlow();

        if (Flags.enableLowVisionHats()) {
        if (com.android.server.accessibility.Flags.enableLowVisionHats()) {
            handleSurveyFlow();
        }

        if (com.android.settings.accessibility.Flags.enableDisabilitySupport()) {
            handleDisabilitySupportFlow();
        }
    }

    /**
@@ -86,6 +91,11 @@ public abstract class BaseSupportFragment extends DashboardFragment {
        return "";
    }

    @NonNull
    protected String getDisabilitySupportUrl() {
        return "";
    }

    private void handleSurveyFlow() {
        final Context context = getActivity();
        if (context == null) {
@@ -121,4 +131,13 @@ public abstract class BaseSupportFragment extends DashboardFragment {

        FeedbackMenuController.init(this, feedbackCategory);
    }

    private void handleDisabilitySupportFlow() {
        final String disabilitySupportUrl = getDisabilitySupportUrl();
        if (TextUtils.isEmpty(disabilitySupportUrl)) {
            return;
        }

        DisabilitySupportMenuController.init(this, disabilitySupportUrl);
    }
}
+37 −7
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ import androidx.fragment.app.testing.EmptyFragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.rules.ActivityScenarioRule;

import com.android.server.accessibility.Flags;
import com.android.settings.accessibility.actionbar.DisabilitySupportMenuController;
import com.android.settings.accessibility.actionbar.FeedbackMenuController;
import com.android.settings.accessibility.actionbar.SurveyMenuController;
import com.android.settings.overlay.SurveyFeatureProvider;
@@ -72,6 +72,7 @@ public class BaseSupportFragmentTest {
            new ActivityScenarioRule<>(EmptyFragmentActivity.class);

    private static final String PLACEHOLDER_SURVEY_KEY = "survey_key";
    private static final String PLACEHOLDER_DISABILITY_SUPPORT_URL = "http://example.com/support";

    private final Context mContext = ApplicationProvider.getApplicationContext();

@@ -147,9 +148,38 @@ public class BaseSupportFragmentTest {
        verify(mLifecycle).addObserver(any(FeedbackMenuController.class));
    }

    @Test
    @EnableFlags(com.android.settings.accessibility.Flags.FLAG_ENABLE_DISABILITY_SUPPORT)
    public void handleDisabilitySupportFlow_disabilitySupportUrlNotEmpty_shouldAttachToLifecycle() {
        when(mHost.getDisabilitySupportUrl()).thenReturn(PLACEHOLDER_DISABILITY_SUPPORT_URL);

        mHost.onCreate(/* savedInstanceState= */ null);

        verify(mLifecycle).addObserver(any(DisabilitySupportMenuController.class));
    }

    @Test
    @EnableFlags(com.android.settings.accessibility.Flags.FLAG_ENABLE_DISABILITY_SUPPORT)
    public void handleDisabilitySupportFlow_disabilitySupportUrlEmpty_shouldNotAttachToLifecycle() {
        when(mHost.getDisabilitySupportUrl()).thenReturn("");

        mHost.onCreate(/* savedInstanceState= */ null);

        verify(mLifecycle, never()).addObserver(any(DisabilitySupportMenuController.class));
    }

    @Test
    @DisableFlags(com.android.settings.accessibility.Flags.FLAG_ENABLE_DISABILITY_SUPPORT)
    public void handleDisabilitySupportFlow_disableDisabilitySupport_shouldNotAttachToLifecycle() {
        when(mHost.getDisabilitySupportUrl()).thenReturn(PLACEHOLDER_DISABILITY_SUPPORT_URL);

        mHost.onCreate(/* savedInstanceState= */ null);

        verify(mLifecycle, never()).addObserver(any(DisabilitySupportMenuController.class));
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_surveyKeyEmpty_shouldNotAttachToLifecycle() {
        when(mHost.getSurveyKey()).thenReturn(/* value= */ "");

@@ -159,7 +189,7 @@ public class BaseSupportFragmentTest {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_surveyKeyNotEmpty_shouldAttachToLifecycle() {
        when(mHost.getSurveyKey()).thenReturn(PLACEHOLDER_SURVEY_KEY);

@@ -169,7 +199,7 @@ public class BaseSupportFragmentTest {
    }

    @Test
    @DisableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_disableHaTS_surveyKeyNotEmpty_shouldNotAttachToLifecycle() {
        when(mHost.getSurveyKey()).thenReturn(PLACEHOLDER_SURVEY_KEY);

@@ -179,7 +209,7 @@ public class BaseSupportFragmentTest {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_isStartSurveyIntentTrue_shouldStartSurvey() {
        final SurveyFeatureProvider surveyFeatureProvider =
                FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);
@@ -194,7 +224,7 @@ public class BaseSupportFragmentTest {
    }

    @Test
    @DisableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @DisableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_disableHaTS_isStartSurveyIntentTrue_shouldNotStartSurvey() {
        final SurveyFeatureProvider surveyFeatureProvider =
                FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);
@@ -209,7 +239,7 @@ public class BaseSupportFragmentTest {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_LOW_VISION_HATS)
    @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_LOW_VISION_HATS)
    public void handleSurveyFlow_isStartSurveyIntentFalse_shouldNotStartSurvey() {
        final SurveyFeatureProvider surveyFeatureProvider =
                FakeFeatureFactory.setupForTest().getSurveyFeatureProvider(mContext);