Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1987dfa0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Added a "lite" flag on ContentCaptureOptions."

parents 15000fa4 5001b3bb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+34 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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);
@@ -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);
@@ -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();
@@ -171,6 +205,5 @@ public final class ContentCaptureOptions implements Parcelable {
                public ContentCaptureOptions[] newArray(int size) {
                    return new ContentCaptureOptions[size];
                }

    };
}
+9 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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();
    }

@@ -279,6 +283,7 @@ public final class ContentCaptureManager {
     */
    @UiThread
    public void flush(@FlushReason int reason) {
        if (mOptions.lite) return;
        getMainContentCaptureSession().flush(reason);
    }

@@ -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 {
@@ -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
@@ -342,6 +348,8 @@ public final class ContentCaptureManager {
     * </ul>
     */
    public boolean isContentCaptureEnabled() {
        if (mOptions.lite) return false;

        final MainContentCaptureSession mainSession;
        synchronized (mLock) {
            mainSession = mMainSession;
+4 −0
Original line number Diff line number Diff line
@@ -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");
            }