Fix user interaction logging for both fill dialog and save ui.

Test: m
Bug: 278920289
Change-Id: I6fd7370d65413ca2be40847ba0d302142d4d2f8b
This commit is contained in:
jiewenlei
2023-05-12 15:54:45 -07:00
parent 7cc9a4bbc1
commit 38faddb58d
2 changed files with 27 additions and 6 deletions

View File

@@ -2229,7 +2229,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
@Override
public void save() {
synchronized (mLock) {
mSaveEventLogger.maybeSetSaveButtonClicked(true);
if (mDestroyed) {
Slog.w(TAG, "Call to Session#save() rejected - session: "
+ id + " destroyed");
@@ -2248,7 +2247,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
public void cancelSave() {
synchronized (mLock) {
mSessionFlags.mShowingSaveUi = false;
mSaveEventLogger.maybeSetDialogDismissed(true);
if (mDestroyed) {
Slog.w(TAG, "Call to Session#cancelSave() rejected - session: "
+ id + " destroyed");
@@ -3403,7 +3401,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
getUiForShowing().showSaveUi(serviceLabel, serviceIcon,
mService.getServicePackageName(), saveInfo, this,
mComponentName, this, mContext, mPendingSaveUi, isUpdate, mCompatMode,
response.getShowSaveDialogIcon());
response.getShowSaveDialogIcon(), mSaveEventLogger);
mSaveEventLogger.maybeSetLatencySaveUiDisplayMillis(
SystemClock.elapsedRealtime()- saveUiDisplayStartTimestamp);
if (client != null) {
@@ -4388,7 +4386,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
getUiForShowing().showFillDialog(filledId, response, filterText,
mService.getServicePackageName(), mComponentName, serviceIcon, this,
id, mCompatMode);
id, mCompatMode, mPresentationStatsEventLogger);
return true;
}

View File

@@ -52,6 +52,8 @@ import com.android.server.LocalServices;
import com.android.server.UiModeManagerInternal;
import com.android.server.UiThread;
import com.android.server.autofill.Helper;
import com.android.server.autofill.PresentationStatsEventLogger;
import com.android.server.autofill.SaveEventLogger;
import com.android.server.utils.Slogf;
import java.io.PrintWriter;
@@ -326,7 +328,7 @@ public final class AutoFillUI {
@NonNull ValueFinder valueFinder, @NonNull ComponentName componentName,
@NonNull AutoFillUiCallback callback, @NonNull Context context,
@NonNull PendingUi pendingSaveUi, boolean isUpdate, boolean compatMode,
boolean showServiceIcon) {
boolean showServiceIcon, @Nullable SaveEventLogger mSaveEventLogger) {
if (sVerbose) {
Slogf.v(TAG, "showSaveUi(update=%b) for %s and display %d: %s", isUpdate,
componentName.toShortString(), context.getDisplayId(), info);
@@ -355,6 +357,9 @@ public final class AutoFillUI {
@Override
public void onSave() {
log.setType(MetricsEvent.TYPE_ACTION);
if (mSaveEventLogger != null) {
mSaveEventLogger.maybeSetSaveButtonClicked(true);
}
hideSaveUiUiThread(callback);
callback.save();
destroySaveUiUiThread(pendingSaveUi, true);
@@ -363,6 +368,9 @@ public final class AutoFillUI {
@Override
public void onCancel(IntentSender listener) {
log.setType(MetricsEvent.TYPE_DISMISS);
if (mSaveEventLogger != null) {
mSaveEventLogger.maybeSetCancelButtonClicked(true);
}
hideSaveUiUiThread(callback);
if (listener != null) {
try {
@@ -384,6 +392,9 @@ public final class AutoFillUI {
callback.cancelSave();
}
mMetricsLogger.write(log);
if (mSaveEventLogger != null) {
mSaveEventLogger.maybeSetDialogDismissed(true);
}
}
@Override
@@ -400,7 +411,8 @@ public final class AutoFillUI {
public void showFillDialog(@NonNull AutofillId focusedId, @NonNull FillResponse response,
@Nullable String filterText, @Nullable String servicePackageName,
@NonNull ComponentName componentName, @Nullable Drawable serviceIcon,
@NonNull AutoFillUiCallback callback, int sessionId, boolean compatMode) {
@NonNull AutoFillUiCallback callback, int sessionId, boolean compatMode,
@Nullable PresentationStatsEventLogger mPresentationStatsEventLogger) {
if (sVerbose) {
Slog.v(TAG, "showFillDialog for "
+ componentName.toShortString() + ": " + response);
@@ -442,6 +454,10 @@ public final class AutoFillUI {
@Override
public void onDatasetPicked(Dataset dataset) {
log(MetricsEvent.TYPE_ACTION);
if (mPresentationStatsEventLogger != null) {
mPresentationStatsEventLogger.maybeSetPositiveCtaButtonClicked(
true);
}
hideFillDialogUiThread(callback);
if (mCallback != null) {
final int datasetIndex = response.getDatasets().indexOf(dataset);
@@ -453,6 +469,9 @@ public final class AutoFillUI {
@Override
public void onDismissed() {
log(MetricsEvent.TYPE_DISMISS);
if (mPresentationStatsEventLogger != null) {
mPresentationStatsEventLogger.maybeSetDialogDismissed(true);
}
hideFillDialogUiThread(callback);
callback.requestShowSoftInput(focusedId);
callback.requestFallbackFromFillDialog();
@@ -461,6 +480,10 @@ public final class AutoFillUI {
@Override
public void onCanceled() {
log(MetricsEvent.TYPE_CLOSE);
if (mPresentationStatsEventLogger != null) {
mPresentationStatsEventLogger.maybeSetNegativeCtaButtonClicked(
true);
}
hideFillDialogUiThread(callback);
callback.requestShowSoftInput(focusedId);
callback.requestFallbackFromFillDialog();