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
This commit is contained in:
menghanli
2021-08-26 10:00:22 +08:00
parent f3155c03f0
commit d665ecb86d
2 changed files with 14 additions and 8 deletions

View File

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

View File

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