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

Commit 426e781f authored by menghanli's avatar menghanli
Browse files

Accessibility framework & Settings to support the Android accessibility intro & footer

- Implements a TopIntroPreference into the Accessibility Settings base fragment.
- Creates a protected API or variable to provide content to support if needed.

Bug: 218407398
Test: make RunSettingsRoboTests ROBOTEST_FILTER=ToggleFeaturePreferenceFragmentTest
Change-Id: Id0f7700bb8f62960951913db8bd034fce1b15a90
parent d920ad50
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@ import com.android.settings.widget.SettingsMainSwitchPreference;
import com.android.settingslib.accessibility.AccessibilityUtils;
import com.android.settingslib.accessibility.AccessibilityUtils;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.IllustrationPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
import com.android.settingslib.widget.TopIntroPreference;


import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupcompat.util.WizardManagerHelper;


@@ -92,8 +93,10 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
    protected Uri mImageUri;
    protected Uri mImageUri;
    private CharSequence mDescription;
    private CharSequence mDescription;
    protected CharSequence mHtmlDescription;
    protected CharSequence mHtmlDescription;
    protected CharSequence mTopIntroTitle;


    private static final String DRAWABLE_FOLDER = "drawable";
    private static final String DRAWABLE_FOLDER = "drawable";
    protected static final String KEY_TOP_INTRO_PREFERENCE = "top_intro";
    protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service";
    protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service";
    public static final String KEY_GENERAL_CATEGORY = "general_categories";
    public static final String KEY_GENERAL_CATEGORY = "general_categories";
    protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description";
    protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description";
@@ -182,6 +185,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
        // Need to be called as early as possible. Protected variables will be assigned here.
        // Need to be called as early as possible. Protected variables will be assigned here.
        onProcessArguments(getArguments());
        onProcessArguments(getArguments());


        initTopIntroPreference();
        initAnimatedImagePreference();
        initAnimatedImagePreference();
        initToggleServiceSwitchPreference();
        initToggleServiceSwitchPreference();
        initGeneralCategory();
        initGeneralCategory();
@@ -393,6 +397,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
    /** Customizes the order by preference key. */
    /** Customizes the order by preference key. */
    protected List<String> getPreferenceOrderList() {
    protected List<String> getPreferenceOrderList() {
        final List<String> lists = new ArrayList<>();
        final List<String> lists = new ArrayList<>();
        lists.add(KEY_TOP_INTRO_PREFERENCE);
        lists.add(KEY_ANIMATED_IMAGE);
        lists.add(KEY_ANIMATED_IMAGE);
        lists.add(KEY_USE_SERVICE_PREFERENCE);
        lists.add(KEY_USE_SERVICE_PREFERENCE);
        lists.add(KEY_GENERAL_CATEGORY);
        lists.add(KEY_GENERAL_CATEGORY);
@@ -461,6 +466,17 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
        getPreferenceScreen().addPreference(illustrationPreference);
        getPreferenceScreen().addPreference(illustrationPreference);
    }
    }


    @VisibleForTesting
    void initTopIntroPreference() {
        if (TextUtils.isEmpty(mTopIntroTitle)) {
            return;
        }
        final TopIntroPreference topIntroPreference = new TopIntroPreference(getPrefContext());
        topIntroPreference.setKey(KEY_TOP_INTRO_PREFERENCE);
        topIntroPreference.setTitle(mTopIntroTitle);
        getPreferenceScreen().addPreference(topIntroPreference);
    }

    private void initToggleServiceSwitchPreference() {
    private void initToggleServiceSwitchPreference() {
        mToggleServiceSwitchPreference = new SettingsMainSwitchPreference(getPrefContext());
        mToggleServiceSwitchPreference = new SettingsMainSwitchPreference(getPrefContext());
        mToggleServiceSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE);
        mToggleServiceSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE);
+19 −0
Original line number Original line Diff line number Diff line
@@ -51,6 +51,7 @@ import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType;
import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settingslib.widget.TopIntroPreference;


import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
@@ -81,6 +82,7 @@ public class ToggleFeaturePreferenceFragmentTest {
    private static final String PLACEHOLDER_DIALOG_TITLE = "title";
    private static final String PLACEHOLDER_DIALOG_TITLE = "title";
    private static final String DEFAULT_SUMMARY = "default summary";
    private static final String DEFAULT_SUMMARY = "default summary";
    private static final String DEFAULT_DESCRIPTION = "default description";
    private static final String DEFAULT_DESCRIPTION = "default description";
    private static final String DEFAULT_TOP_INTRO = "default top intro";


    private static final String SOFTWARE_SHORTCUT_KEY =
    private static final String SOFTWARE_SHORTCUT_KEY =
            Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS;
            Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS;
@@ -293,6 +295,23 @@ public class ToggleFeaturePreferenceFragmentTest {
        assertThat(getLatestPopupWindow().isShowing()).isTrue();
        assertThat(getLatestPopupWindow().isShowing()).isTrue();
    }
    }


    @Test
    public void initTopIntroPreference_hasTopIntroTitle_shouldSetAsExpectedValue() {
        mFragment.mTopIntroTitle = DEFAULT_TOP_INTRO;
        mFragment.initTopIntroPreference();

        TopIntroPreference topIntroPreference =
                (TopIntroPreference) mFragment.getPreferenceScreen().getPreference(/* index= */ 0);
        assertThat(topIntroPreference.getTitle().toString()).isEqualTo(DEFAULT_TOP_INTRO);
    }

    @Test
    public void initTopIntroPreference_topIntroTitleIsNull_shouldNotAdded() {
        mFragment.initTopIntroPreference();

        assertThat(mFragment.getPreferenceScreen().getPreferenceCount()).isEqualTo(0);
    }

    @Test
    @Test
    public void createFooterPreference_shouldSetAsExpectedValue() {
    public void createFooterPreference_shouldSetAsExpectedValue() {
        mFragment.createFooterPreference(mFragment.getPreferenceScreen(),
        mFragment.createFooterPreference(mFragment.getPreferenceScreen(),