From 70238907dcf12440c804ef9041f19278eed0c668 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Mon, 10 Feb 2020 19:00:53 +0800 Subject: [PATCH] Tweak summary for permission manager Summary appends "and more" while the items of permission are larger than 3. Change-Id: Ic3c16404237fb0cb81f0ed5d2cbdff32cf23c452 Fix: 136258315 Test: Robo test and visual --- res/values/strings.xml | 2 + .../AppPermissionsPreferenceController.java | 23 +++++-- ...ppPermissionsPreferenceControllerTest.java | 68 +++++++++++-------- 3 files changed, 57 insertions(+), 36 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index ad56f21a4b4..afb4480113b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9132,6 +9132,8 @@ Permission manager Apps using %1$s + + Apps using %1$s, and more Tap to wake diff --git a/src/com/android/settings/applications/AppPermissionsPreferenceController.java b/src/com/android/settings/applications/AppPermissionsPreferenceController.java index 0a3bba7d07a..4458ea4105c 100644 --- a/src/com/android/settings/applications/AppPermissionsPreferenceController.java +++ b/src/com/android/settings/applications/AppPermissionsPreferenceController.java @@ -33,7 +33,7 @@ import java.util.stream.Collectors; public class AppPermissionsPreferenceController extends BasePreferenceController { private static final String TAG = "AppPermissionPrefCtrl"; - private static int NUM_PACKAGE_TO_CHECK = 3; + private static final int NUM_PACKAGE_TO_CHECK = 4; @VisibleForTesting static int NUM_PERMISSIONS_TO_SHOW = 3; @@ -78,7 +78,7 @@ public class AppPermissionsPreferenceController extends BasePreferenceController void queryPermissionSummary() { final List installedPackages = mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS); - // Here we only get the first three apps and check their permissions. + // Here we only get the first four apps and check their permissions. final List packagesWithPermission = installedPackages.stream() .filter(pInfo -> pInfo.permissions != null) .limit(NUM_PACKAGE_TO_CHECK) @@ -102,10 +102,21 @@ public class AppPermissionsPreferenceController extends BasePreferenceController final List permissionsToShow = mPermissionGroups.stream() .limit(NUM_PERMISSIONS_TO_SHOW) .collect(Collectors.toList()); - final CharSequence summary = !permissionsToShow.isEmpty() - ? mContext.getString(R.string.app_permissions_summary, - ListFormatter.getInstance().format(permissionsToShow).toLowerCase()) - : mContext.getString(R.string.runtime_permissions_summary_no_permissions_granted); + final boolean isMoreShowed = mPermissionGroups.size() > NUM_PERMISSIONS_TO_SHOW; + CharSequence summary; + + if (!permissionsToShow.isEmpty()) { + if (isMoreShowed) { + summary = mContext.getString(R.string.app_permissions_summary_more, + ListFormatter.getInstance().format(permissionsToShow).toLowerCase()); + } else { + summary = mContext.getString(R.string.app_permissions_summary, + ListFormatter.getInstance().format(permissionsToShow).toLowerCase()); + } + } else { + summary = mContext.getString( + R.string.runtime_permissions_summary_no_permissions_granted); + } mPreference.setSummary(summary); } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/applications/AppPermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/AppPermissionsPreferenceControllerTest.java index f0fdc9c4dff..dfa938313b3 100644 --- a/tests/robotests/src/com/android/settings/applications/AppPermissionsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/AppPermissionsPreferenceControllerTest.java @@ -16,8 +16,6 @@ package com.android.settings.applications; -import static com.android.settings.applications.AppPermissionsPreferenceController.NUM_PERMISSIONS_TO_SHOW; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; @@ -75,7 +73,7 @@ public class AppPermissionsPreferenceControllerTest { public void updateSummary_noGrantedPermission_shouldSetNoPermissionGrantedSummary() { doNothing().when(mController).queryPermissionSummary(); mController.updateState(mPreference); - mController.mNumPackageChecked = 2; + mController.mNumPackageChecked = 3; mController.updateSummary(new ArrayList<>()); @@ -84,20 +82,55 @@ public class AppPermissionsPreferenceControllerTest { } @Test - public void updateSummary_hasPermissionGroups_shouldSetPermissionAsSummary() { + public void updateSummary_hasOnePermission_shouldSetPermissionAsSummary() { doNothing().when(mController).queryPermissionSummary(); mController.updateState(mPreference); final String permission = "location"; final ArrayList labels = new ArrayList<>(); labels.add(permission); final String summary = "Apps using " + permission; - mController.mNumPackageChecked = 2; + mController.mNumPackageChecked = 3; mController.updateSummary(labels); assertThat(mPreference.getSummary()).isEqualTo(summary); } + @Test + public void updateSummary_hasThreePermissions_shouldShowThreePermissionAsSummary() { + doNothing().when(mController).queryPermissionSummary(); + mController.updateState(mPreference); + mController.mNumPackageChecked = 3; + final List labels = new ArrayList<>(); + labels.add("Phone"); + labels.add("SMS"); + labels.add("Microphone"); + + mController.updateSummary(labels); + + final String summary = "Apps using microphone, sms, and phone"; + assertThat(mPreference.getSummary()).isEqualTo(summary); + } + + @Test + public void updateSummary_hasFivePermissions_shouldShowThreePermissionsAndMoreAsSummary() { + doNothing().when(mController).queryPermissionSummary(); + mController.updateState(mPreference); + mController.mNumPackageChecked = 3; + final List labels = new ArrayList<>(); + labels.add("Phone"); + labels.add("SMS"); + labels.add("Microphone"); + labels.add("Contacts"); + labels.add("Camera"); + labels.add("Location"); + + mController.updateSummary(labels); + + final String summary = "Apps using microphone, contacts, and sms, and more"; + assertThat(mPreference.getSummary()).isEqualTo(summary); + } + @Test public void updateSummary_notReachCallbackCount_shouldNotSetSummary() { doNothing().when(mController).queryPermissionSummary(); @@ -110,29 +143,4 @@ public class AppPermissionsPreferenceControllerTest { verify(mPreference, never()).setSummary(anyString()); } - - @Test - public void updateSummary_hasFiveItems_shouldShowCertainNumItems() { - doNothing().when(mController).queryPermissionSummary(); - mController.updateState(mPreference); - mController.mNumPackageChecked = 2; - - mController.updateSummary(getPermissionGroupsSet()); - - final CharSequence summary = mPreference.getSummary(); - final int items = summary.toString().split(",").length; - assertThat(items).isEqualTo(NUM_PERMISSIONS_TO_SHOW); - } - - private List getPermissionGroupsSet() { - final List labels = new ArrayList<>(); - labels.add("Phone"); - labels.add("SMS"); - labels.add("Microphone"); - labels.add("Contacts"); - labels.add("Camera"); - labels.add("Location"); - - return labels; - } }