diff options
| author | Joanne Chung <joannechung@google.com> | 2019-07-19 23:41:32 +0800 |
|---|---|---|
| committer | Joanne Chung <joannechung@google.com> | 2019-08-12 19:04:52 +0800 |
| commit | 9e247b1564431aca745818b2eaba79e914bec38f (patch) | |
| tree | 6fcc0bd592072aec6a7e10a8053e2f6c9746d50a /core/java/android/content/AutofillOptions.java | |
| parent | 6538dbfa8038bbf33ad4c651ec6e4dc9c6c629dc (diff) | |
Move disable autofill from AutofillManagerService to AutofillOptions.
Bug: 125007037
Test: atest CtsAutoFillServiceTestCases
Change-Id: Ib139cffaced15f5a458cb07e8b6cc1502492c9a5
Diffstat (limited to 'core/java/android/content/AutofillOptions.java')
| -rw-r--r-- | core/java/android/content/AutofillOptions.java | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/core/java/android/content/AutofillOptions.java b/core/java/android/content/AutofillOptions.java index 8fb9501b3319..082663e11ea0 100644 --- a/core/java/android/content/AutofillOptions.java +++ b/core/java/android/content/AutofillOptions.java @@ -21,6 +21,8 @@ import android.annotation.TestApi; import android.app.ActivityThread; import android.os.Parcel; import android.os.Parcelable; +import android.os.SystemClock; +import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.view.autofill.AutofillManager; @@ -62,6 +64,18 @@ public final class AutofillOptions implements Parcelable { @Nullable public ArraySet<ComponentName> whitelistedActivitiesForAugmentedAutofill; + /** + * The package disable expiration by autofill service. + */ + public long appDisabledExpiration; + + /** + * The disabled Activities of the package. key is component name string, value is when they + * will be enabled. + */ + @Nullable + public ArrayMap<String, Long> disabledActivities; + public AutofillOptions(int loggingLevel, boolean compatModeEnabled) { this.loggingLevel = loggingLevel; this.compatModeEnabled = compatModeEnabled; @@ -82,6 +96,27 @@ public final class AutofillOptions implements Parcelable { } /** + * Returns if autofill is disabled by service to the given activity. + */ + public boolean isAutofillDisabledLocked(@NonNull ComponentName componentName) { + final long elapsedTime = SystemClock.elapsedRealtime(); + final String component = componentName.flattenToString(); + // Check app first. + if (appDisabledExpiration >= elapsedTime) return true; + + // Then check activities. + if (disabledActivities != null) { + final Long expiration = disabledActivities.get(component); + if (expiration != null) { + if (expiration >= elapsedTime) return true; + disabledActivities.remove(component); + } + } + appDisabledExpiration = 0; + return false; + } + + /** * @hide */ @TestApi @@ -110,7 +145,8 @@ public final class AutofillOptions implements Parcelable { @Override public String toString() { return "AutofillOptions [loggingLevel=" + loggingLevel + ", compatMode=" + compatModeEnabled - + ", augmentedAutofillEnabled=" + augmentedAutofillEnabled + "]"; + + ", augmentedAutofillEnabled=" + augmentedAutofillEnabled + + ", appDisabledExpiration=" + appDisabledExpiration + "]"; } /** @hide */ @@ -122,6 +158,11 @@ public final class AutofillOptions implements Parcelable { pw.print(", whitelistedActivitiesForAugmentedAutofill="); pw.print(whitelistedActivitiesForAugmentedAutofill); } + pw.print(", appDisabledExpiration="); pw.print(appDisabledExpiration); + if (disabledActivities != null) { + pw.print(", disabledActivities="); + pw.print(disabledActivities); + } } @Override @@ -135,6 +176,16 @@ public final class AutofillOptions implements Parcelable { parcel.writeBoolean(compatModeEnabled); parcel.writeBoolean(augmentedAutofillEnabled); parcel.writeArraySet(whitelistedActivitiesForAugmentedAutofill); + parcel.writeLong(appDisabledExpiration); + final int size = disabledActivities != null ? disabledActivities.size() : 0; + parcel.writeInt(size); + if (size > 0) { + for (int i = 0; i < size; i++) { + final String key = disabledActivities.keyAt(i); + parcel.writeString(key); + parcel.writeLong(disabledActivities.get(key)); + } + } } public static final @android.annotation.NonNull Parcelable.Creator<AutofillOptions> CREATOR = @@ -148,6 +199,14 @@ public final class AutofillOptions implements Parcelable { options.augmentedAutofillEnabled = parcel.readBoolean(); options.whitelistedActivitiesForAugmentedAutofill = (ArraySet<ComponentName>) parcel.readArraySet(null); + options.appDisabledExpiration = parcel.readLong(); + final int size = parcel.readInt(); + if (size > 0) { + options.disabledActivities = new ArrayMap<>(); + for (int i = 0; i < size; i++) { + options.disabledActivities.put(parcel.readString(), parcel.readLong()); + } + } return options; } |
