Fix broken intent resolver and share sheet tests.
Fixes for the tests that got broken due to my auto launch and direct share changes. Test: atest com.android.internal.app.ResolverActivityTest Test: atest com.android.internal.app.ChooserActivityTest Bug: 142537267 Bug: 142538125 Change-Id: If64bbab473430a6d8a1735e18a755c8a045e3bf5
This commit is contained in:
@@ -38,6 +38,7 @@ import static org.hamcrest.CoreMatchers.not;
|
||||
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.atLeastOnce;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
@@ -355,6 +356,7 @@ public class ChooserActivityTest {
|
||||
// enable the work tab feature flag
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
|
||||
markWorkProfileUserAvailable();
|
||||
Intent sendIntent = createSendTextIntent();
|
||||
List<ResolvedComponentInfo> resolvedComponentInfos =
|
||||
createResolvedComponentsForTestWithOtherProfile(2);
|
||||
@@ -1209,17 +1211,24 @@ public class ChooserActivityTest {
|
||||
// enable the work tab feature flag
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
int personalProfileTargets = 3;
|
||||
int otherProfileTargets = 1;
|
||||
List<ResolvedComponentInfo> personalResolvedComponentInfos =
|
||||
createResolvedComponentsForTest(personalProfileTargets);
|
||||
createResolvedComponentsForTestWithOtherProfile(
|
||||
personalProfileTargets + otherProfileTargets, /* userID */ 10);
|
||||
int workProfileTargets = 4;
|
||||
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(
|
||||
workProfileTargets);
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
|
||||
Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Intent sendIntent = createSendTextIntent();
|
||||
sendIntent.setType("TestType");
|
||||
markWorkProfileUserAvailable();
|
||||
@@ -1229,8 +1238,6 @@ public class ChooserActivityTest {
|
||||
waitForIdle();
|
||||
|
||||
assertThat(activity.getCurrentUserHandle().getIdentifier(), is(0));
|
||||
// The work list adapter must only be filled when we open the work tab
|
||||
assertThat(activity.getWorkListAdapter().getCount(), is(0));
|
||||
onView(withText(R.string.resolver_work_tab)).perform(click());
|
||||
assertThat(activity.getCurrentUserHandle().getIdentifier(), is(10));
|
||||
assertThat(activity.getPersonalListAdapter().getCount(), is(personalProfileTargets));
|
||||
@@ -1243,11 +1250,22 @@ public class ChooserActivityTest {
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
markWorkProfileUserAvailable();
|
||||
int workProfileTargets = 4;
|
||||
List<ResolvedComponentInfo> personalResolvedComponentInfos =
|
||||
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
|
||||
List<ResolvedComponentInfo> workResolvedComponentInfos =
|
||||
createResolvedComponentsForTest(workProfileTargets);
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(UserHandle.SYSTEM)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Intent sendIntent = createSendTextIntent();
|
||||
sendIntent.setType("TestType");
|
||||
|
||||
@@ -1357,6 +1375,20 @@ public class ChooserActivityTest {
|
||||
return infoList;
|
||||
}
|
||||
|
||||
private List<ResolvedComponentInfo> createResolvedComponentsForTestWithOtherProfile(
|
||||
int numberOfResults, int userId) {
|
||||
List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
|
||||
for (int i = 0; i < numberOfResults; i++) {
|
||||
if (i == 0) {
|
||||
infoList.add(
|
||||
ResolverDataProvider.createResolvedComponentInfoWithOtherId(i, userId));
|
||||
} else {
|
||||
infoList.add(ResolverDataProvider.createResolvedComponentInfo(i));
|
||||
}
|
||||
}
|
||||
return infoList;
|
||||
}
|
||||
|
||||
private List<ResolvedComponentInfo> createResolvedComponentsForTestWithUserId(
|
||||
int numberOfResults, int userId) {
|
||||
List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
|
||||
|
||||
@@ -16,10 +16,15 @@
|
||||
|
||||
package com.android.internal.app;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.prediction.AppPredictionContext;
|
||||
import android.app.prediction.AppPredictionManager;
|
||||
import android.app.prediction.AppPredictor;
|
||||
import android.app.usage.UsageStatsManager;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
@@ -40,6 +45,8 @@ import com.android.internal.app.chooser.TargetInfo;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ChooserWrapperActivity extends ChooserActivity {
|
||||
@@ -173,6 +180,12 @@ public class ChooserWrapperActivity extends ChooserActivity {
|
||||
return mMultiProfilePagerAdapter.getCurrentUserHandle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Context createContextAsUser(UserHandle user, int flags) {
|
||||
// return the current context as a work profile doesn't really exist in these tests
|
||||
return getApplicationContext();
|
||||
}
|
||||
|
||||
/**
|
||||
* We cannot directly mock the activity created since instrumentation creates it.
|
||||
* <p>
|
||||
|
||||
@@ -225,6 +225,7 @@ public class ResolverActivityTest {
|
||||
// enable the work tab feature flag
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
|
||||
markWorkProfileUserAvailable();
|
||||
Intent sendIntent = createSendImageIntent();
|
||||
List<ResolvedComponentInfo> resolvedComponentInfos =
|
||||
createResolvedComponentsForTestWithOtherProfile(2);
|
||||
@@ -246,7 +247,6 @@ public class ResolverActivityTest {
|
||||
chosen[0] = targetInfo.getResolveInfo();
|
||||
return true;
|
||||
};
|
||||
|
||||
// Make a stable copy of the components as the original list may be modified
|
||||
List<ResolvedComponentInfo> stableCopy =
|
||||
createResolvedComponentsForTestWithOtherProfile(2);
|
||||
@@ -443,7 +443,7 @@ public class ResolverActivityTest {
|
||||
// enable the work tab feature flag
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
List<ResolvedComponentInfo> personalResolvedComponentInfos =
|
||||
createResolvedComponentsForTest(3);
|
||||
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
|
||||
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
@@ -451,6 +451,11 @@ public class ResolverActivityTest {
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(UserHandle.SYSTEM)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Intent sendIntent = createSendImageIntent();
|
||||
markWorkProfileUserAvailable();
|
||||
|
||||
@@ -478,17 +483,20 @@ public class ResolverActivityTest {
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(sOverrides.workProfileUserHandle))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
eq(sOverrides.workProfileUserHandle)))
|
||||
.thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(sOverrides.workProfileUserHandle))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
eq(sOverrides.workProfileUserHandle)))
|
||||
.thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
@@ -502,7 +510,7 @@ public class ResolverActivityTest {
|
||||
onView(withText(R.string.resolver_work_tab)).perform(click());
|
||||
|
||||
assertThat(activity.getCurrentUserHandle().getIdentifier(), is(10));
|
||||
assertThat(activity.getPersonalListAdapter().getCount(), is(3));
|
||||
assertThat(activity.getPersonalListAdapter().getCount(), is(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -511,14 +519,20 @@ public class ResolverActivityTest {
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
markWorkProfileUserAvailable();
|
||||
List<ResolvedComponentInfo> personalResolvedComponentInfos =
|
||||
createResolvedComponentsForTest(3);
|
||||
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
|
||||
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(UserHandle.SYSTEM)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Intent sendIntent = createSendImageIntent();
|
||||
|
||||
final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
|
||||
@@ -536,14 +550,20 @@ public class ResolverActivityTest {
|
||||
ResolverActivity.ENABLE_TABBED_VIEW = true;
|
||||
markWorkProfileUserAvailable();
|
||||
List<ResolvedComponentInfo> personalResolvedComponentInfos =
|
||||
createResolvedComponentsForTest(3);
|
||||
createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
|
||||
List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(UserHandle.SYSTEM)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Intent sendIntent = createSendImageIntent();
|
||||
ResolveInfo[] chosen = new ResolveInfo[1];
|
||||
sOverrides.onSafelyStartCallback = targetInfo -> {
|
||||
@@ -587,17 +607,20 @@ public class ResolverActivityTest {
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(sOverrides.workProfileUserHandle))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
eq(sOverrides.workProfileUserHandle)))
|
||||
.thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
eq(sOverrides.workProfileUserHandle))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
eq(sOverrides.workProfileUserHandle)))
|
||||
.thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
|
||||
when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
Mockito.isA(List.class)))
|
||||
.thenReturn(new ArrayList<>(personalResolvedComponentInfos));
|
||||
when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
|
||||
Mockito.anyBoolean(),
|
||||
Mockito.isA(List.class),
|
||||
@@ -678,6 +701,20 @@ public class ResolverActivityTest {
|
||||
return infoList;
|
||||
}
|
||||
|
||||
private List<ResolvedComponentInfo> createResolvedComponentsForTestWithOtherProfile(
|
||||
int numberOfResults, int userId) {
|
||||
List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
|
||||
for (int i = 0; i < numberOfResults; i++) {
|
||||
if (i == 0) {
|
||||
infoList.add(
|
||||
ResolverDataProvider.createResolvedComponentInfoWithOtherId(i, userId));
|
||||
} else {
|
||||
infoList.add(ResolverDataProvider.createResolvedComponentInfo(i));
|
||||
}
|
||||
}
|
||||
return infoList;
|
||||
}
|
||||
|
||||
private void waitForIdle() {
|
||||
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user