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

Commit e8e340f0 authored by Felipe Leme's avatar Felipe Leme Committed by Android (Google) Code Review
Browse files

Merge "Fixed augmented autofill workflow so it's bound right away when main service is disabled."

parents df1aa854 d6a30c8b
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -198,6 +198,11 @@ public final class AutofillManagerService
        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        context.registerReceiver(mBroadcastReceiver, filter, null, FgThread.getHandler());

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

        if (mSupportedSmartSuggestionModes != AutofillManager.FLAG_SMART_SUGGESTION_OFF) {
            // Must eager load the services so they bind to the augmented autofill service
            final UserManager um = getContext().getSystemService(UserManager.class);
@@ -207,11 +212,6 @@ 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
+21 −2
Original line number Diff line number Diff line
@@ -247,7 +247,8 @@ final class AutofillManagerServiceImpl
        if (isEnabledLocked()) return FLAG_ADD_CLIENT_ENABLED;

        // Check if it's enabled for augmented autofill
        if (isSetupCompletedLocked() && isWhitelistedForAugmentedAutofillLocked(componentName)) {
        if (isAugmentedAutofillServiceAvailableLocked()
                && isWhitelistedForAugmentedAutofillLocked(componentName)) {
            return FLAG_ADD_CLIENT_ENABLED_FOR_AUGMENTED_AUTOFILL_ONLY;
        }

@@ -1150,12 +1151,30 @@ final class AutofillManagerServiceImpl
                mRemoteAugmentedAutofillServiceInfo = null;
            }

            if (isEnabledLocked()) {
            final boolean available = isAugmentedAutofillServiceAvailableLocked();
            if (sVerbose) Slog.v(TAG, "updateRemoteAugmentedAutofillService(): " + available);

            if (available) {
                mRemoteAugmentedAutofillService = getRemoteAugmentedAutofillServiceLocked();
            }
        }
    }

    private boolean isAugmentedAutofillServiceAvailableLocked() {
        if (mMaster.verbose) {
            Slog.v(TAG, "isAugmentedAutofillService(): "
                    + "setupCompleted=" + isSetupCompletedLocked()
                    + ", disabled=" + isDisabledByUserRestrictionsLocked()
                    + ", augmentedService="
                    + mMaster.mAugmentedAutofillResolver.getServiceName(mUserId));
        }
        if (!isSetupCompletedLocked() || isDisabledByUserRestrictionsLocked()
                || mMaster.mAugmentedAutofillResolver.getServiceName(mUserId) == null) {
            return false;
        }
        return true;
    }

    /**
     * Sets which packages and activities can trigger augmented autofill.
     *
+20 −4
Original line number Diff line number Diff line
@@ -112,6 +112,13 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst
        return mSetupComplete && mServiceInfo != null && !mDisabled;
    }

    /**
     * Gets whether the service is disabled by {@link UserManager} restrictions.
     */
    protected final boolean isDisabledByUserRestrictionsLocked() {
        return mDisabled;
    }

    /**
     * Updates the state of this service.
     *
@@ -136,7 +143,9 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst
                    + ", disabled=" + disabled + ", mDisabled=" + mDisabled);
        }

        mSetupComplete = isSetupCompletedLocked();
        final String setupComplete = Settings.Secure.getStringForUser(
                getContext().getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, mUserId);
        mSetupComplete = "1".equals(setupComplete);
        mDisabled = disabled;

        updateServiceInfoLocked();
@@ -234,6 +243,15 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst
        mMaster.mServiceNameResolver.resetTemporaryService(mUserId);
    }

    /**
     * Gets the {@link ServiceInfo} of the remote service this service binds to, or {@code null}
     * if the service is disabled.
     */
    @Nullable
    public final ServiceInfo getServiceInfo() {
        return mServiceInfo;
    }

    /**
     * Gets the {@link ComponentName} of the remote service this service binds to, or {@code null}
     * if the service is disabled.
@@ -311,9 +329,7 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst
     * Gets whether the device already finished setup.
     */
    protected final boolean isSetupCompletedLocked() {
        final String setupComplete = Settings.Secure.getStringForUser(
                getContext().getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, mUserId);
        return "1".equals(setupComplete);
        return mSetupComplete;
    }

    /**