diff --git a/core/java/android/content/AutofillOptions.java b/core/java/android/content/AutofillOptions.java index ba556cced3c5d..f59bc9891c86a 100644 --- a/core/java/android/content/AutofillOptions.java +++ b/core/java/android/content/AutofillOptions.java @@ -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); } /** diff --git a/core/java/com/android/internal/infra/WhitelistHelper.java b/core/java/com/android/internal/infra/WhitelistHelper.java index 7a2cb28059dfd..eec82bc2403e1 100644 --- a/core/java/com/android/internal/infra/WhitelistHelper.java +++ b/core/java/com/android/internal/infra/WhitelistHelper.java @@ -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 packageNames, @Nullable ArraySet 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) { diff --git a/core/tests/coretests/src/com/android/internal/infra/WhitelistHelperTest.java b/core/tests/coretests/src/com/android/internal/infra/WhitelistHelperTest.java index 8eda4469628f4..ab6830b106d02 100644 --- a/core/tests/coretests/src/com/android/internal/infra/WhitelistHelperTest.java +++ b/core/tests/coretests/src/com/android/internal/infra/WhitelistHelperTest.java @@ -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, diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 0d027440ad2b4..62deaffd9ea43 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -1177,6 +1177,10 @@ final class AutofillManagerServiceImpl .getWhitelistedComponents(packageName); } + /** + * + * @throws IllegalArgumentException if packages or components are empty. + */ private void whitelistForAugmentedAutofillPackages(@Nullable List packages, @Nullable List components) { // TODO(b/123100824): add CTS test for when it's null diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java index 8ab8f8dd47413..955d764797c87 100644 --- a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java +++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java @@ -275,6 +275,9 @@ final class ContentCapturePerUserService return mWhitelistHelper.isWhitelisted(componentName); } + /** + * @throws IllegalArgumentException if packages or components are empty. + */ private void setWhitelist(@Nullable List packages, @Nullable List components) { // TODO(b/122595322): add CTS test for when it's null