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
This commit is contained in:
Manish Singh
2024-02-02 14:53:46 +00:00
parent 3207f127dd
commit 8498f83141
3 changed files with 12 additions and 4 deletions

View File

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

View File

@@ -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,

View File

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