Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b470573f authored by TYM Tsai's avatar TYM Tsai
Browse files

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
parent 3f598fad
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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));
            }
        }
    }
+8 −6
Original line number Diff line number Diff line
@@ -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);
+10 −3
Original line number Diff line number Diff line
@@ -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);
                            }
                        }