From f9a03cd41586a9374e1818bddc805f44f9e7652f Mon Sep 17 00:00:00 2001 From: kholoud mohamed Date: Wed, 1 Apr 2020 12:20:10 +0100 Subject: [PATCH] Fix crash when trying to open app info page Fixed a crash in App info page that happens when no work profile exists, also fixed some unit tests. Fixes: 152933121 Test: make RunSettingsRoboTests ROBOTEST_FILTER=InteractAcrossProfilesPreferenceControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=InteractAcrossProfilesControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=InteractAcrossProfilesSettingsTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=InteractAcrossProfilesDetailsTest Change-Id: I7a1e5857cb1e10b96b33abd64359ba30459b1b13 --- .../InteractAcrossProfilesDetails.java | 3 +++ .../InteractAcrossProfilesDetailsTest.java | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java index 474a5b6ec79..af055f3392d 100644 --- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java +++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java @@ -240,6 +240,9 @@ public class InteractAcrossProfilesDetails extends AppInfoBase Context context, String packageName) { UserManager userManager = context.getSystemService(UserManager.class); UserHandle workProfile = InteractAcrossProfilesSettings.getWorkProfile(userManager); + if (workProfile == null) { + return false; + } UserHandle personalProfile = userManager.getProfileParent(workProfile); return context.getSystemService( CrossProfileApps.class).canConfigureInteractAcrossProfiles(packageName) diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetailsTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetailsTest.java index bae9a12670b..c5ea21fc8f5 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetailsTest.java @@ -75,7 +75,7 @@ public class InteractAcrossProfilesDetailsTest { assertThat(InteractAcrossProfilesDetails.getPreferenceSummary( mContext, CROSS_PROFILE_PACKAGE_NAME)) - .isEqualTo(mContext.getString(R.string.app_permission_summary_allowed)); + .isEqualTo(mContext.getString(R.string.interact_across_profiles_summary_allowed)); } @Test @@ -98,7 +98,21 @@ public class InteractAcrossProfilesDetailsTest { assertThat(InteractAcrossProfilesDetails.getPreferenceSummary( mContext, CROSS_PROFILE_PACKAGE_NAME)) - .isEqualTo(mContext.getString(R.string.app_permission_summary_not_allowed)); + .isEqualTo(mContext.getString( + R.string.interact_across_profiles_summary_not_allowed)); + } + + @Test + public void getPreferenceSummary_noWorkProfile_returnsNotAllowed() { + shadowOf(mUserManager).addUser( + PERSONAL_PROFILE_ID, "personal-profile"/* name */, 0/* flags */); + shadowOf(mPackageManager).setInstalledPackagesForUserId( + PERSONAL_PROFILE_ID, ImmutableList.of(CROSS_PROFILE_PACKAGE_NAME)); + + assertThat(InteractAcrossProfilesDetails.getPreferenceSummary( + mContext, CROSS_PROFILE_PACKAGE_NAME)) + .isEqualTo(mContext.getString( + R.string.interact_across_profiles_summary_not_allowed)); } private PermissionInfo createCrossProfilesPermissionInfo() {