Add UI type on selected event
Bug: 225310516 Test: atest android.autofillservice.cts.dialog.LoginActivityTest Test: atest android.autofillservice.cts.dropdown.FillEventHistoryTest Test: atest android.autofillservice.cts.inline.InlineFillEventHistoryTest Test: atest android.autofillservice.cts.inline.InlineAugmentedLoginActivityTest Change-Id: If258d782542c3c9e8cdf155837d683920180443e
This commit is contained in:
@@ -805,12 +805,13 @@ final class AutofillManagerServiceImpl
|
||||
* Updates the last fill response when a dataset was selected.
|
||||
*/
|
||||
void logDatasetSelected(@Nullable String selectedDataset, int sessionId,
|
||||
@Nullable Bundle clientState) {
|
||||
@Nullable Bundle clientState, int presentationType) {
|
||||
synchronized (mLock) {
|
||||
if (isValidEventLocked("logDatasetSelected()", sessionId)) {
|
||||
mEventHistory.addEvent(
|
||||
new Event(Event.TYPE_DATASET_SELECTED, selectedDataset, clientState, null,
|
||||
null, null, null, null, null, null, null));
|
||||
null, null, null, null, null, null, null, NO_SAVE_UI_REASON_NONE,
|
||||
presentationType));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import static android.service.autofill.AutofillService.EXTRA_FILL_RESPONSE;
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_DIALOG;
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_INLINE;
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_MENU;
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_UNKNOWN;
|
||||
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_SUPPORTS_FILL_DIALOG;
|
||||
@@ -1406,7 +1407,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
|
||||
// AutoFillUiCallback
|
||||
@Override
|
||||
public void fill(int requestId, int datasetIndex, Dataset dataset) {
|
||||
public void fill(int requestId, int datasetIndex, Dataset dataset, int uiType) {
|
||||
synchronized (mLock) {
|
||||
if (mDestroyed) {
|
||||
Slog.w(TAG, "Call to Session#fill() rejected - session: "
|
||||
@@ -1416,7 +1417,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
}
|
||||
mHandler.sendMessage(obtainMessage(
|
||||
Session::autoFill,
|
||||
this, requestId, datasetIndex, dataset, true));
|
||||
this, requestId, datasetIndex, dataset, true, uiType));
|
||||
}
|
||||
|
||||
// AutoFillUiCallback
|
||||
@@ -1657,7 +1658,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
if (!isAuthResultDatasetEphemeral(oldDataset, data)) {
|
||||
authenticatedResponse.getDatasets().set(datasetIdx, dataset);
|
||||
}
|
||||
autoFill(requestId, datasetIdx, dataset, false);
|
||||
autoFill(requestId, datasetIdx, dataset, false, UI_TYPE_UNKNOWN);
|
||||
} else {
|
||||
Slog.w(TAG, "invalid index (" + datasetIdx + ") for authentication id "
|
||||
+ authenticationId);
|
||||
@@ -3376,7 +3377,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
new InlineFillUi.InlineSuggestionUiCallback() {
|
||||
@Override
|
||||
public void autofill(@NonNull Dataset dataset, int datasetIndex) {
|
||||
fill(response.getRequestId(), datasetIndex, dataset);
|
||||
fill(response.getRequestId(), datasetIndex, dataset, UI_TYPE_INLINE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -3895,7 +3896,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
return viewState;
|
||||
}
|
||||
|
||||
void autoFill(int requestId, int datasetIndex, Dataset dataset, boolean generateEvent) {
|
||||
void autoFill(int requestId, int datasetIndex, Dataset dataset, boolean generateEvent,
|
||||
int uiType) {
|
||||
if (sDebug) {
|
||||
Slog.d(TAG, "autoFill(): requestId=" + requestId + "; datasetIdx=" + datasetIndex
|
||||
+ "; dataset=" + dataset);
|
||||
@@ -3909,7 +3911,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
// Autofill it directly...
|
||||
if (dataset.getAuthentication() == null) {
|
||||
if (generateEvent) {
|
||||
mService.logDatasetSelected(dataset.getId(), id, mClientState);
|
||||
mService.logDatasetSelected(dataset.getId(), id, mClientState, uiType);
|
||||
}
|
||||
if (mCurrentViewId != null) {
|
||||
mInlineSessionController.hideInlineSuggestionsUiLocked(mCurrentViewId);
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package com.android.server.autofill.ui;
|
||||
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_DIALOG;
|
||||
import static android.service.autofill.FillEventHistory.Event.UI_TYPE_MENU;
|
||||
|
||||
import static com.android.server.autofill.Helper.sDebug;
|
||||
import static com.android.server.autofill.Helper.sVerbose;
|
||||
|
||||
@@ -31,6 +34,7 @@ import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.service.autofill.Dataset;
|
||||
import android.service.autofill.FillEventHistory;
|
||||
import android.service.autofill.FillResponse;
|
||||
import android.service.autofill.SaveInfo;
|
||||
import android.service.autofill.ValueFinder;
|
||||
@@ -81,7 +85,8 @@ public final class AutoFillUI {
|
||||
public interface AutoFillUiCallback {
|
||||
void authenticate(int requestId, int datasetIndex, @NonNull IntentSender intent,
|
||||
@Nullable Bundle extras, boolean authenticateInline);
|
||||
void fill(int requestId, int datasetIndex, @NonNull Dataset dataset);
|
||||
void fill(int requestId, int datasetIndex, @NonNull Dataset dataset,
|
||||
@FillEventHistory.Event.UiType int uiType);
|
||||
void save();
|
||||
void cancelSave();
|
||||
void requestShowFillUi(AutofillId id, int width, int height,
|
||||
@@ -236,7 +241,8 @@ public final class AutoFillUI {
|
||||
hideFillUiUiThread(callback, true);
|
||||
if (mCallback != null) {
|
||||
final int datasetIndex = response.getDatasets().indexOf(dataset);
|
||||
mCallback.fill(response.getRequestId(), datasetIndex, dataset);
|
||||
mCallback.fill(response.getRequestId(), datasetIndex,
|
||||
dataset, UI_TYPE_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,7 +420,8 @@ public final class AutoFillUI {
|
||||
hideFillDialogUiThread(callback);
|
||||
if (mCallback != null) {
|
||||
final int datasetIndex = response.getDatasets().indexOf(dataset);
|
||||
mCallback.fill(response.getRequestId(), datasetIndex, dataset);
|
||||
mCallback.fill(response.getRequestId(), datasetIndex, dataset,
|
||||
UI_TYPE_DIALOG);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user