From 9085abc483a5a502de2b1483cbaf80c3122e4dff Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Thu, 17 Nov 2022 12:28:37 +0000 Subject: [PATCH 1/2] Include cloned apps in system sharesheet. This CL is the first of multiple Cls which integrate Cloned Apps with the system sharesheet. Contents: 1. Adding API to get UserHandle from ResolveInfo. 2. Adding userHandle to uniquely identify ResolveInfo in sharesheet. 3. Loading Icons with userHandle supplied from 1. 4. Personal Adaptor starts with Cloned User Id when sharesheet is started in Cloned App. 5. AzInfoComparator adds userHandle to sort apps. 6. Different Disambiguation dialog for last choosen activity is disabled, when clonedProfile is present. 7. Setting 'Always' choosen activity is disabled personal adapter when clonedProfile is present. 8. Profile based icons added in Dialog Boxes. (Stacked apps and Long press) Bug: 240100378 Test: atest ResolverActivityTest Change-Id: I5eb288e4f3059f0945a8c3ff410b19b8820a69cf --- .../app/AbstractMultiProfilePagerAdapter.java | 23 +-- .../android/internal/app/ChooserActivity.java | 56 ++++-- .../internal/app/ChooserListAdapter.java | 9 +- .../app/ChooserMultiProfilePagerAdapter.java | 21 +- .../NoAppsAvailableEmptyStateProvider.java | 13 +- .../app/NoCrossProfileEmptyStateProvider.java | 11 +- .../internal/app/ResolverActivity.java | 179 +++++++++++++----- .../internal/app/ResolverListAdapter.java | 6 +- .../internal/app/ResolverListController.java | 16 +- .../app/ResolverMultiProfilePagerAdapter.java | 21 +- .../app/ChooserActivityOverrideData.java | 11 +- .../app/ChooserActivityWorkProfileTest.java | 4 +- .../internal/app/ChooserWrapperActivity.java | 28 ++- .../internal/app/ResolverActivityTest.java | 170 +++++++++++++++++ .../app/ResolverActivityWorkProfileTest.java | 2 +- .../app/ResolverListControllerTest.java | 12 +- .../internal/app/ResolverWrapperActivity.java | 58 ++++-- 17 files changed, 473 insertions(+), 167 deletions(-) diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index 23167382ec3b9..eef6fde304b56 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -16,8 +16,8 @@ package com.android.internal.app; import android.annotation.IntDef; -import android.annotation.Nullable; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.AppGlobals; import android.content.ContentResolver; @@ -60,16 +60,19 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { private Set mLoadedPages; private final EmptyStateProvider mEmptyStateProvider; private final UserHandle mWorkProfileUserHandle; + private final UserHandle mCloneUserHandle; private final QuietModeManager mQuietModeManager; AbstractMultiProfilePagerAdapter(Context context, int currentPage, EmptyStateProvider emptyStateProvider, QuietModeManager quietModeManager, - UserHandle workProfileUserHandle) { + UserHandle workProfileUserHandle, + UserHandle cloneUserHandle) { mContext = Objects.requireNonNull(context); mCurrentPage = currentPage; mLoadedPages = new HashSet<>(); mWorkProfileUserHandle = workProfileUserHandle; + mCloneUserHandle = cloneUserHandle; mEmptyStateProvider = emptyStateProvider; mQuietModeManager = quietModeManager; } @@ -160,6 +163,10 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { return null; } + public UserHandle getCloneUserHandle() { + return mCloneUserHandle; + } + /** * Returns the {@link ProfileDescriptor} relevant to the given pageIndex. *