From f74c0a72b612d9efabbbf9d008086b865ceaebdc Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Fri, 17 Apr 2020 02:29:56 +0800 Subject: [PATCH] Show default description only if description and html description are empty * AccessibilitySettings only get the description to pass to the ToggleFeaturePreferenceFragment * ToggleFeaturePreferenceFragment handle the default description logic Bug: 154092127 Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.accessibility.AccessibilitySettingsTest" Change-Id: I516a393aeef1472ca5d185d477a2b0b108fc5342 --- .../accessibility/AccessibilitySettings.java | 13 ++++--------- .../ToggleFeaturePreferenceFragment.java | 17 +++++++++++++---- .../AccessibilitySettingsTest.java | 11 ----------- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 17750df75e6..3d47ca8dd8d 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -307,11 +307,7 @@ public class AccessibilitySettings extends DashboardFragment { return context.getText(R.string.accessibility_description_state_stopped); } - final String description = info.loadDescription(context.getPackageManager()); - - return TextUtils.isEmpty(description) - ? context.getText(R.string.accessibility_service_default_description) - : description; + return info.loadDescription(context.getPackageManager()); } static boolean isRampingRingerEnabled(final Context context) { @@ -460,7 +456,7 @@ public class AccessibilitySettings extends DashboardFragment { } /** - * Update the order of perferences in the category by matching their preference + * Update the order of preferences in the category by matching their preference * key with the string array of preference order which is defined in the xml. * * @param categoryKey The key of the category need to update the order @@ -708,10 +704,9 @@ public class AccessibilitySettings extends DashboardFragment { CharSequence title, CharSequence summary, int imageRes, String htmlDescription, ComponentName componentName) { final Bundle extras = preference.getExtras(); - extras.putString(EXTRA_PREFERENCE_KEY, prefKey); - extras.putString(EXTRA_TITLE, title.toString()); - extras.putString(EXTRA_SUMMARY, summary.toString()); + extras.putCharSequence(EXTRA_TITLE, title); + extras.putCharSequence(EXTRA_SUMMARY, summary); extras.putParcelable(EXTRA_COMPONENT_NAME, componentName); extras.putInt(EXTRA_ANIMATED_IMAGE_RES, imageRes); extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription); diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 20ef7bc0e0f..eeb1f3ae5cf 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -83,6 +83,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference protected ComponentName mComponentName; protected CharSequence mPackageName; protected Uri mImageUri; + private CharSequence mDescription; protected CharSequence mHtmlDescription; // Used to restore the edit dialog status. protected int mUserShortcutTypesCache = UserShortcutType.EMPTY; @@ -190,7 +191,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference groupCategory.addPreference(mSettingsPreference); } - if (mHtmlDescription != null) { + if (!TextUtils.isEmpty(mHtmlDescription)) { final PreferenceCategory introductionCategory = new PreferenceCategory( getPrefContext()); final CharSequence title = getString(R.string.accessibility_introduction_title, @@ -205,6 +206,16 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference htmlTextPreference.setSelectable(false); introductionCategory.addPreference(htmlTextPreference); } + + if (!TextUtils.isEmpty(mDescription)) { + createFooterPreference(mDescription); + } + + if (TextUtils.isEmpty(mHtmlDescription) && TextUtils.isEmpty(mDescription)) { + final CharSequence defaultDescription = getText( + R.string.accessibility_service_default_description); + createFooterPreference(defaultDescription); + } } @Override @@ -364,9 +375,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference // Summary. if (arguments.containsKey(AccessibilitySettings.EXTRA_SUMMARY)) { - final CharSequence summary = arguments.getCharSequence( - AccessibilitySettings.EXTRA_SUMMARY); - createFooterPreference(summary); + mDescription = arguments.getCharSequence(AccessibilitySettings.EXTRA_SUMMARY); } // Settings html description. diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java index 98d29184bed..c6a7684dd8e 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java @@ -214,17 +214,6 @@ public class AccessibilitySettingsTest { assertThat(description).isEqualTo(DEFAULT_DESCRIPTION); } - @Test - public void getServiceDescription_noDescription_showsDefaultString() { - doReturn(EMPTY_STRING).when(mServiceInfo).loadDescription(any()); - - final CharSequence description = AccessibilitySettings.getServiceDescription(mContext, - mServiceInfo, SERVICE_ENABLED); - - assertThat(description).isEqualTo( - mContext.getString(R.string.accessibility_service_default_description)); - } - @Test public void createAccessibilityServicePreferenceList_hasOneInfo_containsSameKey() { final String key = DUMMY_COMPONENT_NAME.flattenToString();