From 8498f83141226ecc3bdb671c0cfc05bc8c82f184 Mon Sep 17 00:00:00 2001 From: Manish Singh Date: Fri, 2 Feb 2024 14:53:46 +0000 Subject: [PATCH] Fix Apps storage page to show apps for selected user only Currently only the personal and managed profile filters for the respective profiles. And there's no filter to filter out the apps for the private profile. This cl adds that filter and sets it for the private profile user. Bug: 317159160 Test: manual Change-Id: Ia19171b1be73a061a598c2365c88e91ad2f8fec8 --- .../settings/applications/AppStateClonedAppsBridge.java | 3 ++- .../manageapplications/ApplicationViewHolder.java | 6 +++--- .../manageapplications/ManageApplications.java | 7 +++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/applications/AppStateClonedAppsBridge.java b/src/com/android/settings/applications/AppStateClonedAppsBridge.java index 719023d10e2..de0251dfffb 100644 --- a/src/com/android/settings/applications/AppStateClonedAppsBridge.java +++ b/src/com/android/settings/applications/AppStateClonedAppsBridge.java @@ -76,7 +76,8 @@ public class AppStateClonedAppsBridge extends AppStateBaseBridge{ protected void updateExtraInfo(AppEntry app, String pkg, int uid) { // Display package if allowlisted but not yet cloned. // Or if the app is present in clone profile alongwith being in allowlist. - if (mAllowedApps.contains(pkg) && ((!mCloneProfileApps.contains(pkg) || (app.isCloned)))) { + if (mAllowedApps.contains(pkg) + && ((!mCloneProfileApps.contains(pkg) || (app.isClonedProfile())))) { app.extraInfo = Boolean.TRUE; } else { app.extraInfo = Boolean.FALSE; diff --git a/src/com/android/settings/applications/manageapplications/ApplicationViewHolder.java b/src/com/android/settings/applications/manageapplications/ApplicationViewHolder.java index 1d96688c168..cd3fd6bdb2c 100644 --- a/src/com/android/settings/applications/manageapplications/ApplicationViewHolder.java +++ b/src/com/android/settings/applications/manageapplications/ApplicationViewHolder.java @@ -231,7 +231,7 @@ public class ApplicationViewHolder extends RecyclerView.ViewHolder { void updateAppCloneWidget(Context context, View.OnClickListener onClickListener, AppEntry entry) { if (mAddIcon != null) { - if (!entry.isCloned) { + if (!entry.isClonedProfile()) { mAddIcon.setBackground(context.getDrawable(R.drawable.ic_add_24dp)); } else { mAddIcon.setBackground(context.getDrawable(R.drawable.ic_trash_can)); @@ -254,7 +254,7 @@ public class ApplicationViewHolder extends RecyclerView.ViewHolder { String packageName = entry.info.packageName; if (mWidgetContainer != null) { - if (!entry.isCloned) { + if (!entry.isClonedProfile()) { metricsFeatureProvider.action(context, SettingsEnums.ACTION_CREATE_CLONE_APP); mAddIcon.setVisibility(View.INVISIBLE); @@ -285,7 +285,7 @@ public class ApplicationViewHolder extends RecyclerView.ViewHolder { } }.execute(); - } else if (entry.isCloned) { + } else if (entry.isClonedProfile()) { metricsFeatureProvider.action(context, SettingsEnums.ACTION_DELETE_CLONE_APP); cloneBackend.uninstallClonedApp(packageName, /*allUsers*/ false, diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index e370f3eef64..c2fabff680d 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -295,6 +295,7 @@ public class ManageApplications extends InstrumentedFragment private String mVolumeUuid; private int mStorageType; private boolean mIsWorkOnly; + private boolean mIsPrivateProfileOnly; private int mWorkUserId; private boolean mIsPersonalOnly; private View mEmptyView; @@ -378,6 +379,8 @@ public class ManageApplications extends InstrumentedFragment == ProfileSelectFragment.ProfileType.PERSONAL; mIsWorkOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE) == ProfileSelectFragment.ProfileType.WORK; + mIsPrivateProfileOnly = args != null && args.getInt(ProfileSelectFragment.EXTRA_PROFILE) + == ProfileSelectFragment.ProfileType.PRIVATE; mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : UserHandle.myUserId(); if (mIsWorkOnly && mWorkUserId == UserHandle.myUserId()) { mWorkUserId = Utils.getManagedProfileId(mUserManager, UserHandle.myUserId()); @@ -660,6 +663,10 @@ public class ManageApplications extends InstrumentedFragment if (mIsWorkOnly) { compositeFilter = new CompoundFilter(compositeFilter, ApplicationsState.FILTER_WORK); } + if (mIsPrivateProfileOnly) { + compositeFilter = + new CompoundFilter(compositeFilter, ApplicationsState.FILTER_PRIVATE_PROFILE); + } if (mIsPersonalOnly) { compositeFilter = new CompoundFilter(compositeFilter, ApplicationsState.FILTER_PERSONAL);