Merge "Fix user interaction logging for both fill dialog and save ui." into udc-dev am: cf918bef89

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23221336

Change-Id: I5216eef413a04a25991e5af5b608ed6773601f0b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jiewen Lei
2023-05-13 03:17:06 +00:00
committed by Automerger Merge Worker
2 changed files with 27 additions and 6 deletions

View File

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

View File

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