summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java24
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java9
-rw-r--r--core/java/com/android/internal/app/ResolverListController.java14
-rw-r--r--core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java9
-rw-r--r--core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java9
5 files changed, 15 insertions, 50 deletions
diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
index 9fc0da83c504..d43333e507a6 100644
--- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
@@ -55,6 +55,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
private static final String TAG = "AbstractMultiProfilePagerAdapter";
static final int PROFILE_PERSONAL = 0;
static final int PROFILE_WORK = 1;
+
@IntDef({PROFILE_PERSONAL, PROFILE_WORK})
@interface Profile {}
@@ -365,7 +366,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
UserHandle listUserHandle = listAdapter.getUserHandle();
if (!listUserHandle.equals(mWorkProfileUserHandle)
|| !mInjector.isQuietModeEnabled(mWorkProfileUserHandle)
- || !hasResolvedAppsInWorkProfile(listAdapter)) {
+ || listAdapter.getCount() == 0) {
return false;
}
DevicePolicyEventLogger
@@ -382,20 +383,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
return true;
}
- /**
- * Returns {@code true} if there is at least one app resolved in the work profile,
- * regardless of whether the work profile is enabled or not.
- */
- private boolean hasResolvedAppsInWorkProfile(ResolverListAdapter listAdapter) {
- List<ResolverActivity.ResolvedComponentInfo> userStateIndependentWorkResolvers =
- listAdapter.mResolverListController.getUserStateIndependentResolversAsUser(
- listAdapter.getIntents(), mWorkProfileUserHandle);
- return userStateIndependentWorkResolvers.stream()
- .anyMatch(resolvedComponentInfo ->
- resolvedComponentInfo.getResolveInfoAt(0).targetUserId
- == UserHandle.USER_CURRENT);
- }
-
private void maybeShowNoAppsAvailableEmptyState(ResolverListAdapter listAdapter) {
UserHandle listUserHandle = listAdapter.getUserHandle();
if (mWorkProfileUserHandle != null
@@ -529,6 +516,13 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
return false;
}
+ boolean shouldShowEmptyStateScreen(ResolverListAdapter listAdapter) {
+ int count = listAdapter.getUnfilteredCount();
+ return (count == 0 && listAdapter.getPlaceholderCount() == 0)
+ || (listAdapter.getUserHandle().equals(mWorkProfileUserHandle)
+ && isQuietModeEnabled(mWorkProfileUserHandle));
+ }
+
protected class ProfileDescriptor {
final ViewGroup rootView;
private final ViewGroup mEmptyStateView;
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 35253b68aac7..fc3f20f7a556 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -994,7 +994,7 @@ public class ResolverActivity extends Activity implements
if (isAutolaunching() || maybeAutolaunchActivity()) {
return;
}
- if (isResolverListEmpty(listAdapter)) {
+ if (mMultiProfilePagerAdapter.shouldShowEmptyStateScreen(listAdapter)) {
mMultiProfilePagerAdapter.showEmptyResolverListEmptyState(listAdapter);
} else {
mMultiProfilePagerAdapter.showListView(listAdapter);
@@ -1641,16 +1641,11 @@ public class ResolverActivity extends Activity implements
private void setupViewVisibilities() {
ResolverListAdapter activeListAdapter = mMultiProfilePagerAdapter.getActiveListAdapter();
- if (!isResolverListEmpty(activeListAdapter)) {
+ if (!mMultiProfilePagerAdapter.shouldShowEmptyStateScreen(activeListAdapter)) {
addUseDifferentAppLabelIfNecessary(activeListAdapter);
}
}
- private boolean isResolverListEmpty(ResolverListAdapter listAdapter) {
- int count = listAdapter.getUnfilteredCount();
- return count == 0 && listAdapter.getPlaceholderCount() == 0;
- }
-
/**
* Add a label to signify that the user can pick a different app.
* @param adapter The adapter used to provide data to item views.
diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java
index 3f897a5f26bf..033ac72dda4e 100644
--- a/core/java/com/android/internal/app/ResolverListController.java
+++ b/core/java/com/android/internal/app/ResolverListController.java
@@ -121,23 +121,13 @@ public class ResolverListController {
List<Intent> intents,
UserHandle userHandle) {
int baseFlags = PackageManager.MATCH_DEFAULT_ONLY
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
| (shouldGetResolvedFilter ? PackageManager.GET_RESOLVED_FILTER : 0)
| (shouldGetActivityMetadata ? PackageManager.GET_META_DATA : 0);
return getResolversForIntentAsUserInternal(intents, userHandle, baseFlags);
}
- /**
- * Returns a list of resolved intents which is user state-independent. This means it will
- * return the same results regardless of whether the {@code userHandle} user is disabled or not.
- */
- public List<ResolverActivity.ResolvedComponentInfo> getUserStateIndependentResolversAsUser(
- List<Intent> intents,
- UserHandle userHandle) {
- int baseFlags = PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
- return getResolversForIntentAsUserInternal(intents, userHandle, baseFlags);
- }
-
private List<ResolverActivity.ResolvedComponentInfo> getResolversForIntentAsUserInternal(
List<Intent> intents,
UserHandle userHandle,
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
index bc0cdc1e029b..583c75102d52 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
@@ -1339,15 +1339,8 @@ public class ChooserActivityTest {
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
List<ResolvedComponentInfo> workResolvedComponentInfos =
createResolvedComponentsForTest(workProfileTargets);
- when(sOverrides.workResolverListController.getUserStateIndependentResolversAsUser(
- Mockito.isA(List.class),
- Mockito.isA(UserHandle.class)))
- .thenReturn(new ArrayList<>(workResolvedComponentInfos));
sOverrides.isQuietModeEnabled = true;
- // When work profile is disabled, we get 0 results when we query the work profile
- // intents.
- setupResolverControllers(personalResolvedComponentInfos,
- /* workResolvedComponentInfos */ new ArrayList<>());
+ setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendTextIntent();
sendIntent.setType("TestType");
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
index 0bf8663c7a85..eb39d58019d9 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
@@ -614,15 +614,8 @@ public class ResolverActivityTest {
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
List<ResolvedComponentInfo> workResolvedComponentInfos =
createResolvedComponentsForTest(workProfileTargets);
- when(sOverrides.workResolverListController.getUserStateIndependentResolversAsUser(
- Mockito.isA(List.class),
- Mockito.isA(UserHandle.class)))
- .thenReturn(new ArrayList<>(workResolvedComponentInfos));
sOverrides.isQuietModeEnabled = true;
- // When work profile is disabled, we get 0 results when we query the work profile
- // intents.
- setupResolverControllers(personalResolvedComponentInfos,
- /* workResolvedComponentInfos */ new ArrayList<>());
+ setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos);
Intent sendIntent = createSendImageIntent();
sendIntent.setType("TestType");