From b38ce1dc5714d8628da8fe8f30ff7df079b91b2f Mon Sep 17 00:00:00 2001 From: Tim Yu Date: Thu, 2 Feb 2023 17:02:28 +0000 Subject: [PATCH] Adds full integretion test for PCC Bug: ?? Test: ?? Change-Id: I71a12eadc0933e84c574d6bf165a1fa1965e5bb1 --- .../autofill/AutofillManagerService.java | 23 +++++++++++++++ .../autofill/AutofillManagerServiceImpl.java | 6 ++-- .../AutofillManagerServiceShellCommand.java | 28 +++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java index 5a7fbc57ba115..a3c09ab9ee3ba 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java @@ -756,6 +756,29 @@ public final class AutofillManagerService return false; } + // Called by Shell command + boolean setTemporaryDetectionService(@UserIdInt int userId, @NonNull String serviceName, + int durationMs) { + Slog.i(mTag, "setTemporaryDetectionService(" + userId + ") to " + serviceName + + " for " + durationMs + "ms"); + enforceCallingPermissionForManagement(); + + Objects.requireNonNull(serviceName); + if (durationMs > 100000) { + // limit duration + } + + mFieldClassificationResolver.setTemporaryService(userId, serviceName, durationMs); + + return false; + } + + // Called by Shell command + void resetTemporaryDetectionService(@UserIdInt int userId) { + enforceCallingPermissionForManagement(); + mFieldClassificationResolver.resetTemporaryService(userId); + } + /** * Requests a count of saved passwords from the current service. * diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 76e6974e14a6b..43b816bae651a 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -1733,14 +1733,14 @@ final class AutofillManagerServiceImpl private boolean isFieldClassificationServiceAvailableLocked() { if (mMaster.verbose) { - Slog.v(TAG, "isAugmentedAutofillService(): " + Slog.v(TAG, "isFieldClassificationService(): " + "setupCompleted=" + isSetupCompletedLocked() + ", disabled=" + isDisabledByUserRestrictionsLocked() + ", augmentedService=" - + mMaster.mAugmentedAutofillResolver.getServiceName(mUserId)); + + mMaster.mFieldClassificationResolver.getServiceName(mUserId)); } if (!isSetupCompletedLocked() || isDisabledByUserRestrictionsLocked() - || mMaster.mAugmentedAutofillResolver.getServiceName(mUserId) == null) { + || mMaster.mFieldClassificationResolver.getServiceName(mUserId) == null) { return false; } return true; diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceShellCommand.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceShellCommand.java index b09cb00f5eed7..b4e636e602d40 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceShellCommand.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceShellCommand.java @@ -116,6 +116,11 @@ public final class AutofillManagerServiceShellCommand extends ShellCommand { pw.println(" set default-augmented-service-enabled USER_ID [true|false]"); pw.println(" Enable / disable the default augmented autofill service for the user."); pw.println(""); + pw.println(" set temporary-detection-service USER_ID [COMPONENT_NAME DURATION]"); + pw.println(" Temporarily (for DURATION ms) changes the autofill detection service " + + "implementation."); + pw.println(" To reset, call with [COMPONENT_NAME 0]."); + pw.println(""); pw.println(" get default-augmented-service-enabled USER_ID"); pw.println(" Checks whether the default augmented autofill service is enabled for " + "the user."); @@ -175,6 +180,8 @@ public final class AutofillManagerServiceShellCommand extends ShellCommand { return setTemporaryAugmentedService(pw); case "default-augmented-service-enabled": return setDefaultAugmentedServiceEnabled(pw); + case "temporary-detection-service": + return setTemporaryDetectionService(pw); default: pw.println("Invalid set: " + what); return -1; @@ -317,6 +324,27 @@ public final class AutofillManagerServiceShellCommand extends ShellCommand { } } + private int setTemporaryDetectionService(PrintWriter pw) { + final int userId = getNextIntArgRequired(); + final String serviceName = getNextArg(); + final int duration = getNextIntArgRequired(); + + if (serviceName == null) { + mService.resetTemporaryDetectionService(userId); + return 0; + } + + if (duration <= 0) { + mService.resetTemporaryDetectionService(userId); + return 0; + } + + mService.setTemporaryDetectionService(userId, serviceName, duration); + pw.println("Autofill Detection Service temporarily set to " + serviceName + " for " + + duration + "ms"); + return 0; + } + private int setTemporaryAugmentedService(PrintWriter pw) { final int userId = getNextIntArgRequired(); final String serviceName = getNextArg();