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

Commit 4eda9f24 authored by Zhekai Hu's avatar Zhekai Hu Committed by Android (Google) Code Review
Browse files

Merge "Add a method to check whether an application is qualified to export...

Merge "Add a method to check whether an application is qualified to export virtual assist node to ccapi" into main
parents a164b1f6 206e7430
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -16,15 +16,19 @@
package android.view.contentcapture;

import android.content.ComponentName;
import android.content.LocusId;
import android.service.contentcapture.ActivityEvent;
import android.service.contentcapture.ContentCaptureService;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.view.contentcapture.ContentCaptureCondition;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.google.common.collect.ImmutableSet;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -84,6 +88,13 @@ public class MyContentCaptureService extends ContentCaptureService {
            return;
        }

        int enableVirtualChildrenConditionFlag = 0x4;
        ContentCaptureCondition condition =
                new ContentCaptureCondition(
                        new LocusId("__NOT_EXIST"), enableVirtualChildrenConditionFlag);
        setContentCaptureConditions(
                "com.android.perftests.contentcapture", ImmutableSet.of(condition));

        sServiceWatcher.mService = this;
        sServiceWatcher.mCreated.countDown();
        sServiceWatcher.mReadyToClear = false;
+10 −0
Original line number Diff line number Diff line
@@ -40,8 +40,18 @@ public final class ContentCaptureCondition implements Parcelable {
     */
    public static final int FLAG_IS_REGEX = 0x2;

    /** @hide */
    private static final int FLAG_ENABLE_EXPORTING_VIRTUAL_CHILDREN = 0x4;
    /** @hide */
    private static final LocusId LOCUS_ID_NOT_EXIST = new LocusId("__NOT_EXIST");

    /** @hide */
    public static final ContentCaptureCondition CONDITION_ENABLE_EXPORTING_VIRTUAL_CHILDREN =
            new ContentCaptureCondition(LOCUS_ID_NOT_EXIST, FLAG_ENABLE_EXPORTING_VIRTUAL_CHILDREN);

    /** @hide */
    @IntDef(prefix = { "FLAG" }, flag = true, value = {
            FLAG_ENABLE_EXPORTING_VIRTUAL_CHILDREN,
            FLAG_IS_REGEX
    })
    @Retention(RetentionPolicy.SOURCE)
+19 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.app.Service;
import android.content.ComponentName;
import android.content.ContentCaptureOptions;
import android.content.Context;
import android.content.LocusId;
import android.graphics.Canvas;
import android.os.Binder;
import android.os.Handler;
@@ -42,6 +43,7 @@ import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.ArraySet;
import android.util.Dumpable;
import android.util.Log;
import android.util.Slog;
@@ -500,6 +502,9 @@ public final class ContentCaptureManager {
    @NonNull
    final ContentCaptureOptions mOptions;

    @Nullable
    private Set<ContentCaptureCondition> mContentCaptureConditionBuffer;

    // Flags used for starting session.
    @GuardedBy("mLock")
    private int mFlags;
@@ -758,6 +763,20 @@ public final class ContentCaptureManager {
        return true;
    }

    /**
     * @hide
     */
    boolean isContentCaptureConditionEnabled(ContentCaptureCondition condition) {
        if (mContentCaptureConditionBuffer == null) {
            mContentCaptureConditionBuffer = new ArraySet<>();
            Set<ContentCaptureCondition> conditions = getContentCaptureConditions();
            if (conditions != null) {
                mContentCaptureConditionBuffer.addAll(conditions);
            }
        }
        return mContentCaptureConditionBuffer.contains(condition);
    }

    /**
     * Gets the list of conditions for when content capture should be allowed.
     *
+4 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package android.view.contentcapture;

import static android.view.contentcapture.ContentCaptureCondition.CONDITION_ENABLE_EXPORTING_VIRTUAL_CHILDREN;
import static android.view.contentcapture.ContentCaptureEvent.TYPE_CONTEXT_UPDATED;
import static android.view.contentcapture.ContentCaptureEvent.TYPE_SESSION_FINISHED;
import static android.view.contentcapture.ContentCaptureEvent.TYPE_SESSION_FLUSH;
@@ -1032,7 +1033,9 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
                    view.onProvideContentCaptureStructure(structure, /* flags= */ 0);
                    if (Flags.enableExportAssistVirtualNodeToCcapi()
                            && view.getAccessibilityNodeProvider() != null
                            && structure.getAutofillId() != null) {
                            && structure.getAutofillId() != null
                            && mManager.isContentCaptureConditionEnabled(
                                    CONDITION_ENABLE_EXPORTING_VIRTUAL_CHILDREN)) {
                        // TODO: Move this to a background thread to improve performance.
                        Trace.beginSection("notifyVirtualChildrenAppeared");
                        notifyVirtualChildrenAppeared(session, structure.getAutofillId(),