Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61969af0 authored by Adam He's avatar Adam He
Browse files

Move mAugmentedAutofillResolver to AutofillManagerService instead.

Fixes: 128911469
Test: atest android.autofillservice.cts.augmented.AugmentedLoginActivityTest
Change-Id: I3935a7c3496b54713cb8f48a534f25efa6b5da78
parent 3748ec15
Loading
Loading
Loading
Loading
+17 −22
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.autofill.ui.AutoFillUI;
import com.android.server.infra.AbstractMasterSystemService;
import com.android.server.infra.FrameworkResourcesServiceNameResolver;
import com.android.server.infra.SecureSettingsServiceNameResolver;

import java.io.FileDescriptor;
@@ -132,6 +133,12 @@ public final class AutofillManagerService
    @GuardedBy("sLock")
    private static int sVisibleDatasetsMaxCount = 0;

    /**
     * Object used to set the name of the augmented autofill service.
     */
    @NonNull
    final FrameworkResourcesServiceNameResolver mAugmentedAutofillResolver;

    private final AutoFillUI mUi;

    private final LocalLog mRequestsHistory = new LocalLog(20);
@@ -200,6 +207,11 @@ public final class AutofillManagerService
                getServiceForUserLocked(userId);
            }
        }

        mAugmentedAutofillResolver = new FrameworkResourcesServiceNameResolver(getContext(),
                com.android.internal.R.string.config_defaultAugmentedAutofillService);
        mAugmentedAutofillResolver.setOnTemporaryServiceNameChangedCallback(
                (u, s) -> getServiceForUserLocked(u).updateRemoteAugmentedAutofillService());
    }

    @Override // from AbstractMasterSystemService
@@ -549,37 +561,19 @@ public final class AutofillManagerService
                    + MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS + " (called with " + durationMs + ")");
        }

        synchronized (mLock) {
            final AutofillManagerServiceImpl service = getServiceForUserLocked(userId);
            if (service != null) {
                service.mAugmentedAutofillResolver.setTemporaryService(userId, serviceName,
                        durationMs);
            }
        }
        mAugmentedAutofillResolver.setTemporaryService(userId, serviceName, durationMs);
    }

    // Called by Shell command
    void resetTemporaryAugmentedAutofillService(@UserIdInt int userId) {
        enforceCallingPermissionForManagement();
        synchronized (mLock) {
            final AutofillManagerServiceImpl service = getServiceForUserLocked(userId);
            if (service != null) {
                service.mAugmentedAutofillResolver.resetTemporaryService(userId);
            }
        }
        mAugmentedAutofillResolver.resetTemporaryService(userId);
    }

    // Called by Shell command
    boolean isDefaultAugmentedServiceEnabled(@UserIdInt int userId) {
        enforceCallingPermissionForManagement();

        synchronized (mLock) {
            final AutofillManagerServiceImpl service = getServiceForUserLocked(userId);
            if (service != null) {
                return service.mAugmentedAutofillResolver.isDefaultServiceEnabled(userId);
            }
        }
        return false;
        return mAugmentedAutofillResolver.isDefaultServiceEnabled(userId);
    }

    // Called by Shell command
