Merge "[Autofill PCC]: Optimize PCC Detection calling" into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-12 16:32:24 +00:00
committed by Android (Google) Code Review
4 changed files with 39 additions and 5 deletions

View File

@@ -760,6 +760,12 @@ public final class AutofillManagerService
return false; return false;
} }
// Called by Shell command
String getFieldDetectionServiceName(@UserIdInt int userId) {
enforceCallingPermissionForManagement();
return mFieldClassificationResolver.readServiceName(userId);
}
// Called by Shell command // Called by Shell command
boolean setTemporaryDetectionService(@UserIdInt int userId, @NonNull String serviceName, boolean setTemporaryDetectionService(@UserIdInt int userId, @NonNull String serviceName,
int durationMs) { int durationMs) {
@@ -903,9 +909,9 @@ public final class AutofillManagerService
} }
/** /**
* Whether the Autofill PCC Classification feature is enabled. * Whether the Autofill PCC Classification feature flag is enabled.
*/ */
public boolean isPccClassificationEnabled() { public boolean isPccClassificationFlagEnabled() {
synchronized (mFlagLock) { synchronized (mFlagLock) {
return mPccClassificationEnabled; return mPccClassificationEnabled;
} }

View File

@@ -1730,6 +1730,23 @@ final class AutofillManagerServiceImpl
return mRemoteFieldClassificationService; return mRemoteFieldClassificationService;
} }
public boolean isPccClassificationEnabled() {
boolean result = isPccClassificationEnabledInternal();
if (sVerbose) {
Slog.v(TAG, "pccEnabled: " + result);
}
return result;
}
public boolean isPccClassificationEnabledInternal() {
boolean flagEnabled = mMaster.isPccClassificationFlagEnabled();
if (!flagEnabled) return false;
synchronized (mLock) {
return getRemoteFieldClassificationServiceLocked() != null;
}
}
/** /**
* Called when the {@link AutofillManagerService#mFieldClassificationResolver} * Called when the {@link AutofillManagerService#mFieldClassificationResolver}
* changed (among other places). * changed (among other places).

View File

@@ -26,6 +26,7 @@ import android.os.RemoteCallback;
import android.os.ShellCommand; import android.os.ShellCommand;
import android.os.UserHandle; import android.os.UserHandle;
import android.service.autofill.AutofillFieldClassificationService.Scores; import android.service.autofill.AutofillFieldClassificationService.Scores;
import android.text.TextUtils;
import android.view.autofill.AutofillManager; import android.view.autofill.AutofillManager;
import com.android.internal.os.IResultReceiver; import com.android.internal.os.IResultReceiver;
@@ -154,6 +155,8 @@ public final class AutofillManagerServiceShellCommand extends ShellCommand {
return getBindInstantService(pw); return getBindInstantService(pw);
case "default-augmented-service-enabled": case "default-augmented-service-enabled":
return getDefaultAugmentedServiceEnabled(pw); return getDefaultAugmentedServiceEnabled(pw);
case "field-detection-service-enabled":
return isFieldDetectionServiceEnabled(pw);
case "saved-password-count": case "saved-password-count":
return getSavedPasswordCount(pw); return getSavedPasswordCount(pw);
default: default:
@@ -343,6 +346,14 @@ public final class AutofillManagerServiceShellCommand extends ShellCommand {
return 0; return 0;
} }
private int isFieldDetectionServiceEnabled(PrintWriter pw) {
final int userId = getNextIntArgRequired();
String name = mService.getFieldDetectionServiceName(userId);
boolean enabled = !TextUtils.isEmpty(name);
pw.println(enabled);
return 0;
}
private int setTemporaryAugmentedService(PrintWriter pw) { private int setTemporaryAugmentedService(PrintWriter pw) {
final int userId = getNextIntArgRequired(); final int userId = getNextIntArgRequired();
final String serviceName = getNextArg(); final String serviceName = getNextArg();

View File

@@ -798,7 +798,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Returns empty list if PCC is off or no types available * Returns empty list if PCC is off or no types available
*/ */
private List<String> getTypeHintsForProvider() { private List<String> getTypeHintsForProvider() {
if (!mService.getMaster().isPccClassificationEnabled()) { if (!mService.isPccClassificationEnabled()) {
return Collections.EMPTY_LIST; return Collections.EMPTY_LIST;
} }
final String typeHints = mService.getMaster().getPccProviderHints(); final String typeHints = mService.getMaster().getPccProviderHints();
@@ -1200,7 +1200,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
// structure is taken. This causes only one fill request per burst of focus changes. // structure is taken. This causes only one fill request per burst of focus changes.
cancelCurrentRequestLocked(); cancelCurrentRequestLocked();
if (mService.getMaster().isPccClassificationEnabled() if (mService.isPccClassificationEnabled()
&& mClassificationState.mHintsToAutofillIdMap == null) { && mClassificationState.mHintsToAutofillIdMap == null) {
if (sVerbose) { if (sVerbose) {
Slog.v(TAG, "triggering field classification"); Slog.v(TAG, "triggering field classification");
@@ -1631,7 +1631,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
Slog.d(TAG, "DBG: computeDatasetsForProviderAndUpdateContainer: " Slog.d(TAG, "DBG: computeDatasetsForProviderAndUpdateContainer: "
+ autofillProviderContainer); + autofillProviderContainer);
} }
if (!mService.getMaster().isPccClassificationEnabled()) { if (!mService.isPccClassificationEnabled()) {
if (sVerbose) { if (sVerbose) {
Slog.v(TAG, "PCC classification is disabled"); Slog.v(TAG, "PCC classification is disabled");
} }