Merge "Fixes AppsFilterTest" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-06 21:09:48 +00:00
committed by Android (Google) Code Review

View File

@@ -17,7 +17,9 @@
package com.android.server.pm; package com.android.server.pm;
import static org.hamcrest.Matchers.arrayContaining; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.empty;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
@@ -48,7 +50,6 @@ import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.parsing.pkg.PackageImpl; import com.android.server.pm.parsing.pkg.PackageImpl;
import com.android.server.pm.parsing.pkg.ParsedPackage; import com.android.server.pm.parsing.pkg.ParsedPackage;
import org.hamcrest.Matcher;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -58,7 +59,7 @@ import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.util.Arrays; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -650,32 +651,32 @@ public class AppsFilterTest {
final int hasProviderAppId = Process.FIRST_APPLICATION_UID + 1; final int hasProviderAppId = Process.FIRST_APPLICATION_UID + 1;
final int queriesProviderAppId = Process.FIRST_APPLICATION_UID + 2; final int queriesProviderAppId = Process.FIRST_APPLICATION_UID + 2;
PackageSetting system = simulateAddPackage(appsFilter, pkg("some.system.pkg"), systemAppId); PackageSetting system = simulateAddPackage(appsFilter, pkg("some.system.pkg"), systemAppId);
PackageSetting seesNothing = simulateAddPackage(appsFilter, pkg("some.system.pkg"), PackageSetting seesNothing = simulateAddPackage(appsFilter, pkg("com.some.package"),
seesNothingAppId); seesNothingAppId);
PackageSetting hasProvider = simulateAddPackage(appsFilter, PackageSetting hasProvider = simulateAddPackage(appsFilter,
pkgWithProvider("com.some.package", "com.some.authority"), hasProviderAppId); pkgWithProvider("com.some.other.package", "com.some.authority"), hasProviderAppId);
PackageSetting queriesProvider = simulateAddPackage(appsFilter, PackageSetting queriesProvider = simulateAddPackage(appsFilter,
pkgQueriesProvider("com.some.other.package", "com.some.authority"), pkgQueriesProvider("com.yet.some.other.package", "com.some.authority"),
queriesProviderAppId); queriesProviderAppId);
final int[] systemFilter = final int[] systemFilter =
appsFilter.getVisibilityWhitelist(system, new int[]{0}, mExisting).get(0); appsFilter.getVisibilityWhitelist(system, new int[]{0}, mExisting).get(0);
assertThat(Arrays.asList(systemFilter), arrayContaining(systemAppId)); assertThat(toList(systemFilter), empty());
final int[] seesNothingFilter = final int[] seesNothingFilter =
appsFilter.getVisibilityWhitelist(seesNothing, new int[]{0}, mExisting).get(0); appsFilter.getVisibilityWhitelist(seesNothing, new int[]{0}, mExisting).get(0);
assertThat(Arrays.asList(seesNothingFilter), assertThat(toList(seesNothingFilter),
arrayContaining(systemAppId, seesNothingAppId)); contains(seesNothingAppId));
final int[] hasProviderFilter = final int[] hasProviderFilter =
appsFilter.getVisibilityWhitelist(hasProvider, new int[]{0}, mExisting).get(0); appsFilter.getVisibilityWhitelist(hasProvider, new int[]{0}, mExisting).get(0);
assertThat(Arrays.asList(hasProviderFilter), assertThat(toList(hasProviderFilter),
arrayContaining(systemAppId, hasProviderAppId, queriesProviderAppId)); contains(hasProviderAppId, queriesProviderAppId));
int[] queriesProviderFilter = int[] queriesProviderFilter =
appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0); appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0);
assertThat(Arrays.asList(queriesProviderFilter), assertThat(toList(queriesProviderFilter),
arrayContaining(systemAppId, queriesProviderAppId)); contains(queriesProviderAppId));
// provider read // provider read
appsFilter.grantImplicitAccess(hasProviderAppId, queriesProviderAppId); appsFilter.grantImplicitAccess(hasProviderAppId, queriesProviderAppId);
@@ -683,11 +684,16 @@ public class AppsFilterTest {
// ensure implicit access is included in the filter // ensure implicit access is included in the filter
queriesProviderFilter = queriesProviderFilter =
appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0); appsFilter.getVisibilityWhitelist(queriesProvider, new int[]{0}, mExisting).get(0);
assertThat(Arrays.asList(queriesProviderFilter), assertThat(toList(queriesProviderFilter),
arrayContaining(systemAppId, hasProviderAppId, queriesProviderAppId)); contains(hasProviderAppId, queriesProviderAppId));
} }
private void assertThat(List<int[]> asList, Matcher<Integer[]> arrayContainingInAnyOrder) { private List<Integer> toList(int[] array) {
ArrayList<Integer> ret = new ArrayList<>(array.length);
for (int i = 0; i < array.length; i++) {
ret.add(i, array[i]);
}
return ret;
} }
private interface WithSettingBuilder { private interface WithSettingBuilder {