Merge "Fix cts fail for android.autofillservice.cts.augmented" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a76f65614e
@@ -86,6 +86,16 @@ public final class FillRequest implements Parcelable {
|
||||
*/
|
||||
public static final @RequestFlags int FLAG_PASSWORD_INPUT_TYPE = 0x4;
|
||||
|
||||
/**
|
||||
* Indicates the view was not focused.
|
||||
*
|
||||
* <p><b>Note:</b> Defines the flag value to 0x10, because the flag value 0x08 has been defined
|
||||
* in {@link AutofillManager}.</p>
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final @RequestFlags int FLAG_VIEW_NOT_FOCUSED = 0x10;
|
||||
|
||||
/** @hide */
|
||||
public static final int INVALID_REQUEST_ID = Integer.MIN_VALUE;
|
||||
|
||||
@@ -165,7 +175,8 @@ public final class FillRequest implements Parcelable {
|
||||
@IntDef(flag = true, prefix = "FLAG_", value = {
|
||||
FLAG_MANUAL_REQUEST,
|
||||
FLAG_COMPATIBILITY_MODE_REQUEST,
|
||||
FLAG_PASSWORD_INPUT_TYPE
|
||||
FLAG_PASSWORD_INPUT_TYPE,
|
||||
FLAG_VIEW_NOT_FOCUSED
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@DataClass.Generated.Member
|
||||
@@ -187,6 +198,8 @@ public final class FillRequest implements Parcelable {
|
||||
return "FLAG_COMPATIBILITY_MODE_REQUEST";
|
||||
case FLAG_PASSWORD_INPUT_TYPE:
|
||||
return "FLAG_PASSWORD_INPUT_TYPE";
|
||||
case FLAG_VIEW_NOT_FOCUSED:
|
||||
return "FLAG_VIEW_NOT_FOCUSED";
|
||||
default: return Integer.toHexString(value);
|
||||
}
|
||||
}
|
||||
@@ -248,7 +261,8 @@ public final class FillRequest implements Parcelable {
|
||||
mFlags,
|
||||
FLAG_MANUAL_REQUEST
|
||||
| FLAG_COMPATIBILITY_MODE_REQUEST
|
||||
| FLAG_PASSWORD_INPUT_TYPE);
|
||||
| FLAG_PASSWORD_INPUT_TYPE
|
||||
| FLAG_VIEW_NOT_FOCUSED);
|
||||
this.mInlineSuggestionsRequest = inlineSuggestionsRequest;
|
||||
|
||||
onConstructed();
|
||||
@@ -384,7 +398,8 @@ public final class FillRequest implements Parcelable {
|
||||
mFlags,
|
||||
FLAG_MANUAL_REQUEST
|
||||
| FLAG_COMPATIBILITY_MODE_REQUEST
|
||||
| FLAG_PASSWORD_INPUT_TYPE);
|
||||
| FLAG_PASSWORD_INPUT_TYPE
|
||||
| FLAG_VIEW_NOT_FOCUSED);
|
||||
this.mInlineSuggestionsRequest = inlineSuggestionsRequest;
|
||||
|
||||
onConstructed();
|
||||
@@ -405,10 +420,10 @@ public final class FillRequest implements Parcelable {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1588119440090L,
|
||||
time = 1589280816805L,
|
||||
codegenVersion = "1.0.15",
|
||||
sourceFile = "frameworks/base/core/java/android/service/autofill/FillRequest.java",
|
||||
inputSignatures = "public static final @android.service.autofill.FillRequest.RequestFlags int FLAG_MANUAL_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_PASSWORD_INPUT_TYPE\npublic static final int INVALID_REQUEST_ID\nprivate final int mId\nprivate final @android.annotation.NonNull java.util.List<android.service.autofill.FillContext> mFillContexts\nprivate final @android.annotation.Nullable android.os.Bundle mClientState\nprivate final @android.service.autofill.FillRequest.RequestFlags int mFlags\nprivate final @android.annotation.Nullable android.view.inputmethod.InlineSuggestionsRequest mInlineSuggestionsRequest\nprivate void onConstructed()\nclass FillRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)")
|
||||
inputSignatures = "public static final @android.service.autofill.FillRequest.RequestFlags int FLAG_MANUAL_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_PASSWORD_INPUT_TYPE\npublic static final @android.service.autofill.FillRequest.RequestFlags int FLAG_VIEW_NOT_FOCUSED\npublic static final int INVALID_REQUEST_ID\nprivate final int mId\nprivate final @android.annotation.NonNull java.util.List<android.service.autofill.FillContext> mFillContexts\nprivate final @android.annotation.Nullable android.os.Bundle mClientState\nprivate final @android.service.autofill.FillRequest.RequestFlags int mFlags\nprivate final @android.annotation.Nullable android.view.inputmethod.InlineSuggestionsRequest mInlineSuggestionsRequest\nprivate void onConstructed()\nclass FillRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)")
|
||||
@Deprecated
|
||||
private void __metadata() {}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.view.autofill;
|
||||
|
||||
import static android.service.autofill.FillRequest.FLAG_MANUAL_REQUEST;
|
||||
import static android.service.autofill.FillRequest.FLAG_PASSWORD_INPUT_TYPE;
|
||||
import static android.service.autofill.FillRequest.FLAG_VIEW_NOT_FOCUSED;
|
||||
import static android.view.autofill.Helper.sDebug;
|
||||
import static android.view.autofill.Helper.sVerbose;
|
||||
import static android.view.autofill.Helper.toList;
|
||||
@@ -879,7 +880,11 @@ public final class AutofillManager {
|
||||
* @param view view requesting the new autofill context.
|
||||
*/
|
||||
public void requestAutofill(@NonNull View view) {
|
||||
notifyViewEntered(view, FLAG_MANUAL_REQUEST);
|
||||
int flags = FLAG_MANUAL_REQUEST;
|
||||
if (!view.isFocused()) {
|
||||
flags |= FLAG_VIEW_NOT_FOCUSED;
|
||||
}
|
||||
notifyViewEntered(view, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -926,7 +931,11 @@ public final class AutofillManager {
|
||||
* @param absBounds absolute boundaries of the virtual view in the screen.
|
||||
*/
|
||||
public void requestAutofill(@NonNull View view, int virtualId, @NonNull Rect absBounds) {
|
||||
notifyViewEntered(view, virtualId, absBounds, FLAG_MANUAL_REQUEST);
|
||||
int flags = FLAG_MANUAL_REQUEST;
|
||||
if (!view.isFocused()) {
|
||||
flags |= FLAG_VIEW_NOT_FOCUSED;
|
||||
}
|
||||
notifyViewEntered(view, virtualId, absBounds, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.server.autofill;
|
||||
import static android.service.autofill.AutofillFieldClassificationService.EXTRA_SCORES;
|
||||
import static android.service.autofill.FillRequest.FLAG_MANUAL_REQUEST;
|
||||
import static android.service.autofill.FillRequest.FLAG_PASSWORD_INPUT_TYPE;
|
||||
import static android.service.autofill.FillRequest.FLAG_VIEW_NOT_FOCUSED;
|
||||
import static android.service.autofill.FillRequest.INVALID_REQUEST_ID;
|
||||
import static android.view.autofill.AutofillManager.ACTION_RESPONSE_EXPIRED;
|
||||
import static android.view.autofill.AutofillManager.ACTION_START_SESSION;
|
||||
@@ -653,6 +654,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
return mService.isInlineSuggestionsEnabled();
|
||||
}
|
||||
|
||||
private boolean isViewFocusedLocked(int flags) {
|
||||
return (flags & FLAG_VIEW_NOT_FOCUSED) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the existing response for the partition, reads a new structure, and then requests a
|
||||
* new fill response from the fill service.
|
||||
@@ -711,10 +716,13 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
cancelCurrentRequestLocked();
|
||||
|
||||
// Only ask IME to create inline suggestions request if Autofill provider supports it and
|
||||
// the render service is available.
|
||||
// the render service is available except the autofill is triggered manually and the view
|
||||
// is also not focused.
|
||||
final RemoteInlineSuggestionRenderService remoteRenderService =
|
||||
mService.getRemoteInlineSuggestionRenderServiceLocked();
|
||||
if (isInlineSuggestionsEnabledByAutofillProviderLocked() && remoteRenderService != null) {
|
||||
if (isInlineSuggestionsEnabledByAutofillProviderLocked()
|
||||
&& remoteRenderService != null
|
||||
&& isViewFocusedLocked(flags)) {
|
||||
Consumer<InlineSuggestionsRequest> inlineSuggestionsRequestConsumer =
|
||||
mAssistReceiver.newAutofillRequestLocked(viewState,
|
||||
/*isInlineRequest=*/ true);
|
||||
@@ -3139,9 +3147,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
}
|
||||
};
|
||||
|
||||
// When the inline suggestion render service is available, there are 2 cases when
|
||||
// augmented autofill should ask IME for inline suggestion request, because standard
|
||||
// autofill flow didn't:
|
||||
// When the inline suggestion render service is available and the view is focused, there
|
||||
// are 2 cases when augmented autofill should ask IME for inline suggestion request,
|
||||
// because standard autofill flow didn't:
|
||||
// 1. the field is augmented autofill only (when standard autofill provider is None or
|
||||
// when it returns null response)
|
||||
// 2. standard autofill provider doesn't support inline suggestion
|
||||
@@ -3149,7 +3157,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
mService.getRemoteInlineSuggestionRenderServiceLocked();
|
||||
if (remoteRenderService != null
|
||||
&& (mForAugmentedAutofillOnly
|
||||
|| !isInlineSuggestionsEnabledByAutofillProviderLocked())) {
|
||||
|| !isInlineSuggestionsEnabledByAutofillProviderLocked())
|
||||
&& isViewFocusedLocked(flags)) {
|
||||
if (sDebug) Slog.d(TAG, "Create inline request for augmented autofill");
|
||||
remoteRenderService.getInlineSuggestionsRendererInfo(new RemoteCallback(
|
||||
(extras) -> {
|
||||
|
||||
Reference in New Issue
Block a user