Loading core/api/current.txt +11 −0 Original line number Diff line number Diff line Loading @@ -54248,6 +54248,7 @@ package android.view.autofill { method public void notifyViewExited(@NonNull android.view.View, int); method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean); method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean); method public void notifyVirtualViewsReady(@NonNull android.view.View, @NonNull android.util.SparseArray<android.view.autofill.VirtualViewFillInfo>); method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback); method public void requestAutofill(@NonNull android.view.View); method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect); Loading Loading @@ -54294,6 +54295,16 @@ package android.view.autofill { field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillValue> CREATOR; } public final class VirtualViewFillInfo { method @Nullable public String[] getAutofillHints(); } public static final class VirtualViewFillInfo.Builder { ctor public VirtualViewFillInfo.Builder(); method @NonNull public android.view.autofill.VirtualViewFillInfo build(); method @NonNull public android.view.autofill.VirtualViewFillInfo.Builder setAutofillHints(@NonNull java.lang.String...); } } package android.view.contentcapture { core/java/android/view/autofill/AutofillManager.java +46 −6 Original line number Diff line number Diff line Loading @@ -1234,6 +1234,42 @@ public final class AutofillManager { notifyViewEntered(view, 0); } /** * Called when the virtual views are ready to the user for autofill. * * This method is used to notify autofill system the views are ready to the user. And then * Autofill can do initialization if needed before the user starts to input. For example, do * a pre-fill request for the * <a href="/reference/android/service/autofill/Dataset.html#FillDialogUI">fill dialog</a>. * * @param view the host view that holds a virtual view hierarchy. * @param infos extra information for the virtual views. The key is virtual id which represents * the virtual view in the host view. * * @throws IllegalArgumentException if the {@code infos} was empty */ public void notifyVirtualViewsReady( @NonNull View view, @NonNull SparseArray<VirtualViewFillInfo> infos) { Objects.requireNonNull(infos); if (infos.size() == 0) { throw new IllegalArgumentException("No VirtualViewInfo found"); } if (AutofillFeatureFlags.isFillDialogDisabledForCredentialManager() && view.isCredential()) { if (sDebug) { Log.d(TAG, "Ignoring Fill Dialog request since important for credMan:" + view.getAutofillId().toString()); } return; } for (int i = 0; i < infos.size(); i++) { final VirtualViewFillInfo info = infos.valueAt(i); final int virtualId = infos.indexOfKey(i); notifyViewReadyInner(getAutofillId(view, virtualId), (info == null) ? null : info.getAutofillHints()); } } /** * The {@link AutofillFeatureFlags#DEVICE_CONFIG_AUTOFILL_DIALOG_ENABLED} is {@code true} or * the view have the allowed autofill hints, performs a fill request to know there is any field Loading @@ -1245,9 +1281,6 @@ public final class AutofillManager { if (sDebug) { Log.d(TAG, "notifyViewEnteredForFillDialog:" + v.getAutofillId()); } if (!hasAutofillFeature()) { return; } if (AutofillFeatureFlags.isFillDialogDisabledForCredentialManager() && v.isCredential()) { if (sDebug) { Loading @@ -1256,6 +1289,13 @@ public final class AutofillManager { } return; } notifyViewReadyInner(v.getAutofillId(), v.getAutofillHints()); } private void notifyViewReadyInner(AutofillId id, String[] autofillHints) { if (!hasAutofillFeature()) { return; } synchronized (mLock) { if (mTrackedViews != null) { Loading @@ -1263,7 +1303,7 @@ public final class AutofillManager { // different pages but in the same Activity. We need to reset the // mIsFillRequested flag to allow asking for a new FillRequest when // user switches to other page mTrackedViews.checkViewState(v.getAutofillId()); mTrackedViews.checkViewState(id); } } Loading @@ -1273,9 +1313,9 @@ public final class AutofillManager { } if (mIsFillDialogEnabled || ArrayUtils.containsAny(v.getAutofillHints(), mFillDialogEnabledHints)) { || ArrayUtils.containsAny(autofillHints, mFillDialogEnabledHints)) { if (sDebug) { Log.d(TAG, "Trigger fill request at view entered"); Log.d(TAG, "Trigger fill request when the view is ready."); } int flags = FLAG_SUPPORTS_FILL_DIALOG; Loading core/java/android/view/autofill/VirtualViewFillInfo.java 0 → 100644 +141 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.view.autofill; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.view.View; import com.android.internal.util.DataClass; /** * Information for the virtual view to the autofill framework. */ @DataClass(genBuilder = true) public final class VirtualViewFillInfo { /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @Nullable @SuppressLint("NullableCollection") private String[] mAutofillHints; private static String[] defaultAutofillHints() { return null; } // Code below generated by codegen v1.0.23. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code // // To regenerate run: // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/autofill/VirtualViewFillInfo.java // // To exclude the generated code from IntelliJ auto-formatting enable (one-time): // Settings > Editor > Code Style > Formatter Control //@formatter:off @DataClass.Generated.Member /* package-private */ VirtualViewFillInfo( @Nullable @SuppressLint("NullableCollection") String[] autofillHints) { this.mAutofillHints = autofillHints; com.android.internal.util.AnnotationValidations.validate( SuppressLint.class, null, mAutofillHints, "value", "NullableCollection"); // onConstructed(); // You can define this method to get a callback } /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @DataClass.Generated.Member public @Nullable @SuppressLint("NullableCollection") String[] getAutofillHints() { return mAutofillHints; } /** * A builder for {@link VirtualViewFillInfo} */ @SuppressWarnings("WeakerAccess") @DataClass.Generated.Member public static final class Builder { private @Nullable @SuppressLint("NullableCollection") String[] mAutofillHints; private long mBuilderFieldsSet = 0L; public Builder() { } /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @DataClass.Generated.Member public @android.annotation.NonNull Builder setAutofillHints(@SuppressLint("NullableCollection") @android.annotation.NonNull String... value) { checkNotUsed(); mBuilderFieldsSet |= 0x1; mAutofillHints = value; return this; } /** Builds the instance. This builder should not be touched after calling this! */ public @android.annotation.NonNull VirtualViewFillInfo build() { checkNotUsed(); mBuilderFieldsSet |= 0x2; // Mark builder used if ((mBuilderFieldsSet & 0x1) == 0) { mAutofillHints = defaultAutofillHints(); } VirtualViewFillInfo o = new VirtualViewFillInfo( mAutofillHints); return o; } private void checkNotUsed() { if ((mBuilderFieldsSet & 0x2) != 0) { throw new IllegalStateException( "This Builder should not be reused. Use a new Builder instance instead"); } } } @DataClass.Generated( time = 1674023010954L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/view/autofill/VirtualViewFillInfo.java", inputSignatures = "private @android.annotation.Nullable @android.annotation.SuppressLint java.lang.String[] mAutofillHints\nprivate static java.lang.String[] defaultAutofillHints()\nclass VirtualViewFillInfo extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true)") @Deprecated private void __metadata() {} //@formatter:on // End of generated code } Loading
core/api/current.txt +11 −0 Original line number Diff line number Diff line Loading @@ -54248,6 +54248,7 @@ package android.view.autofill { method public void notifyViewExited(@NonNull android.view.View, int); method public void notifyViewVisibilityChanged(@NonNull android.view.View, boolean); method public void notifyViewVisibilityChanged(@NonNull android.view.View, int, boolean); method public void notifyVirtualViewsReady(@NonNull android.view.View, @NonNull android.util.SparseArray<android.view.autofill.VirtualViewFillInfo>); method public void registerCallback(@Nullable android.view.autofill.AutofillManager.AutofillCallback); method public void requestAutofill(@NonNull android.view.View); method public void requestAutofill(@NonNull android.view.View, int, @NonNull android.graphics.Rect); Loading Loading @@ -54294,6 +54295,16 @@ package android.view.autofill { field @NonNull public static final android.os.Parcelable.Creator<android.view.autofill.AutofillValue> CREATOR; } public final class VirtualViewFillInfo { method @Nullable public String[] getAutofillHints(); } public static final class VirtualViewFillInfo.Builder { ctor public VirtualViewFillInfo.Builder(); method @NonNull public android.view.autofill.VirtualViewFillInfo build(); method @NonNull public android.view.autofill.VirtualViewFillInfo.Builder setAutofillHints(@NonNull java.lang.String...); } } package android.view.contentcapture {
core/java/android/view/autofill/AutofillManager.java +46 −6 Original line number Diff line number Diff line Loading @@ -1234,6 +1234,42 @@ public final class AutofillManager { notifyViewEntered(view, 0); } /** * Called when the virtual views are ready to the user for autofill. * * This method is used to notify autofill system the views are ready to the user. And then * Autofill can do initialization if needed before the user starts to input. For example, do * a pre-fill request for the * <a href="/reference/android/service/autofill/Dataset.html#FillDialogUI">fill dialog</a>. * * @param view the host view that holds a virtual view hierarchy. * @param infos extra information for the virtual views. The key is virtual id which represents * the virtual view in the host view. * * @throws IllegalArgumentException if the {@code infos} was empty */ public void notifyVirtualViewsReady( @NonNull View view, @NonNull SparseArray<VirtualViewFillInfo> infos) { Objects.requireNonNull(infos); if (infos.size() == 0) { throw new IllegalArgumentException("No VirtualViewInfo found"); } if (AutofillFeatureFlags.isFillDialogDisabledForCredentialManager() && view.isCredential()) { if (sDebug) { Log.d(TAG, "Ignoring Fill Dialog request since important for credMan:" + view.getAutofillId().toString()); } return; } for (int i = 0; i < infos.size(); i++) { final VirtualViewFillInfo info = infos.valueAt(i); final int virtualId = infos.indexOfKey(i); notifyViewReadyInner(getAutofillId(view, virtualId), (info == null) ? null : info.getAutofillHints()); } } /** * The {@link AutofillFeatureFlags#DEVICE_CONFIG_AUTOFILL_DIALOG_ENABLED} is {@code true} or * the view have the allowed autofill hints, performs a fill request to know there is any field Loading @@ -1245,9 +1281,6 @@ public final class AutofillManager { if (sDebug) { Log.d(TAG, "notifyViewEnteredForFillDialog:" + v.getAutofillId()); } if (!hasAutofillFeature()) { return; } if (AutofillFeatureFlags.isFillDialogDisabledForCredentialManager() && v.isCredential()) { if (sDebug) { Loading @@ -1256,6 +1289,13 @@ public final class AutofillManager { } return; } notifyViewReadyInner(v.getAutofillId(), v.getAutofillHints()); } private void notifyViewReadyInner(AutofillId id, String[] autofillHints) { if (!hasAutofillFeature()) { return; } synchronized (mLock) { if (mTrackedViews != null) { Loading @@ -1263,7 +1303,7 @@ public final class AutofillManager { // different pages but in the same Activity. We need to reset the // mIsFillRequested flag to allow asking for a new FillRequest when // user switches to other page mTrackedViews.checkViewState(v.getAutofillId()); mTrackedViews.checkViewState(id); } } Loading @@ -1273,9 +1313,9 @@ public final class AutofillManager { } if (mIsFillDialogEnabled || ArrayUtils.containsAny(v.getAutofillHints(), mFillDialogEnabledHints)) { || ArrayUtils.containsAny(autofillHints, mFillDialogEnabledHints)) { if (sDebug) { Log.d(TAG, "Trigger fill request at view entered"); Log.d(TAG, "Trigger fill request when the view is ready."); } int flags = FLAG_SUPPORTS_FILL_DIALOG; Loading
core/java/android/view/autofill/VirtualViewFillInfo.java 0 → 100644 +141 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.view.autofill; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.view.View; import com.android.internal.util.DataClass; /** * Information for the virtual view to the autofill framework. */ @DataClass(genBuilder = true) public final class VirtualViewFillInfo { /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @Nullable @SuppressLint("NullableCollection") private String[] mAutofillHints; private static String[] defaultAutofillHints() { return null; } // Code below generated by codegen v1.0.23. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code // // To regenerate run: // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/autofill/VirtualViewFillInfo.java // // To exclude the generated code from IntelliJ auto-formatting enable (one-time): // Settings > Editor > Code Style > Formatter Control //@formatter:off @DataClass.Generated.Member /* package-private */ VirtualViewFillInfo( @Nullable @SuppressLint("NullableCollection") String[] autofillHints) { this.mAutofillHints = autofillHints; com.android.internal.util.AnnotationValidations.validate( SuppressLint.class, null, mAutofillHints, "value", "NullableCollection"); // onConstructed(); // You can define this method to get a callback } /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @DataClass.Generated.Member public @Nullable @SuppressLint("NullableCollection") String[] getAutofillHints() { return mAutofillHints; } /** * A builder for {@link VirtualViewFillInfo} */ @SuppressWarnings("WeakerAccess") @DataClass.Generated.Member public static final class Builder { private @Nullable @SuppressLint("NullableCollection") String[] mAutofillHints; private long mBuilderFieldsSet = 0L; public Builder() { } /** * Autofill hints of the virtual view. * * @see View#setAutofillHints(String...) */ @DataClass.Generated.Member public @android.annotation.NonNull Builder setAutofillHints(@SuppressLint("NullableCollection") @android.annotation.NonNull String... value) { checkNotUsed(); mBuilderFieldsSet |= 0x1; mAutofillHints = value; return this; } /** Builds the instance. This builder should not be touched after calling this! */ public @android.annotation.NonNull VirtualViewFillInfo build() { checkNotUsed(); mBuilderFieldsSet |= 0x2; // Mark builder used if ((mBuilderFieldsSet & 0x1) == 0) { mAutofillHints = defaultAutofillHints(); } VirtualViewFillInfo o = new VirtualViewFillInfo( mAutofillHints); return o; } private void checkNotUsed() { if ((mBuilderFieldsSet & 0x2) != 0) { throw new IllegalStateException( "This Builder should not be reused. Use a new Builder instance instead"); } } } @DataClass.Generated( time = 1674023010954L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/view/autofill/VirtualViewFillInfo.java", inputSignatures = "private @android.annotation.Nullable @android.annotation.SuppressLint java.lang.String[] mAutofillHints\nprivate static java.lang.String[] defaultAutofillHints()\nclass VirtualViewFillInfo extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true)") @Deprecated private void __metadata() {} //@formatter:on // End of generated code }