summaryrefslogtreecommitdiff
path: root/core/java/android/content/AutofillOptions.java
diff options
context:
space:
mode:
authorJoanne Chung <joannechung@google.com>2019-07-19 23:41:32 +0800
committerJoanne Chung <joannechung@google.com>2019-08-12 19:04:52 +0800
commit9e247b1564431aca745818b2eaba79e914bec38f (patch)
tree6fcc0bd592072aec6a7e10a8053e2f6c9746d50a /core/java/android/content/AutofillOptions.java
parent6538dbfa8038bbf33ad4c651ec6e4dc9c6c629dc (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.java61
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;
}