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

Commit 7bb189f1 authored by Haoran Zhang's avatar Haoran Zhang Committed by Android (Google) Code Review
Browse files

Merge "Adding two experiment flags to definie the condition to include views...

Merge "Adding two experiment flags to definie the condition to include views in assist structure (AS)." into udc-dev
parents 245b979b 37cb62c9
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.view.animation.Transformation;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.view.autofill.Helper;
import android.view.inspector.InspectableProperty;
import android.view.inspector.InspectableProperty.EnumEntry;
@@ -3709,6 +3710,20 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        return children;
    }

    private AutofillManager getAutofillManager() {
        return mContext.getSystemService(AutofillManager.class);
    }

    private boolean shouldIncludeAllChildrenViewWithAutofillTypeNotNone(AutofillManager afm) {
        if (afm == null) return false;
        return afm.shouldIncludeAllChildrenViewsWithAutofillTypeNotNoneInAssistStructure();
    }

    private boolean shouldIncludeAllChildrenViews(AutofillManager afm){
        if (afm == null) return false;
        return afm.shouldIncludeAllChildrenViewInAssistStructure();
    }

    /** @hide */
    private void populateChildrenForAutofill(ArrayList<View> list, @AutofillFlags int flags) {
        final int childrenCount = mChildrenCount;
@@ -3718,6 +3733,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
        final ArrayList<View> preorderedList = buildOrderedChildList();
        final boolean customOrder = preorderedList == null
                && isChildrenDrawingOrderEnabled();
        final AutofillManager afm = getAutofillManager();
        for (int i = 0; i < childrenCount; i++) {
            final int childIndex = getAndVerifyPreorderedIndex(childrenCount, i, customOrder);
            final View child = (preorderedList == null)
@@ -3725,7 +3741,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
            if ((flags & AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS) != 0
                    || child.isImportantForAutofill()
                    || (child.isMatchingAutofillableHeuristics()
                        && !child.isActivityDeniedForAutofillForUnimportantView())) {
                        && !child.isActivityDeniedForAutofillForUnimportantView())
                    || (shouldIncludeAllChildrenViewWithAutofillTypeNotNone(afm)
                        && child.getAutofillType() != AUTOFILL_TYPE_NONE)
                    || shouldIncludeAllChildrenViews(afm)){
                list.add(child);
            } else if (child instanceof ViewGroup) {
                ((ViewGroup) child).populateChildrenForAutofill(list, flags);
+40 −0
Original line number Diff line number Diff line
@@ -193,6 +193,24 @@ public class AutofillFeatureFlags {
    public static final String DEVICE_CONFIG_SHOULD_ENABLE_AUTOFILL_ON_ALL_VIEW_TYPES =
            "should_enable_autofill_on_all_view_types";

    /**
     * Whether include all autofill type not none views in assist structure
     *
     * @hide
     */
    public static final String
        DEVICE_CONFIG_INCLUDE_ALL_AUTOFILL_TYPE_NOT_NONE_VIEWS_IN_ASSIST_STRUCTURE =
            "include_all_autofill_type_not_none_views_in_assist_structure";

    /**
     * Whether include all views in assist structure
     *
     * @hide
     */
    public static final String
        DEVICE_CONFIG_INCLUDE_ALL_VIEWS_IN_ASSIST_STRUCTURE =
            "include_all_views_in_assist_structure";

    // END AUTOFILL FOR ALL APPS FLAGS //


@@ -398,6 +416,28 @@ public class AutofillFeatureFlags {
            DeviceConfig.NAMESPACE_AUTOFILL,
            DEVICE_CONFIG_PACKAGE_AND_ACTIVITY_ALLOWLIST_FOR_TRIGGERING_FILL_REQUEST, "");
    }
    /**
     * Whether include all views that have autofill type not none in assist structure.
     *
     * @hide
     */
    public static boolean shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue() {
        return DeviceConfig.getBoolean(
            DeviceConfig.NAMESPACE_AUTOFILL,
            DEVICE_CONFIG_INCLUDE_ALL_AUTOFILL_TYPE_NOT_NONE_VIEWS_IN_ASSIST_STRUCTURE, false);
    }

    /**
     * Whether include all views in assist structure.
     *
     * @hide
     */
    public static boolean shouldIncludeAllChildrenViewInAssistStructure() {
        return DeviceConfig.getBoolean(
            DeviceConfig.NAMESPACE_AUTOFILL,
            DEVICE_CONFIG_INCLUDE_ALL_VIEWS_IN_ASSIST_STRUCTURE, false);
    }


    // START AUTOFILL PCC CLASSIFICATION FUNCTIONS

+26 −0
Original line number Diff line number Diff line
@@ -707,6 +707,12 @@ public final class AutofillManager {
    // An allowed activity set read from device config
    private Set<String> mAllowedActivitySet = new ArraySet<>();

    // Indicate whether should include all view with autofill type not none in assist structure
    private boolean mShouldIncludeAllViewsWithAutofillTypeNotNoneInAssistStructure;

    // Indicate whether should include all view in assist structure
    private boolean mShouldIncludeAllChildrenViewInAssistStructure;

    // Indicates whether called the showAutofillDialog() method.
    private boolean mShowAutofillDialogCalled = false;

@@ -913,6 +919,12 @@ public final class AutofillManager {
            mAllowedActivitySet = getDeniedOrAllowedActivitySetFromString(
                    allowlistString, packageName);
        }

        mShouldIncludeAllViewsWithAutofillTypeNotNoneInAssistStructure
            = AutofillFeatureFlags.shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue();

        mShouldIncludeAllChildrenViewInAssistStructure
            = AutofillFeatureFlags.shouldIncludeAllChildrenViewInAssistStructure();
    }

    /**
@@ -962,6 +974,20 @@ public final class AutofillManager {
        return listString.indexOf(packageName + ":") != -1;
    }

    /**
     * @hide
     */
    public boolean shouldIncludeAllChildrenViewsWithAutofillTypeNotNoneInAssistStructure()  {
        return mShouldIncludeAllViewsWithAutofillTypeNotNoneInAssistStructure;
    }

    /**
     * @hide
     */
    public boolean shouldIncludeAllChildrenViewInAssistStructure() {
        return mShouldIncludeAllChildrenViewInAssistStructure;
    }

    /**
     * Get the denied or allowed activitiy names under specified package from the list string and
     * set it in fields accordingly