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

Commit d665ecb8 authored by menghanli's avatar menghanli
Browse files

Fix null pointer issue of accesibility learn more button click event

Root cause: Some OEMs can not provide valid intent for help & feedback
Solution: Check the intent is vaild before show up the help strings

Bug: 197786797
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityFooterPreferenceControllerTest
Change-Id: I8103730ed48a343f7b72c16647f7e8047aee34b2
parent f3155c03
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -104,11 +104,17 @@ public class AccessibilityFooterPreferenceController extends BasePreferenceContr
        sb.append(getIntroductionTitle()).append("\n\n").append(footerPreference.getTitle());
        footerPreference.setContentDescription(sb);

        final Intent helpIntent;
        if (getHelpResource() != 0) {
            footerPreference.setLearnMoreAction(view -> {
                final Intent helpIntent = HelpUtils.getHelpIntent(
                        mContext, mContext.getString(getHelpResource()),
            // Returns may be null if content is wrong or empty.
            helpIntent = HelpUtils.getHelpIntent(mContext, mContext.getString(getHelpResource()),
                    mContext.getClass().getName());
        } else {
            helpIntent = null;
        }

        if (helpIntent != null) {
            footerPreference.setLearnMoreAction(view -> {
                view.startActivityForResult(helpIntent, 0);
            });
            footerPreference.setLearnMoreContentDescription(getLearnMoreContentDescription());
+5 −5
Original line number Diff line number Diff line
@@ -109,16 +109,16 @@ public class AccessibilityFooterPreferenceControllerTest {
    }

    @Test
    public void onBindViewHolder_setupHelpLink_setCorrectHelpLinkAndContentDescription() {
        mController.setupHelpLink(TEST_HELP_ID, TEST_CONTENT_DESCRIPTION);
    public void onBindViewHolder_setHelpResource_emptyString_notVisible() {
        mController.setupHelpLink(R.string.help_url_timeout, TEST_CONTENT_DESCRIPTION);
        mController.displayPreference(mScreen);

        mPreference.onBindViewHolder(mPreferenceViewHolder);

        final TextView learnMoreView = (TextView) mPreferenceViewHolder
                .findViewById(com.android.settingslib.R.id.settingslib_learn_more);
        assertThat(learnMoreView.getContentDescription().toString())
                .contains(TEST_CONTENT_DESCRIPTION);
        assertThat(mPreference.isLinkEnabled()).isTrue();
        assertThat(learnMoreView.getContentDescription()).isNull();
        assertThat(learnMoreView.getVisibility()).isEqualTo(View.GONE);
        assertThat(mPreference.isLinkEnabled()).isFalse();
    }
}