@@ -590,7 +584,7 @@ public final class AutofillManagerService
        synchronized (mLock) {
            final AutofillManagerServiceImpl service = getServiceForUserLocked(userId);
            if (service != null) {
                final boolean changed = service.mAugmentedAutofillResolver
                final boolean changed = mAugmentedAutofillResolver
                        .setDefaultServiceEnabled(userId, enabled);
                if (changed) {
                    service.updateRemoteAugmentedAutofillService();
@@ -1332,6 +1326,7 @@ public final class AutofillManagerService
                    pw.print(" sVerbose: "); pw.println(realVerbose);
                    // Dump per-user services
                    dumpLocked("", pw);
                    mAugmentedAutofillResolver.dumpShort(pw); pw.println();
                    pw.print("Max partitions per session: "); pw.println(sPartitionMaxCount);
                    pw.print("Max visible datasets: "); pw.println(sVisibleDatasetsMaxCount);
                    if (sFullScreenMode != null) {
+6 −19
Original line number Diff line number Diff line
@@ -80,7 +80,6 @@ import com.android.server.autofill.AutofillManagerService.AutofillCompatState;
import com.android.server.autofill.RemoteAugmentedAutofillService.RemoteAugmentedAutofillServiceCallbacks;
import com.android.server.autofill.ui.AutoFillUI;
import com.android.server.infra.AbstractPerUserSystemService;
import com.android.server.infra.FrameworkResourcesServiceNameResolver;

import java.io.PrintWriter;
import java.util.ArrayList;
@@ -156,13 +155,6 @@ final class AutofillManagerServiceImpl
    /** When was {@link PruneTask} last executed? */
    private long mLastPrune = 0;

    // TODO(b/128911469): move to AutofillManagerService
    /**
     * Object used to set the name of the augmented autofill service.
     */
    @NonNull
    final FrameworkResourcesServiceNameResolver mAugmentedAutofillResolver;

    /**
     * Reference to the {@link RemoteAugmentedAutofillService}, is set on demand.
     */
@@ -192,11 +184,6 @@ final class AutofillManagerServiceImpl
        mFieldClassificationStrategy = new FieldClassificationStrategy(getContext(), userId);
        mAutofillCompatState = autofillCompatState;

        mAugmentedAutofillResolver = new FrameworkResourcesServiceNameResolver(master.getContext(),
                com.android.internal.R.string.config_defaultAugmentedAutofillService);
        mAugmentedAutofillResolver.setOnTemporaryServiceNameChangedCallback(
                (u, s) -> updateRemoteAugmentedAutofillService());

        updateLocked(disabled);
    }

@@ -895,8 +882,7 @@ final class AutofillManagerServiceImpl
                .getString(R.string.config_defaultAutofillService));

        pw.print(prefix); pw.println("mAugmentedAutofillNamer: ");
        pw.print(prefix2); mAugmentedAutofillResolver.dumpShort(pw); pw.println();
        pw.print(prefix2); mAugmentedAutofillResolver.dumpShort(pw, mUserId); pw.println();
        pw.print(prefix2); mMaster.mAugmentedAutofillResolver.dumpShort(pw, mUserId); pw.println();

        if (mRemoteAugmentedAutofillService != null) {
            pw.print(prefix); pw.println("RemoteAugmentedAutofillService: ");
@@ -1053,7 +1039,7 @@ final class AutofillManagerServiceImpl
    @GuardedBy("mLock")
    @Nullable RemoteAugmentedAutofillService getRemoteAugmentedAutofillServiceLocked() {
        if (mRemoteAugmentedAutofillService == null) {
            final String serviceName = mAugmentedAutofillResolver.getServiceName(mUserId);
            final String serviceName = mMaster.mAugmentedAutofillResolver.getServiceName(mUserId);
            if (serviceName == null) {
                if (mMaster.verbose) {
                    Slog.v(TAG, "getRemoteAugmentedAutofillServiceLocked(): not set");
@@ -1061,8 +1047,8 @@ final class AutofillManagerServiceImpl
                return null;
            }
            final Pair<ServiceInfo, ComponentName> pair = RemoteAugmentedAutofillService
                    .getComponentName(
                            serviceName, mUserId, mAugmentedAutofillResolver.isTemporary(mUserId));
                    .getComponentName(serviceName, mUserId,
                            mMaster.mAugmentedAutofillResolver.isTemporary(mUserId));
            if (pair == null) return null;

            mRemoteAugmentedAutofillServiceInfo = pair.first;
@@ -1092,7 +1078,8 @@ final class AutofillManagerServiceImpl
    }

    /**
     * Called when the {@link #mAugmentedAutofillResolver} changed (among other places).
     * Called when the {@link AutofillManagerService#mAugmentedAutofillResolver}
     * changed (among other places).
     */
    void updateRemoteAugmentedAutofillService() {
        synchronized (mLock) {