Check for empty arguments in setWhitelist().

Bug: 125348180
Test: atest CtsContentCaptureServiceTestCases
Test: atest FrameworksCoreTests:com.android.internal.infra.WhitelistHelperTest
Change-Id: I9c2296ebe2762e97f03350b365b148429b15ab60
This commit is contained in:
Adam He
2019-03-05 14:20:44 -08:00
parent 6240eab185
commit 70ebc5a508
5 changed files with 29 additions and 3 deletions

View File

@@ -71,12 +71,14 @@ public final class AutofillOptions implements Parcelable {
* Returns whether activity is whitelisted for augmented autofill.
*/
public boolean isAugmentedAutofillEnabled(@NonNull Context context) {
if (!augmentedAutofillEnabled) return false;
final ContentCaptureClient contentCaptureClient = context.getContentCaptureClient();
if (contentCaptureClient == null) return false;
final ComponentName component = contentCaptureClient.contentCaptureClientGetComponentName();
return augmentedAutofillEnabled && (whitelistedActivitiesForAugmentedAutofill == null
|| whitelistedActivitiesForAugmentedAutofill.contains(component));
return whitelistedActivitiesForAugmentedAutofill == null
|| whitelistedActivitiesForAugmentedAutofill.contains(component);
}
/**

View File

@@ -49,12 +49,19 @@ public final class WhitelistHelper {
*
* @param packageNames packages to be whitelisted.
* @param components activities to be whitelisted.
*
* @throws IllegalArgumentException if packages or components are empty.
*/
public void setWhitelist(@Nullable ArraySet<String> packageNames,
@Nullable ArraySet<ComponentName> components) {
mWhitelistedPackages = null;
if (packageNames == null && components == null) return;
if ((packageNames != null && packageNames.isEmpty())
|| (components != null && components.isEmpty())) {
throw new IllegalArgumentException("Packages or Components cannot be empty.");
}
mWhitelistedPackages = new ArrayMap<>();
if (packageNames != null) {

View File

@@ -46,7 +46,17 @@ public class WhitelistHelperTest {
private ComponentName mComponentDifferentPkg = new ComponentName(mPackage2, "class3");
@Test
public void testWhitelistHelper_invalidArguments() {
public void testSetWhitelist_emptyArguments() {
assertThrows(IllegalArgumentException.class,
() -> mWhitelistHelper.setWhitelist(new ArraySet<>(), null));
assertThrows(IllegalArgumentException.class,
() -> mWhitelistHelper.setWhitelist(null, new ArraySet<>()));
assertThrows(IllegalArgumentException.class,
() -> mWhitelistHelper.setWhitelist(new ArraySet<>(), new ArraySet<>()));
}
@Test
public void testWhitelistHelper_nullArguments() {
assertThrows(NullPointerException.class,
() -> mWhitelistHelper.isWhitelisted((String) null));
assertThrows(NullPointerException.class,

View File

@@ -1177,6 +1177,10 @@ final class AutofillManagerServiceImpl
.getWhitelistedComponents(packageName);
}
/**
*
* @throws IllegalArgumentException if packages or components are empty.
*/
private void whitelistForAugmentedAutofillPackages(@Nullable List<String> packages,
@Nullable List<ComponentName> components) {
// TODO(b/123100824): add CTS test for when it's null

View File

@@ -275,6 +275,9 @@ final class ContentCapturePerUserService
return mWhitelistHelper.isWhitelisted(componentName);
}
/**
* @throws IllegalArgumentException if packages or components are empty.
*/
private void setWhitelist(@Nullable List<String> packages,
@Nullable List<ComponentName> components) {
// TODO(b/122595322): add CTS test for when it's null