diff options
| author | 2020-04-23 18:54:15 +0100 | |
|---|---|---|
| committer | 2020-04-24 17:17:25 +0100 | |
| commit | 4d3be0bf0b52a809f42f968c6bf51165300b43c7 (patch) | |
| tree | b1a7aabd78dbec9f1e708aa3c51f288115c9a644 | |
| parent | 0f45d14519789dd4caeda3a91a05969fbe60b3da (diff) | |
Check whether should auto launch after showing empty state screen
Fixes: 154812743
Test: manual
Test: atest ChooserActivityTest
Test: atest ResolverActivityTest
Change-Id: I9f861bb6f7e4b7ff087aa74c554cc4e52f8ce614
3 files changed, 57 insertions, 1 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 00faa3b3d21e..837270a8b004 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1027,7 +1027,7 @@ public class ResolverActivity extends Activity implements @Override // ResolverListCommunicator public final void onPostListReady(ResolverListAdapter listAdapter, boolean doPostProcessing) { - if (isAutolaunching() || maybeAutolaunchActivity()) { + if (isAutolaunching()) { return; } if (mMultiProfilePagerAdapter.shouldShowEmptyStateScreen(listAdapter)) { @@ -1035,6 +1035,11 @@ public class ResolverActivity extends Activity implements } else { mMultiProfilePagerAdapter.showListView(listAdapter); } + // showEmptyResolverListEmptyState can mark the tab as loaded, + // which is a precondition for auto launching + if (maybeAutolaunchActivity()) { + return; + } if (doPostProcessing) { maybeCreateHeader(listAdapter); resetButtonBar(); 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 583c75102d52..c52555b5ed32 100644 --- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java @@ -1725,6 +1725,31 @@ public class ChooserActivityTest { assertThat(chosen[0], is(personalResolvedComponentInfos.get(0).getResolveInfoAt(0))); } + @Test + public void testWorkTab_onePersonalTarget_emptyStateOnWorkTarget_autolaunch() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + int workProfileTargets = 4; + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(workProfileTargets); + sOverrides.hasCrossProfileIntents = false; + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + Intent sendIntent = createSendTextIntent(); + ResolveInfo[] chosen = new ResolveInfo[1]; + sOverrides.onSafelyStartCallback = targetInfo -> { + chosen[0] = targetInfo.getResolveInfo(); + return true; + }; + + mActivityRule.launchActivity(sendIntent); + waitForIdle(); + + assertThat(chosen[0], is(personalResolvedComponentInfos.get(1).getResolveInfoAt(0))); + } + private Intent createSendTextIntent() { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); 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 07aa654cae1e..0d5278678bb8 100644 --- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java @@ -801,6 +801,32 @@ public class ResolverActivityTest { assertThat(chosen[0], is(personalResolvedComponentInfos.get(0).getResolveInfoAt(0))); } + @Test + public void testWorkTab_onePersonalTarget_emptyStateOnWorkTarget_autolaunch() { + // enable the work tab feature flag + ResolverActivity.ENABLE_TABBED_VIEW = true; + markWorkProfileUserAvailable(); + int workProfileTargets = 4; + List<ResolvedComponentInfo> personalResolvedComponentInfos = + createResolvedComponentsForTestWithOtherProfile(2, /* userId */ 10); + List<ResolvedComponentInfo> workResolvedComponentInfos = + createResolvedComponentsForTest(workProfileTargets); + sOverrides.hasCrossProfileIntents = false; + setupResolverControllers(personalResolvedComponentInfos, workResolvedComponentInfos); + Intent sendIntent = createSendImageIntent(); + sendIntent.setType("TestType"); + ResolveInfo[] chosen = new ResolveInfo[1]; + sOverrides.onSafelyStartCallback = targetInfo -> { + chosen[0] = targetInfo.getResolveInfo(); + return true; + }; + + mActivityRule.launchActivity(sendIntent); + waitForIdle(); + + assertThat(chosen[0], is(personalResolvedComponentInfos.get(1).getResolveInfoAt(0))); + } + private Intent createSendImageIntent() { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); |