Loading core/java/com/android/internal/app/ChooserActivity.java +9 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,9 @@ public class ChooserActivity extends ResolverActivity implements if (!isUserRunning(userHandle)) { return false; } if (!isUserUnlocked(userHandle)) { return false; } if (isQuietModeEnabled(userHandle)) { return false; } Loading Loading @@ -2891,6 +2894,12 @@ public class ChooserActivity extends ResolverActivity implements return userManager.isUserRunning(userHandle); } @VisibleForTesting protected boolean isUserUnlocked(UserHandle userHandle) { UserManager userManager = getSystemService(UserManager.class); return userManager.isUserUnlocked(userHandle); } @VisibleForTesting protected boolean isQuietModeEnabled(UserHandle userHandle) { UserManager userManager = getSystemService(UserManager.class); Loading core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +66 −2 Original line number Diff line number Diff line Loading @@ -1996,7 +1996,7 @@ public class ChooserActivityTest { } @Test public void testWorkTab_selectingWorkTabWithLockedWorkUser_directShareTargetsNotQueried() { public void testWorkTab_selectingWorkTabWithNotRunningWorkUser_directShareTargetsNotQueried() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); Loading Loading @@ -2035,7 +2035,7 @@ public class ChooserActivityTest { } @Test public void testWorkTab_workUserLocked_workTargetsShown() { public void testWorkTab_workUserNotRunning_workTargetsShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); Loading @@ -2059,6 +2059,70 @@ public class ChooserActivityTest { assertEquals(3, activity.getWorkListAdapter().getCount()); } @Test public void testWorkTab_selectingWorkTabWithLockedWorkUser_directShareTargetsNotQueried() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); List<ResolvedComponentInfo> personalResolvedComponentInfos = createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(3); setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); sOverrides.isWorkProfileUserUnlocked = false; boolean[] isQueryDirectShareCalledOnWorkProfile = new boolean[] { false }; sOverrides.onQueryDirectShareTargets = chooserListAdapter -> { isQueryDirectShareCalledOnWorkProfile[0] = (chooserListAdapter.getUserHandle().getIdentifier() == 10); return null; }; boolean[] isQueryTargetServicesCalledOnWorkProfile = new boolean[] { false }; sOverrides.onQueryTargetServices = chooserListAdapter -> { isQueryTargetServicesCalledOnWorkProfile[0] = (chooserListAdapter.getUserHandle().getIdentifier() == 10); return null; }; Intent sendIntent = createSendTextIntent(); sendIntent.setType("TestType"); mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); waitForIdle(); onView(withId(R.id.contentPanel)) .perform(swipeUp()); onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); assertFalse("Direct share targets were queried on a locked work profile user", isQueryDirectShareCalledOnWorkProfile[0]); assertFalse("Target services were queried on a locked work profile user", isQueryTargetServicesCalledOnWorkProfile[0]); } @Test public void testWorkTab_workUserLocked_workTargetsShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); List<ResolvedComponentInfo> personalResolvedComponentInfos = createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(3); setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); Intent sendIntent = createSendTextIntent(); sendIntent.setType("TestType"); sOverrides.isWorkProfileUserUnlocked = false; final ChooserWrapperActivity activity = mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); waitForIdle(); onView(withId(R.id.contentPanel)) .perform(swipeUp()); onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); assertEquals(3, activity.getWorkListAdapter().getCount()); } private Intent createChooserIntent(Intent intent, Intent[] initialIntents) { Intent chooserIntent = new Intent(); chooserIntent.setAction(Intent.ACTION_CHOOSER); Loading core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java +13 −0 Original line number Diff line number Diff line Loading @@ -229,9 +229,20 @@ public class ChooserWrapperActivity extends ChooserActivity { @Override protected boolean isUserRunning(UserHandle userHandle) { if (userHandle.equals(UserHandle.SYSTEM)) { return super.isUserRunning(userHandle); } return sOverrides.isWorkProfileUserRunning; } @Override protected boolean isUserUnlocked(UserHandle userHandle) { if (userHandle.equals(UserHandle.SYSTEM)) { return super.isUserUnlocked(userHandle); } return sOverrides.isWorkProfileUserUnlocked; } /** * We cannot directly mock the activity created since instrumentation creates it. * <p> Loading @@ -258,6 +269,7 @@ public class ChooserWrapperActivity extends ChooserActivity { public boolean hasCrossProfileIntents; public boolean isQuietModeEnabled; public boolean isWorkProfileUserRunning; public boolean isWorkProfileUserUnlocked; public AbstractMultiProfilePagerAdapter.Injector multiPagerAdapterInjector; public PackageManager packageManager; Loading @@ -281,6 +293,7 @@ public class ChooserWrapperActivity extends ChooserActivity { hasCrossProfileIntents = true; isQuietModeEnabled = false; isWorkProfileUserRunning = true; isWorkProfileUserUnlocked = true; packageManager = null; multiPagerAdapterInjector = new AbstractMultiProfilePagerAdapter.Injector() { @Override Loading Loading
core/java/com/android/internal/app/ChooserActivity.java +9 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,9 @@ public class ChooserActivity extends ResolverActivity implements if (!isUserRunning(userHandle)) { return false; } if (!isUserUnlocked(userHandle)) { return false; } if (isQuietModeEnabled(userHandle)) { return false; } Loading Loading @@ -2891,6 +2894,12 @@ public class ChooserActivity extends ResolverActivity implements return userManager.isUserRunning(userHandle); } @VisibleForTesting protected boolean isUserUnlocked(UserHandle userHandle) { UserManager userManager = getSystemService(UserManager.class); return userManager.isUserUnlocked(userHandle); } @VisibleForTesting protected boolean isQuietModeEnabled(UserHandle userHandle) { UserManager userManager = getSystemService(UserManager.class); Loading
core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +66 −2 Original line number Diff line number Diff line Loading @@ -1996,7 +1996,7 @@ public class ChooserActivityTest { } @Test public void testWorkTab_selectingWorkTabWithLockedWorkUser_directShareTargetsNotQueried() { public void testWorkTab_selectingWorkTabWithNotRunningWorkUser_directShareTargetsNotQueried() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); Loading Loading @@ -2035,7 +2035,7 @@ public class ChooserActivityTest { } @Test public void testWorkTab_workUserLocked_workTargetsShown() { public void testWorkTab_workUserNotRunning_workTargetsShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); Loading @@ -2059,6 +2059,70 @@ public class ChooserActivityTest { assertEquals(3, activity.getWorkListAdapter().getCount()); } @Test public void testWorkTab_selectingWorkTabWithLockedWorkUser_directShareTargetsNotQueried() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); List<ResolvedComponentInfo> personalResolvedComponentInfos = createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(3); setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); sOverrides.isWorkProfileUserUnlocked = false; boolean[] isQueryDirectShareCalledOnWorkProfile = new boolean[] { false }; sOverrides.onQueryDirectShareTargets = chooserListAdapter -> { isQueryDirectShareCalledOnWorkProfile[0] = (chooserListAdapter.getUserHandle().getIdentifier() == 10); return null; }; boolean[] isQueryTargetServicesCalledOnWorkProfile = new boolean[] { false }; sOverrides.onQueryTargetServices = chooserListAdapter -> { isQueryTargetServicesCalledOnWorkProfile[0] = (chooserListAdapter.getUserHandle().getIdentifier() == 10); return null; }; Intent sendIntent = createSendTextIntent(); sendIntent.setType("TestType"); mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); waitForIdle(); onView(withId(R.id.contentPanel)) .perform(swipeUp()); onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); assertFalse("Direct share targets were queried on a locked work profile user", isQueryDirectShareCalledOnWorkProfile[0]); assertFalse("Target services were queried on a locked work profile user", isQueryTargetServicesCalledOnWorkProfile[0]); } @Test public void testWorkTab_workUserLocked_workTargetsShown() { // enable the work tab feature flag ResolverActivity.ENABLE_TABBED_VIEW = true; markWorkProfileUserAvailable(); List<ResolvedComponentInfo> personalResolvedComponentInfos = createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10); List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(3); setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); Intent sendIntent = createSendTextIntent(); sendIntent.setType("TestType"); sOverrides.isWorkProfileUserUnlocked = false; final ChooserWrapperActivity activity = mActivityRule.launchActivity(Intent.createChooser(sendIntent, "work tab test")); waitForIdle(); onView(withId(R.id.contentPanel)) .perform(swipeUp()); onView(withText(R.string.resolver_work_tab)).perform(click()); waitForIdle(); assertEquals(3, activity.getWorkListAdapter().getCount()); } private Intent createChooserIntent(Intent intent, Intent[] initialIntents) { Intent chooserIntent = new Intent(); chooserIntent.setAction(Intent.ACTION_CHOOSER); Loading
core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java +13 −0 Original line number Diff line number Diff line Loading @@ -229,9 +229,20 @@ public class ChooserWrapperActivity extends ChooserActivity { @Override protected boolean isUserRunning(UserHandle userHandle) { if (userHandle.equals(UserHandle.SYSTEM)) { return super.isUserRunning(userHandle); } return sOverrides.isWorkProfileUserRunning; } @Override protected boolean isUserUnlocked(UserHandle userHandle) { if (userHandle.equals(UserHandle.SYSTEM)) { return super.isUserUnlocked(userHandle); } return sOverrides.isWorkProfileUserUnlocked; } /** * We cannot directly mock the activity created since instrumentation creates it. * <p> Loading @@ -258,6 +269,7 @@ public class ChooserWrapperActivity extends ChooserActivity { public boolean hasCrossProfileIntents; public boolean isQuietModeEnabled; public boolean isWorkProfileUserRunning; public boolean isWorkProfileUserUnlocked; public AbstractMultiProfilePagerAdapter.Injector multiPagerAdapterInjector; public PackageManager packageManager; Loading @@ -281,6 +293,7 @@ public class ChooserWrapperActivity extends ChooserActivity { hasCrossProfileIntents = true; isQuietModeEnabled = false; isWorkProfileUserRunning = true; isWorkProfileUserUnlocked = true; packageManager = null; multiPagerAdapterInjector = new AbstractMultiProfilePagerAdapter.Injector() { @Override Loading