Loading api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -588,12 +588,14 @@ package android.content { } public final class ContentCaptureOptions implements android.os.Parcelable { ctor public ContentCaptureOptions(int); ctor public ContentCaptureOptions(int, int, int, int, int, @Nullable android.util.ArraySet<android.content.ComponentName>); method public int describeContents(); method public static android.content.ContentCaptureOptions forWhitelistingItself(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentCaptureOptions> CREATOR; field public final int idleFlushingFrequencyMs; field public final boolean lite; field public final int logHistorySize; field public final int loggingLevel; field public final int maxBufferSize; Loading core/java/android/content/ContentCaptureOptions.java +34 −1 Original line number Diff line number Diff line Loading @@ -72,9 +72,29 @@ public final class ContentCaptureOptions implements Parcelable { @Nullable public final ArraySet<ComponentName> whitelistedComponents; /** * Used to enable just a small set of APIs so it can used by activities belonging to the * content capture service APK. */ public final boolean lite; public ContentCaptureOptions(int loggingLevel) { this(/* lite= */ true, loggingLevel, /* maxBufferSize= */ 0, /* idleFlushingFrequencyMs= */ 0, /* textChangeFlushingFrequencyMs= */ 0, /* logHistorySize= */ 0, /* whitelistedComponents= */ null); } public ContentCaptureOptions(int loggingLevel, int maxBufferSize, int idleFlushingFrequencyMs, int textChangeFlushingFrequencyMs, int logHistorySize, @Nullable ArraySet<ComponentName> whitelistedComponents) { this(/* lite= */ false, loggingLevel, maxBufferSize, idleFlushingFrequencyMs, textChangeFlushingFrequencyMs, logHistorySize, whitelistedComponents); } private ContentCaptureOptions(boolean lite, int loggingLevel, int maxBufferSize, int idleFlushingFrequencyMs, int textChangeFlushingFrequencyMs, int logHistorySize, @Nullable ArraySet<ComponentName> whitelistedComponents) { this.lite = lite; this.loggingLevel = loggingLevel; this.maxBufferSize = maxBufferSize; this.idleFlushingFrequencyMs = idleFlushingFrequencyMs; Loading Loading @@ -115,6 +135,9 @@ public final class ContentCaptureOptions implements Parcelable { @Override public String toString() { if (lite) { return "ContentCaptureOptions [(lite) loggingLevel=" + loggingLevel + "]"; } return "ContentCaptureOptions [loggingLevel=" + loggingLevel + ", maxBufferSize=" + maxBufferSize + ", idleFlushingFrequencyMs=" + idleFlushingFrequencyMs + ", textChangeFlushingFrequencyMs=" + textChangeFlushingFrequencyMs Loading @@ -125,6 +148,10 @@ public final class ContentCaptureOptions implements Parcelable { /** @hide */ public void dumpShort(@NonNull PrintWriter pw) { pw.print("logLvl="); pw.print(loggingLevel); if (lite) { pw.print(", lite"); return; } pw.print(", bufferSize="); pw.print(maxBufferSize); pw.print(", idle="); pw.print(idleFlushingFrequencyMs); pw.print(", textIdle="); pw.print(textChangeFlushingFrequencyMs); Loading @@ -141,7 +168,10 @@ public final class ContentCaptureOptions implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeBoolean(lite); parcel.writeInt(loggingLevel); if (lite) return; parcel.writeInt(maxBufferSize); parcel.writeInt(idleFlushingFrequencyMs); parcel.writeInt(textChangeFlushingFrequencyMs); Loading @@ -154,7 +184,11 @@ public final class ContentCaptureOptions implements Parcelable { @Override public ContentCaptureOptions createFromParcel(Parcel parcel) { final boolean lite = parcel.readBoolean(); final int loggingLevel = parcel.readInt(); if (lite) { return new ContentCaptureOptions(loggingLevel); } final int maxBufferSize = parcel.readInt(); final int idleFlushingFrequencyMs = parcel.readInt(); final int textChangeFlushingFrequencyMs = parcel.readInt(); Loading @@ -171,6 +205,5 @@ public final class ContentCaptureOptions implements Parcelable { public ContentCaptureOptions[] newArray(int size) { return new ContentCaptureOptions[size]; } }; } core/java/android/view/contentcapture/ContentCaptureManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ public final class ContentCaptureManager { @UiThread public void onActivityCreated(@NonNull IBinder applicationToken, @NonNull ComponentName activityComponent, int flags) { if (mOptions.lite) return; synchronized (mLock) { mFlags |= flags; getMainContentCaptureSession().start(applicationToken, activityComponent, mFlags); Loading @@ -255,18 +256,21 @@ public final class ContentCaptureManager { /** @hide */ @UiThread public void onActivityResumed() { if (mOptions.lite) return; getMainContentCaptureSession().notifySessionLifecycle(/* started= */ true); } /** @hide */ @UiThread public void onActivityPaused() { if (mOptions.lite) return; getMainContentCaptureSession().notifySessionLifecycle(/* started= */ false); } /** @hide */ @UiThread public void onActivityDestroyed() { if (mOptions.lite) return; getMainContentCaptureSession().destroy(); } Loading @@ -279,6 +283,7 @@ public final class ContentCaptureManager { */ @UiThread public void flush(@FlushReason int reason) { if (mOptions.lite) return; getMainContentCaptureSession().flush(reason); } Loading @@ -288,7 +293,7 @@ public final class ContentCaptureManager { */ @Nullable public ComponentName getServiceComponentName() { if (!isContentCaptureEnabled()) return null; if (!isContentCaptureEnabled() && !mOptions.lite) return null; final SyncResultReceiver resultReceiver = new SyncResultReceiver(SYNC_CALLS_TIMEOUT_MS); try { Loading @@ -307,6 +312,7 @@ public final class ContentCaptureManager { * * @hide */ // TODO: use "lite" options as it's done by activities from the content capture service @Nullable public static ComponentName getServiceSettingsComponentName() { final IBinder binder = ServiceManager Loading Loading @@ -342,6 +348,8 @@ public final class ContentCaptureManager { * </ul> */ public boolean isContentCaptureEnabled() { if (mOptions.lite) return false; final MainContentCaptureSession mainSession; synchronized (mLock) { mainSession = mMainSession; Loading services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java +4 −0 Original line number Diff line number Diff line Loading @@ -459,6 +459,10 @@ final class ContentCapturePerUserService @Nullable ContentCaptureOptions getOptionsForPackageLocked(@NonNull String packageName) { if (!mWhitelistHelper.isWhitelisted(packageName)) { if (packageName.equals(getServicePackageName())) { if (mMaster.verbose) Slog.v(mTag, "getOptionsForPackage() lite for " + packageName); return new ContentCaptureOptions(mMaster.mDevCfgLoggingLevel); } if (mMaster.verbose) { Slog.v(mTag, "getOptionsForPackage(" + packageName + "): not whitelisted"); } Loading Loading
api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -588,12 +588,14 @@ package android.content { } public final class ContentCaptureOptions implements android.os.Parcelable { ctor public ContentCaptureOptions(int); ctor public ContentCaptureOptions(int, int, int, int, int, @Nullable android.util.ArraySet<android.content.ComponentName>); method public int describeContents(); method public static android.content.ContentCaptureOptions forWhitelistingItself(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentCaptureOptions> CREATOR; field public final int idleFlushingFrequencyMs; field public final boolean lite; field public final int logHistorySize; field public final int loggingLevel; field public final int maxBufferSize; Loading
core/java/android/content/ContentCaptureOptions.java +34 −1 Original line number Diff line number Diff line Loading @@ -72,9 +72,29 @@ public final class ContentCaptureOptions implements Parcelable { @Nullable public final ArraySet<ComponentName> whitelistedComponents; /** * Used to enable just a small set of APIs so it can used by activities belonging to the * content capture service APK. */ public final boolean lite; public ContentCaptureOptions(int loggingLevel) { this(/* lite= */ true, loggingLevel, /* maxBufferSize= */ 0, /* idleFlushingFrequencyMs= */ 0, /* textChangeFlushingFrequencyMs= */ 0, /* logHistorySize= */ 0, /* whitelistedComponents= */ null); } public ContentCaptureOptions(int loggingLevel, int maxBufferSize, int idleFlushingFrequencyMs, int textChangeFlushingFrequencyMs, int logHistorySize, @Nullable ArraySet<ComponentName> whitelistedComponents) { this(/* lite= */ false, loggingLevel, maxBufferSize, idleFlushingFrequencyMs, textChangeFlushingFrequencyMs, logHistorySize, whitelistedComponents); } private ContentCaptureOptions(boolean lite, int loggingLevel, int maxBufferSize, int idleFlushingFrequencyMs, int textChangeFlushingFrequencyMs, int logHistorySize, @Nullable ArraySet<ComponentName> whitelistedComponents) { this.lite = lite; this.loggingLevel = loggingLevel; this.maxBufferSize = maxBufferSize; this.idleFlushingFrequencyMs = idleFlushingFrequencyMs; Loading Loading @@ -115,6 +135,9 @@ public final class ContentCaptureOptions implements Parcelable { @Override public String toString() { if (lite) { return "ContentCaptureOptions [(lite) loggingLevel=" + loggingLevel + "]"; } return "ContentCaptureOptions [loggingLevel=" + loggingLevel + ", maxBufferSize=" + maxBufferSize + ", idleFlushingFrequencyMs=" + idleFlushingFrequencyMs + ", textChangeFlushingFrequencyMs=" + textChangeFlushingFrequencyMs Loading @@ -125,6 +148,10 @@ public final class ContentCaptureOptions implements Parcelable { /** @hide */ public void dumpShort(@NonNull PrintWriter pw) { pw.print("logLvl="); pw.print(loggingLevel); if (lite) { pw.print(", lite"); return; } pw.print(", bufferSize="); pw.print(maxBufferSize); pw.print(", idle="); pw.print(idleFlushingFrequencyMs); pw.print(", textIdle="); pw.print(textChangeFlushingFrequencyMs); Loading @@ -141,7 +168,10 @@ public final class ContentCaptureOptions implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeBoolean(lite); parcel.writeInt(loggingLevel); if (lite) return; parcel.writeInt(maxBufferSize); parcel.writeInt(idleFlushingFrequencyMs); parcel.writeInt(textChangeFlushingFrequencyMs); Loading @@ -154,7 +184,11 @@ public final class ContentCaptureOptions implements Parcelable { @Override public ContentCaptureOptions createFromParcel(Parcel parcel) { final boolean lite = parcel.readBoolean(); final int loggingLevel = parcel.readInt(); if (lite) { return new ContentCaptureOptions(loggingLevel); } final int maxBufferSize = parcel.readInt(); final int idleFlushingFrequencyMs = parcel.readInt(); final int textChangeFlushingFrequencyMs = parcel.readInt(); Loading @@ -171,6 +205,5 @@ public final class ContentCaptureOptions implements Parcelable { public ContentCaptureOptions[] newArray(int size) { return new ContentCaptureOptions[size]; } }; }
core/java/android/view/contentcapture/ContentCaptureManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ public final class ContentCaptureManager { @UiThread public void onActivityCreated(@NonNull IBinder applicationToken, @NonNull ComponentName activityComponent, int flags) { if (mOptions.lite) return; synchronized (mLock) { mFlags |= flags; getMainContentCaptureSession().start(applicationToken, activityComponent, mFlags); Loading @@ -255,18 +256,21 @@ public final class ContentCaptureManager { /** @hide */ @UiThread public void onActivityResumed() { if (mOptions.lite) return; getMainContentCaptureSession().notifySessionLifecycle(/* started= */ true); } /** @hide */ @UiThread public void onActivityPaused() { if (mOptions.lite) return; getMainContentCaptureSession().notifySessionLifecycle(/* started= */ false); } /** @hide */ @UiThread public void onActivityDestroyed() { if (mOptions.lite) return; getMainContentCaptureSession().destroy(); } Loading @@ -279,6 +283,7 @@ public final class ContentCaptureManager { */ @UiThread public void flush(@FlushReason int reason) { if (mOptions.lite) return; getMainContentCaptureSession().flush(reason); } Loading @@ -288,7 +293,7 @@ public final class ContentCaptureManager { */ @Nullable public ComponentName getServiceComponentName() { if (!isContentCaptureEnabled()) return null; if (!isContentCaptureEnabled() && !mOptions.lite) return null; final SyncResultReceiver resultReceiver = new SyncResultReceiver(SYNC_CALLS_TIMEOUT_MS); try { Loading @@ -307,6 +312,7 @@ public final class ContentCaptureManager { * * @hide */ // TODO: use "lite" options as it's done by activities from the content capture service @Nullable public static ComponentName getServiceSettingsComponentName() { final IBinder binder = ServiceManager Loading Loading @@ -342,6 +348,8 @@ public final class ContentCaptureManager { * </ul> */ public boolean isContentCaptureEnabled() { if (mOptions.lite) return false; final MainContentCaptureSession mainSession; synchronized (mLock) { mainSession = mMainSession; Loading
services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java +4 −0 Original line number Diff line number Diff line Loading @@ -459,6 +459,10 @@ final class ContentCapturePerUserService @Nullable ContentCaptureOptions getOptionsForPackageLocked(@NonNull String packageName) { if (!mWhitelistHelper.isWhitelisted(packageName)) { if (packageName.equals(getServicePackageName())) { if (mMaster.verbose) Slog.v(mTag, "getOptionsForPackage() lite for " + packageName); return new ContentCaptureOptions(mMaster.mDevCfgLoggingLevel); } if (mMaster.verbose) { Slog.v(mTag, "getOptionsForPackage(" + packageName + "): not whitelisted"); } Loading