Merge "Fix sessionCommitEvent's commit_reason logging." into udc-dev

This commit is contained in:
Jiewen Lei
2023-05-13 05:57:20 +00:00
committed by Android (Google) Code Review
3 changed files with 30 additions and 49 deletions

View File

@@ -468,7 +468,8 @@ public final class AutofillManager {
COMMIT_REASON_ACTIVITY_FINISHED, COMMIT_REASON_ACTIVITY_FINISHED,
COMMIT_REASON_VIEW_COMMITTED, COMMIT_REASON_VIEW_COMMITTED,
COMMIT_REASON_VIEW_CLICKED, COMMIT_REASON_VIEW_CLICKED,
COMMIT_REASON_VIEW_CHANGED COMMIT_REASON_VIEW_CHANGED,
COMMIT_REASON_SESSION_DESTROYED
}) })
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface AutofillCommitReason {} public @interface AutofillCommitReason {}
@@ -507,6 +508,12 @@ public final class AutofillManager {
* @hide * @hide
*/ */
public static final int COMMIT_REASON_VIEW_CHANGED = 4; public static final int COMMIT_REASON_VIEW_CHANGED = 4;
/**
* Autofill context was committed because of the session was destroyed.
*
* @hide
*/
public static final int COMMIT_REASON_SESSION_DESTROYED = 5;
/** /**
* Makes an authentication id from a request id and a dataset id. * Makes an authentication id from a request id and a dataset id.

View File

@@ -42,6 +42,7 @@ import static android.view.autofill.AutofillManager.ACTION_START_SESSION;
import static android.view.autofill.AutofillManager.ACTION_VALUE_CHANGED; import static android.view.autofill.AutofillManager.ACTION_VALUE_CHANGED;
import static android.view.autofill.AutofillManager.ACTION_VIEW_ENTERED; import static android.view.autofill.AutofillManager.ACTION_VIEW_ENTERED;
import static android.view.autofill.AutofillManager.ACTION_VIEW_EXITED; import static android.view.autofill.AutofillManager.ACTION_VIEW_EXITED;
import static android.view.autofill.AutofillManager.COMMIT_REASON_SESSION_DESTROYED;
import static android.view.autofill.AutofillManager.COMMIT_REASON_UNKNOWN; import static android.view.autofill.AutofillManager.COMMIT_REASON_UNKNOWN;
import static android.view.autofill.AutofillManager.FLAG_SMART_SUGGESTION_SYSTEM; import static android.view.autofill.AutofillManager.FLAG_SMART_SUGGESTION_SYSTEM;
import static android.view.autofill.AutofillManager.getSmartSuggestionModeToString; import static android.view.autofill.AutofillManager.getSmartSuggestionModeToString;
@@ -85,7 +86,6 @@ import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_O
import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_REQUIRED_ID_CHANGE; import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_REQUIRED_ID_CHANGE;
import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_TRIGGER_ID_SET; import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_TRIGGER_ID_SET;
import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_UNKNOWN; import static com.android.server.autofill.SaveEventLogger.SAVE_UI_SHOWN_REASON_UNKNOWN;
import static com.android.server.autofill.SessionCommittedEventLogger.COMMIT_REASON_SESSION_DESTROYED;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_RECEIVER_EXTRAS; import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_RECEIVER_EXTRAS;
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_STRUCTURE; import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_STRUCTURE;
@@ -2730,6 +2730,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this, mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this,
Event.NO_SAVE_UI_REASON_NONE, Event.NO_SAVE_UI_REASON_NONE,
COMMIT_REASON_UNKNOWN)); COMMIT_REASON_UNKNOWN));
logAllEvents(COMMIT_REASON_UNKNOWN);
} }
/** /**
@@ -2743,6 +2744,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
@AutofillCommitReason int commitReason) { @AutofillCommitReason int commitReason) {
mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this, mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this,
saveDialogNotShowReason, commitReason)); saveDialogNotShowReason, commitReason));
logAllEvents(commitReason);
} }
private void handleLogContextCommitted(@NoSaveReason int saveDialogNotShowReason, private void handleLogContextCommitted(@NoSaveReason int saveDialogNotShowReason,
@@ -2974,6 +2976,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
changedFieldIds, changedDatasetIds, manuallyFilledFieldIds, changedFieldIds, changedDatasetIds, manuallyFilledFieldIds,
manuallyFilledDatasetIds, detectedFieldIds, detectedFieldClassifications, manuallyFilledDatasetIds, detectedFieldIds, detectedFieldClassifications,
mComponentName, mCompatMode, saveDialogNotShowReason); mComponentName, mCompatMode, saveDialogNotShowReason);
logAllEvents(commitReason);
} }
/** /**
@@ -5679,6 +5682,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
} }
} }
@GuardedBy("mLock")
private void logAllEvents(@AutofillCommitReason int val) {
mSessionCommittedEventLogger.maybeSetCommitReason(val);
mSessionCommittedEventLogger.maybeSetRequestCount(mRequestCount);
mSessionCommittedEventLogger.maybeSetSessionDurationMillis(
SystemClock.elapsedRealtime() - mStartTime);
mFillRequestEventLogger.logAndEndEvent();
mFillResponseEventLogger.logAndEndEvent();
mPresentationStatsEventLogger.logAndEndEvent();
mSaveEventLogger.logAndEndEvent();
mSessionCommittedEventLogger.logAndEndEvent();
}
/** /**
* Destroy this session and perform any clean up work. * Destroy this session and perform any clean up work.
* *
@@ -5693,15 +5709,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
@GuardedBy("mLock") @GuardedBy("mLock")
RemoteFillService destroyLocked() { RemoteFillService destroyLocked() {
// Log unlogged events. // Log unlogged events.
mSessionCommittedEventLogger.maybeSetCommitReason(COMMIT_REASON_SESSION_DESTROYED); logAllEvents(COMMIT_REASON_SESSION_DESTROYED);
mSessionCommittedEventLogger.maybeSetRequestCount(mRequestCount);
mSessionCommittedEventLogger.maybeSetSessionDurationMillis(
SystemClock.elapsedRealtime() - mStartTime);
mSessionCommittedEventLogger.logAndEndEvent();
mPresentationStatsEventLogger.logAndEndEvent();
mSaveEventLogger.logAndEndEvent();
mFillResponseEventLogger.logAndEndEvent();
mFillRequestEventLogger.logAndEndEvent();
if (mDestroyed) { if (mDestroyed) {
return null; return null;

View File

@@ -16,13 +16,8 @@
package com.android.server.autofill; package com.android.server.autofill;
import static android.view.autofill.AutofillManager.COMMIT_REASON_UNKNOWN;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED; import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_ACTIVITY_FINISHED;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_SESSION_DESTROYED;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_UNKNOWN;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_CHANGED;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_CLICKED;
import static com.android.internal.util.FrameworkStatsLog.AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_COMMITTED;
import static com.android.server.autofill.Helper.sVerbose; import static com.android.server.autofill.Helper.sVerbose;
import android.annotation.IntDef; import android.annotation.IntDef;
@@ -32,7 +27,7 @@ import android.content.pm.PackageManager;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Slog; import android.util.Slog;
import android.view.autofill.AutofillManager.AutofillCommitReason;
import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.FrameworkStatsLog;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@@ -45,35 +40,6 @@ import java.util.Optional;
public final class SessionCommittedEventLogger { public final class SessionCommittedEventLogger {
private static final String TAG = "SessionCommittedEventLogger"; private static final String TAG = "SessionCommittedEventLogger";
/**
* Reasons why presentation was not shown. These are wrappers around
* {@link com.android.os.AtomsProto.AutofillSessionCommitted.AutofillCommitReason}.
*/
@IntDef(prefix = {"COMMIT_REASON"}, value = {
COMMIT_REASON_UNKNOWN,
COMMIT_REASON_ACTIVITY_FINISHED,
COMMIT_REASON_VIEW_COMMITTED,
COMMIT_REASON_VIEW_CLICKED,
COMMIT_REASON_VIEW_CHANGED,
COMMIT_REASON_SESSION_DESTROYED
})
@Retention(RetentionPolicy.SOURCE)
public @interface CommitReason {
}
public static final int COMMIT_REASON_UNKNOWN =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_UNKNOWN;
public static final int COMMIT_REASON_ACTIVITY_FINISHED =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_ACTIVITY_FINISHED;
public static final int COMMIT_REASON_VIEW_COMMITTED =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_COMMITTED;
public static final int COMMIT_REASON_VIEW_CLICKED =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_CLICKED;
public static final int COMMIT_REASON_VIEW_CHANGED =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_VIEW_CHANGED;
public static final int COMMIT_REASON_SESSION_DESTROYED =
AUTOFILL_SESSION_COMMITTED__COMMIT_REASON__COMMIT_REASON_SESSION_DESTROYED;
private final int mSessionId; private final int mSessionId;
private Optional<SessionCommittedEventInternal> mEventInternal; private Optional<SessionCommittedEventInternal> mEventInternal;
@@ -110,9 +76,9 @@ public final class SessionCommittedEventLogger {
/** /**
* Set commit_reason as long as mEventInternal presents. * Set commit_reason as long as mEventInternal presents.
*/ */
public void maybeSetCommitReason(@CommitReason int val) { public void maybeSetCommitReason(@AutofillCommitReason int val) {
mEventInternal.ifPresent(event -> { mEventInternal.ifPresent(event -> {
event.mCommitReason = val; event.mCommitReason = val;
}); });
} }