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:
TYM Tsai
2022-04-25 18:30:56 +08:00
parent 3f598fadcd
commit b470573f12
3 changed files with 21 additions and 11 deletions

View File

@@ -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));
}
}
}

View File

@@ -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);

View File

@@ -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);
}
}