Loading core/java/android/view/ViewGroup.java +20 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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) Loading @@ -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); Loading core/java/android/view/autofill/AutofillFeatureFlags.java +40 −0 Original line number Diff line number Diff line Loading @@ -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 // Loading Loading @@ -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 Loading core/java/android/view/autofill/AutofillManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -913,6 +919,12 @@ public final class AutofillManager { mAllowedActivitySet = getDeniedOrAllowedActivitySetFromString( allowlistString, packageName); } mShouldIncludeAllViewsWithAutofillTypeNotNoneInAssistStructure = AutofillFeatureFlags.shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue(); mShouldIncludeAllChildrenViewInAssistStructure = AutofillFeatureFlags.shouldIncludeAllChildrenViewInAssistStructure(); } /** Loading Loading @@ -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 Loading Loading
core/java/android/view/ViewGroup.java +20 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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) Loading @@ -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); Loading
core/java/android/view/autofill/AutofillFeatureFlags.java +40 −0 Original line number Diff line number Diff line Loading @@ -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 // Loading Loading @@ -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 Loading
core/java/android/view/autofill/AutofillManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -913,6 +919,12 @@ public final class AutofillManager { mAllowedActivitySet = getDeniedOrAllowedActivitySetFromString( allowlistString, packageName); } mShouldIncludeAllViewsWithAutofillTypeNotNoneInAssistStructure = AutofillFeatureFlags.shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue(); mShouldIncludeAllChildrenViewInAssistStructure = AutofillFeatureFlags.shouldIncludeAllChildrenViewInAssistStructure(); } /** Loading Loading @@ -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 Loading