New FIELD_AUTOFILL_COMPAT_MODE field.
This field is used on pretty much all Autofill metrics, except AUTOFILL_USERDATA_UPDATED, AUTOFILL_SERVICE_DISABLED_SELF, and AUTOFILL_INVALID_PERMISSION. Test: atest CtsAutoFillServiceTestCases Test: adb shell logcat -b events | grep sysui Bug: 79351659 Change-Id: I2e2f3dcc780a3896162b158926f5ee89c7cb342d
This commit is contained in:
@@ -1132,8 +1132,7 @@ public final class AutofillManager {
|
||||
if (mSaveTriggerId != null && mSaveTriggerId.equals(id)) {
|
||||
if (sDebug) Log.d(TAG, "triggering commit by click of " + id);
|
||||
commitLocked();
|
||||
mMetricsLogger.action(MetricsEvent.AUTOFILL_SAVE_EXPLICITLY_TRIGGERED,
|
||||
mContext.getPackageName());
|
||||
mMetricsLogger.write(newLog(MetricsEvent.AUTOFILL_SAVE_EXPLICITLY_TRIGGERED));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1893,14 +1892,19 @@ public final class AutofillManager {
|
||||
}
|
||||
}
|
||||
|
||||
final LogMaker log = new LogMaker(MetricsEvent.AUTOFILL_DATASET_APPLIED)
|
||||
.setPackageName(mContext.getPackageName())
|
||||
mMetricsLogger.write(newLog(MetricsEvent.AUTOFILL_DATASET_APPLIED)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_VALUES, itemCount)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_VIEWS_FILLED, numApplied);
|
||||
mMetricsLogger.write(log);
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_VIEWS_FILLED, numApplied));
|
||||
}
|
||||
}
|
||||
|
||||
private LogMaker newLog(int category) {
|
||||
return new LogMaker(category)
|
||||
.setPackageName(mContext.getPackageName())
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_COMPAT_MODE,
|
||||
isCompatibilityModeEnabledLocked() ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tracked views.
|
||||
*
|
||||
|
||||
@@ -3967,6 +3967,7 @@ message MetricsEvent {
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Tag FIELD_FLAGS - Flags used to start the session
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SESSION_STARTED = 906;
|
||||
|
||||
// An autofill request was processed by a service
|
||||
@@ -3980,6 +3981,7 @@ message MetricsEvent {
|
||||
// Type TYPE_CLOSE: Service returned a null response.
|
||||
// Tag FIELD_AUTOFILL_NUM_FIELD_CLASSIFICATION_IDS: if service requested field classification,
|
||||
// number of entries field ids in the request.
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_REQUEST = 907;
|
||||
|
||||
// Tag of a field for a package of an autofill service
|
||||
@@ -3998,6 +4000,7 @@ message MetricsEvent {
|
||||
// Tag FIELD_AUTOFILL_NUM_DATASETS: The number of datasets shown
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_FILL_UI = 910;
|
||||
|
||||
// Tag of a field for the length of the filter text
|
||||
@@ -4005,12 +4008,17 @@ message MetricsEvent {
|
||||
|
||||
// An autofill authentication succeeded
|
||||
// Package: Package of app that was autofilled
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_AUTHENTICATED = 912;
|
||||
|
||||
// An activity was autofilled and all values could be applied
|
||||
// Package: Package of app that is autofilled
|
||||
// Tag FIELD_AUTOFILL_NUM_VALUES: Number of values that were suggested to be autofilled
|
||||
// Tag FIELD_AUTOFILL_NUM_VIEWS_FILLED: Number of views that could be filled
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_DATASET_APPLIED = 913;
|
||||
|
||||
// Tag of a field for the number values to be filled in
|
||||
@@ -4027,6 +4035,7 @@ message MetricsEvent {
|
||||
// Tag FIELD_AUTOFILL_NUM_IDS: The number of ids that are saved
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_UI = 916;
|
||||
|
||||
// Tag of a field for the number of saveable ids
|
||||
@@ -4038,10 +4047,14 @@ message MetricsEvent {
|
||||
// Type TYPE_FAILURE: The request failed
|
||||
// Package: Package of app that was autofilled
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_DATA_SAVE_REQUEST = 918;
|
||||
|
||||
// An auto-fill session was finished
|
||||
// Package: Package of app that was autofilled
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SESSION_FINISHED = 919;
|
||||
|
||||
// meta-event: a reader has checkpointed the log here.
|
||||
@@ -4167,6 +4180,8 @@ message MetricsEvent {
|
||||
// Package: Real package of the app being autofilled
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of the autofill service that processed the request
|
||||
// TAG FIELD_AUTOFILL_FORGED_COMPONENT_NAME: Component name being forged
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_FORGED_COMPONENT_ATTEMPT = 948;
|
||||
|
||||
// FIELD - The component that an app tried tro forged.
|
||||
@@ -4624,6 +4639,8 @@ message MetricsEvent {
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_PREVIOUS_LENGTH: the previous length of the value
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_VALUE_RESET = 1124;
|
||||
|
||||
// Tag of AUTOFILL_VALUE_RESET
|
||||
@@ -4634,18 +4651,24 @@ message MetricsEvent {
|
||||
// Package: Package of app that was autofilled
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_DATASET_AUTHENTICATED = 1126;
|
||||
|
||||
// An autofill service provided an invalid dataset authentication
|
||||
// Package: Package of app that was autofilled
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_INVALID_DATASET_AUTHENTICATION = 1127;
|
||||
|
||||
// An autofill service provided an invalid authentication extra
|
||||
// Package: Package of app that was autofilled
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_INVALID_AUTHENTICATION = 1128;
|
||||
|
||||
// An autofill service used a custom description (using RemoteViews) in the autofill save UI
|
||||
@@ -4653,6 +4676,8 @@ message MetricsEvent {
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_CUSTOM_DESCRIPTION = 1129;
|
||||
|
||||
// FIELD - Type of save object passed by the service when the Save UI is shown
|
||||
@@ -4664,6 +4689,8 @@ message MetricsEvent {
|
||||
// OS: O MR
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_CUSTOM_SUBTITLE = 1131;
|
||||
|
||||
// User tapped a link in the custom description of the autofill save UI provided by an autofill service
|
||||
@@ -4674,6 +4701,8 @@ message MetricsEvent {
|
||||
// Type TYPE_FAILURE: The link could not launc an activity
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_LINK_TAPPED = 1132;
|
||||
|
||||
// Result of the validation on save when an autofill service provided a validator
|
||||
@@ -4684,6 +4713,8 @@ message MetricsEvent {
|
||||
// Type TYPE_DISMISS: The validation failed
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_VALIDATION = 1133;
|
||||
|
||||
// Result of an operation in the autofill save UI after the user tapped a link in the custom description
|
||||
@@ -4693,6 +4724,8 @@ message MetricsEvent {
|
||||
// Type TYPE_OPEN: The autofill save UI was restored
|
||||
// Type TYPE_DISMISS: The autofill save UI was destroyed
|
||||
// Type TYPE_FAILURE: An invalid opperation was reported by the app's AutofillManager
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_PENDING_SAVE_UI_OPERATION = 1134;
|
||||
|
||||
// Autofill service called API that disables itself
|
||||
@@ -4705,6 +4738,8 @@ message MetricsEvent {
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Package: Package of the autofill service
|
||||
// OS: O MR
|
||||
// NOTE: starting on OS P, it also added the following field:
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_UI_LATENCY = 1136;
|
||||
|
||||
// Action: the snooze leave-behind was shown after the user clicked the snooze icon
|
||||
@@ -4872,12 +4907,14 @@ message MetricsEvent {
|
||||
// Package: Package of app that is autofilled
|
||||
// OS: P
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_EXPLICIT_SAVE_TRIGGER_DEFINITION = 1228;
|
||||
|
||||
// The autofill context was commited when the user clicked a view explicitly marked by the
|
||||
// service as committing it
|
||||
// Package: Package of app that is autofilled
|
||||
// OS: P
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SAVE_EXPLICITLY_TRIGGERED = 1229;
|
||||
|
||||
// OPEN: Settings > Network & Internet > Mobile network > Wi-Fi calling
|
||||
@@ -4890,6 +4927,7 @@ message MetricsEvent {
|
||||
// OS: P
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_DURATION: duration (in ms) that autofill will be disabled
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SERVICE_DISABLED_APP = 1231;
|
||||
|
||||
// An autofill service asked to disable autofill for a given activity.
|
||||
@@ -4898,6 +4936,7 @@ message MetricsEvent {
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_CLASS_NAME: Class name of the activity that is being disabled for autofill
|
||||
// Tag FIELD_AUTOFILL_DURATION: duration (in ms) that autofill will be disabled
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_SERVICE_DISABLED_ACTIVITY = 1232;
|
||||
|
||||
// ACTION: Stop an app and turn on background check
|
||||
@@ -5109,6 +5148,7 @@ message MetricsEvent {
|
||||
// OS: P
|
||||
// Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request
|
||||
// Tag FIELD_AUTOFILL_MATCH_SCORE: Average score of the matches, in the range of 0 to 100
|
||||
// Type FIELD_AUTOFILL_COMPAT_MODE: package is being autofilled on compatibility mode.
|
||||
AUTOFILL_FIELD_CLASSIFICATION_MATCHES = 1273;
|
||||
|
||||
// Tag used to report autofill field classification scores
|
||||
@@ -5775,6 +5815,9 @@ message MetricsEvent {
|
||||
// OS: P
|
||||
ACTION_STORAGE_MIGRATE_LATER = 1413;
|
||||
|
||||
// Tag used to report whether an activity is being autofilled on compatibility mode.
|
||||
FIELD_AUTOFILL_COMPAT_MODE = 1414;
|
||||
|
||||
// ---- End P Constants, all P constants go above this line ----
|
||||
// Add new aosp constants above this line.
|
||||
// END OF AOSP CONSTANTS
|
||||
|
||||
@@ -504,7 +504,7 @@ final class AutofillManagerServiceImpl {
|
||||
sessionId = sRandom.nextInt();
|
||||
} while (sessionId == NO_SESSION || mSessions.indexOfKey(sessionId) >= 0);
|
||||
|
||||
assertCallerLocked(componentName);
|
||||
assertCallerLocked(componentName, compatMode);
|
||||
|
||||
final Session newSession = new Session(this, mUi, mContext, mHandler, mUserId, mLock,
|
||||
sessionId, uid, activityToken, appCallbackToken, hasCallback, mUiLatencyHistory,
|
||||
@@ -518,7 +518,7 @@ final class AutofillManagerServiceImpl {
|
||||
/**
|
||||
* Asserts the component is owned by the caller.
|
||||
*/
|
||||
private void assertCallerLocked(@NonNull ComponentName componentName) {
|
||||
private void assertCallerLocked(@NonNull ComponentName componentName, boolean compatMode) {
|
||||
final String packageName = componentName.getPackageName();
|
||||
final PackageManager pm = mContext.getPackageManager();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
@@ -536,7 +536,7 @@ final class AutofillManagerServiceImpl {
|
||||
+ ") passed component (" + componentName + ") owned by UID " + packageUid);
|
||||
mMetricsLogger.write(
|
||||
Helper.newLogMaker(MetricsEvent.AUTOFILL_FORGED_COMPONENT_ATTEMPT,
|
||||
callingPackage, getServicePackageName())
|
||||
callingPackage, getServicePackageName(), compatMode)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_FORGED_COMPONENT_NAME,
|
||||
componentName == null ? "null" : componentName.flattenToShortString()));
|
||||
|
||||
@@ -774,10 +774,10 @@ final class AutofillManagerServiceImpl {
|
||||
@Nullable ArrayList<String> changedDatasetIds,
|
||||
@Nullable ArrayList<AutofillId> manuallyFilledFieldIds,
|
||||
@Nullable ArrayList<ArrayList<String>> manuallyFilledDatasetIds,
|
||||
@NonNull String appPackageName) {
|
||||
@NonNull String appPackageName, boolean compatMode) {
|
||||
logContextCommittedLocked(sessionId, clientState, selectedDatasets, ignoredDatasets,
|
||||
changedFieldIds, changedDatasetIds, manuallyFilledFieldIds,
|
||||
manuallyFilledDatasetIds, null, null, appPackageName);
|
||||
manuallyFilledDatasetIds, null, null, appPackageName, compatMode);
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
@@ -790,7 +790,7 @@ final class AutofillManagerServiceImpl {
|
||||
@Nullable ArrayList<ArrayList<String>> manuallyFilledDatasetIds,
|
||||
@Nullable ArrayList<AutofillId> detectedFieldIdsList,
|
||||
@Nullable ArrayList<FieldClassification> detectedFieldClassificationsList,
|
||||
@NonNull String appPackageName) {
|
||||
@NonNull String appPackageName, boolean compatMode) {
|
||||
if (isValidEventLocked("logDatasetNotSelected()", sessionId)) {
|
||||
if (sVerbose) {
|
||||
Slog.v(TAG, "logContextCommitted() with FieldClassification: id=" + sessionId
|
||||
@@ -800,7 +800,8 @@ final class AutofillManagerServiceImpl {
|
||||
+ ", changedDatasetIds=" + changedDatasetIds
|
||||
+ ", manuallyFilledFieldIds=" + manuallyFilledFieldIds
|
||||
+ ", detectedFieldIds=" + detectedFieldIdsList
|
||||
+ ", detectedFieldClassifications=" + detectedFieldClassificationsList);
|
||||
+ ", detectedFieldClassifications=" + detectedFieldClassificationsList
|
||||
+ ", compatMode=" + compatMode);
|
||||
}
|
||||
AutofillId[] detectedFieldsIds = null;
|
||||
FieldClassification[] detectedFieldClassifications = null;
|
||||
@@ -827,7 +828,7 @@ final class AutofillManagerServiceImpl {
|
||||
final int averageScore = (int) ((totalScore * 100) / totalSize);
|
||||
mMetricsLogger.write(Helper
|
||||
.newLogMaker(MetricsEvent.AUTOFILL_FIELD_CLASSIFICATION_MATCHES,
|
||||
appPackageName, getServicePackageName())
|
||||
appPackageName, getServicePackageName(), compatMode)
|
||||
.setCounterValue(numberFields)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_MATCH_SCORE,
|
||||
averageScore));
|
||||
@@ -1122,7 +1123,7 @@ final class AutofillManagerServiceImpl {
|
||||
/**
|
||||
* Called by {@link Session} when service asked to disable autofill for an app.
|
||||
*/
|
||||
void disableAutofillForApp(@NonNull String packageName, long duration) {
|
||||
void disableAutofillForApp(@NonNull String packageName, long duration, boolean compatMode) {
|
||||
synchronized (mLock) {
|
||||
if (mDisabledApps == null) {
|
||||
mDisabledApps = new ArrayMap<>(1);
|
||||
@@ -1135,7 +1136,7 @@ final class AutofillManagerServiceImpl {
|
||||
mDisabledApps.put(packageName, expiration);
|
||||
int intDuration = duration > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) duration;
|
||||
mMetricsLogger.write(Helper.newLogMaker(MetricsEvent.AUTOFILL_SERVICE_DISABLED_APP,
|
||||
packageName, getServicePackageName())
|
||||
packageName, getServicePackageName(), compatMode)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_DURATION, intDuration));
|
||||
}
|
||||
}
|
||||
@@ -1143,7 +1144,8 @@ final class AutofillManagerServiceImpl {
|
||||
/**
|
||||
* Called by {@link Session} when service asked to disable autofill an app.
|
||||
*/
|
||||
void disableAutofillForActivity(@NonNull ComponentName componentName, long duration) {
|
||||
void disableAutofillForActivity(@NonNull ComponentName componentName, long duration,
|
||||
boolean compatMode) {
|
||||
synchronized (mLock) {
|
||||
if (mDisabledActivities == null) {
|
||||
mDisabledActivities = new ArrayMap<>(1);
|
||||
@@ -1160,7 +1162,8 @@ final class AutofillManagerServiceImpl {
|
||||
mMetricsLogger.write(new LogMaker(MetricsEvent.AUTOFILL_SERVICE_DISABLED_ACTIVITY)
|
||||
.setComponentName(componentName)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, getServicePackageName())
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_DURATION, intDuration));
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_DURATION, intDuration)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_COMPAT_MODE, compatMode ? 1 : 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.annotation.Nullable;
|
||||
import android.app.assist.AssistStructure;
|
||||
import android.app.assist.AssistStructure.ViewNode;
|
||||
import android.metrics.LogMaker;
|
||||
import android.os.Bundle;
|
||||
import android.service.autofill.Dataset;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
@@ -35,10 +34,7 @@ import com.android.internal.util.ArrayUtils;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
public final class Helper {
|
||||
|
||||
@@ -119,6 +115,13 @@ public final class Helper {
|
||||
return log;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static LogMaker newLogMaker(int category, String packageName,
|
||||
String servicePackageName, boolean compatMode) {
|
||||
return newLogMaker(category, packageName, servicePackageName)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_COMPAT_MODE, compatMode ? 1 : 0);
|
||||
}
|
||||
|
||||
public static void printlnRedactedText(@NonNull PrintWriter pw, @Nullable CharSequence text) {
|
||||
if (text == null) {
|
||||
pw.println("null");
|
||||
|
||||
@@ -644,9 +644,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
Slog.d(TAG, message.toString());
|
||||
}
|
||||
if ((flags & FillResponse.FLAG_DISABLE_ACTIVITY_ONLY) != 0) {
|
||||
mService.disableAutofillForActivity(mComponentName, disableDuration);
|
||||
mService.disableAutofillForActivity(mComponentName, disableDuration, mCompatMode);
|
||||
} else {
|
||||
mService.disableAutofillForApp(mComponentName.getPackageName(), disableDuration);
|
||||
mService.disableAutofillForApp(mComponentName.getPackageName(), disableDuration,
|
||||
mCompatMode);
|
||||
}
|
||||
sessionFinishedState = AutofillManager.STATE_DISABLED_BY_SERVICE;
|
||||
}
|
||||
@@ -1251,7 +1252,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
mService.logContextCommittedLocked(id, mClientState, mSelectedDatasetIds,
|
||||
ignoredDatasets, changedFieldIds, changedDatasetIds,
|
||||
manuallyFilledFieldIds, manuallyFilledDatasetIds,
|
||||
mComponentName.getPackageName());
|
||||
mComponentName.getPackageName(), mCompatMode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1306,7 +1307,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
mService.logContextCommittedLocked(id, mClientState, mSelectedDatasetIds,
|
||||
ignoredDatasets, changedFieldIds, changedDatasetIds,
|
||||
manuallyFilledFieldIds, manuallyFilledDatasetIds,
|
||||
mComponentName.getPackageName());
|
||||
mComponentName.getPackageName(), mCompatMode);
|
||||
return;
|
||||
}
|
||||
final Scores scores = result.getParcelable(EXTRA_SCORES);
|
||||
@@ -1371,7 +1372,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
mService.logContextCommittedLocked(id, mClientState, mSelectedDatasetIds,
|
||||
ignoredDatasets, changedFieldIds, changedDatasetIds, manuallyFilledFieldIds,
|
||||
manuallyFilledDatasetIds, detectedFieldIds, detectedFieldClassifications,
|
||||
mComponentName.getPackageName());
|
||||
mComponentName.getPackageName(), mCompatMode);
|
||||
});
|
||||
|
||||
fcStrategy.getScores(callback, algorithm, algorithmArgs, currentValues, userValues);
|
||||
@@ -1602,7 +1603,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
getUiForShowing().showSaveUi(mService.getServiceLabel(), mService.getServiceIcon(),
|
||||
mService.getServicePackageName(), saveInfo, this,
|
||||
mComponentName.getPackageName(), this,
|
||||
mPendingSaveUi);
|
||||
mPendingSaveUi, mCompatMode);
|
||||
if (client != null) {
|
||||
try {
|
||||
client.setSaveUiState(id, true);
|
||||
@@ -2080,7 +2081,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
|
||||
getUiForShowing().showFillUi(filledId, response, filterText,
|
||||
mService.getServicePackageName(), mComponentName.getPackageName(),
|
||||
mService.getServiceLabel(), mService.getServiceIcon(), this);
|
||||
mService.getServiceLabel(), mService.getServiceIcon(), this, mCompatMode);
|
||||
|
||||
synchronized (mLock) {
|
||||
if (mUiShownTime == 0) {
|
||||
@@ -2717,7 +2718,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
}
|
||||
|
||||
private LogMaker newLogMaker(int category, String servicePackageName) {
|
||||
return Helper.newLogMaker(category, mComponentName.getPackageName(), servicePackageName);
|
||||
return Helper.newLogMaker(category, mComponentName.getPackageName(), servicePackageName,
|
||||
mCompatMode);
|
||||
}
|
||||
|
||||
private void writeLog(int category) {
|
||||
|
||||
@@ -170,13 +170,14 @@ public final class AutoFillUI {
|
||||
public void showFillUi(@NonNull AutofillId focusedId, @NonNull FillResponse response,
|
||||
@Nullable String filterText, @Nullable String servicePackageName,
|
||||
@NonNull String packageName, @NonNull CharSequence serviceLabel,
|
||||
@NonNull Drawable serviceIcon, @NonNull AutoFillUiCallback callback) {
|
||||
@NonNull Drawable serviceIcon, @NonNull AutoFillUiCallback callback, boolean compatMode) {
|
||||
if (sDebug) {
|
||||
final int size = filterText == null ? 0 : filterText.length();
|
||||
Slog.d(TAG, "showFillUi(): id=" + focusedId + ", filter=" + size + " chars");
|
||||
}
|
||||
final LogMaker log =
|
||||
Helper.newLogMaker(MetricsEvent.AUTOFILL_FILL_UI, packageName, servicePackageName)
|
||||
final LogMaker log = Helper
|
||||
.newLogMaker(MetricsEvent.AUTOFILL_FILL_UI, packageName, servicePackageName,
|
||||
compatMode)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN,
|
||||
filterText == null ? 0 : filterText.length())
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS,
|
||||
@@ -262,14 +263,16 @@ public final class AutoFillUI {
|
||||
public void showSaveUi(@NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon,
|
||||
@Nullable String servicePackageName, @NonNull SaveInfo info,
|
||||
@NonNull ValueFinder valueFinder, @NonNull String packageName,
|
||||
@NonNull AutoFillUiCallback callback, @NonNull PendingUi pendingSaveUi) {
|
||||
@NonNull AutoFillUiCallback callback, @NonNull PendingUi pendingSaveUi,
|
||||
boolean compatMode) {
|
||||
if (sVerbose) Slog.v(TAG, "showSaveUi() for " + packageName + ": " + info);
|
||||
int numIds = 0;
|
||||
numIds += info.getRequiredIds() == null ? 0 : info.getRequiredIds().length;
|
||||
numIds += info.getOptionalIds() == null ? 0 : info.getOptionalIds().length;
|
||||
|
||||
final LogMaker log =
|
||||
Helper.newLogMaker(MetricsEvent.AUTOFILL_SAVE_UI, packageName, servicePackageName)
|
||||
final LogMaker log = Helper
|
||||
.newLogMaker(MetricsEvent.AUTOFILL_SAVE_UI, packageName, servicePackageName,
|
||||
compatMode)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds);
|
||||
|
||||
mHandler.post(() -> {
|
||||
@@ -319,7 +322,7 @@ public final class AutoFillUI {
|
||||
}
|
||||
mMetricsLogger.write(log);
|
||||
}
|
||||
});
|
||||
}, compatMode);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ import com.android.internal.R;
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.server.UiThread;
|
||||
import com.android.server.autofill.Helper;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -134,6 +135,7 @@ final class SaveUi {
|
||||
private final PendingUi mPendingUi;
|
||||
private final String mServicePackageName;
|
||||
private final String mPackageName;
|
||||
private final boolean mCompatMode;
|
||||
|
||||
private boolean mDestroyed;
|
||||
|
||||
@@ -141,12 +143,14 @@ final class SaveUi {
|
||||
@NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon,
|
||||
@Nullable String servicePackageName, @NonNull String packageName,
|
||||
@NonNull SaveInfo info, @NonNull ValueFinder valueFinder,
|
||||
@NonNull OverlayControl overlayControl, @NonNull OnSaveListener listener) {
|
||||
@NonNull OverlayControl overlayControl, @NonNull OnSaveListener listener,
|
||||
boolean compatMode) {
|
||||
mPendingUi= pendingUi;
|
||||
mListener = new OneTimeListener(listener);
|
||||
mOverlayControl = overlayControl;
|
||||
mServicePackageName = servicePackageName;
|
||||
mPackageName = packageName;
|
||||
mCompatMode = compatMode;
|
||||
|
||||
context = new ContextThemeWrapper(context, THEME_ID);
|
||||
final LayoutInflater inflater = LayoutInflater.from(context);
|
||||
@@ -409,14 +413,12 @@ final class SaveUi {
|
||||
}
|
||||
|
||||
private LogMaker newLogMaker(int category, int saveType) {
|
||||
return newLogMaker(category)
|
||||
return Helper.newLogMaker(category, mPackageName, mServicePackageName, mCompatMode)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SAVE_TYPE, saveType);
|
||||
}
|
||||
|
||||
private LogMaker newLogMaker(int category) {
|
||||
return new LogMaker(category)
|
||||
.setPackageName(mPackageName)
|
||||
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, mServicePackageName);
|
||||
return Helper.newLogMaker(category, mPackageName, mServicePackageName, mCompatMode);
|
||||
}
|
||||
|
||||
private void writeLog(int category, int saveType) {
|
||||
@@ -505,6 +507,7 @@ final class SaveUi {
|
||||
pw.print(prefix); pw.print("pendingUi: "); pw.println(mPendingUi);
|
||||
pw.print(prefix); pw.print("service: "); pw.println(mServicePackageName);
|
||||
pw.print(prefix); pw.print("app: "); pw.println(mPackageName);
|
||||
pw.print(prefix); pw.print("compat mode: "); pw.println(mCompatMode);
|
||||
|
||||
final View view = mDialog.getWindow().getDecorView();
|
||||
final int[] loc = view.getLocationOnScreen();
|
||||
|
||||
Reference in New Issue
Block a user