diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 88300dbda1c44..4c7dc116d1679 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -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. * diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto index d61f228adb69b..1541231befc61 100644 --- a/proto/src/metrics_constants.proto +++ b/proto/src/metrics_constants.proto @@ -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 diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index e582daa29335a..6ff9539ff5e61 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -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 changedDatasetIds, @Nullable ArrayList manuallyFilledFieldIds, @Nullable ArrayList> 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> manuallyFilledDatasetIds, @Nullable ArrayList detectedFieldIdsList, @Nullable ArrayList 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)); } } diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java index 78526f53cdde4..5372d0c649cff 100644 --- a/services/autofill/java/com/android/server/autofill/Helper.java +++ b/services/autofill/java/com/android/server/autofill/Helper.java @@ -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"); diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index c05506066e6a6..88a679b43cc6c 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -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) { diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java index ee18dc2e5824f..811d87beaaa56 100644 --- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java @@ -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); }); } diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java index 80903c1a1fe4f..fa2a0d9ad8373 100644 --- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java @@ -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();