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

Commit 7ed7b2cc authored by Felipe Leme's avatar Felipe Leme
Browse files

Added MasterSystemService.onServiceRemoved() and some other nit fixes...

Test: CtsAutoFillServiceTestCases
Bug: 117779333

Change-Id: If5579b7aef991f34148fde48c35122e194d621d9
parent edc06c8c
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -166,12 +166,12 @@ public final class AutofillManagerService
        context.registerReceiver(mBroadcastReceiver, filter, null, FgThread.getHandler());
    }

    @Override // from MasterSystemService
    @Override // from AbstractMasterSystemService
    protected String getServiceSettingsProperty() {
        return Settings.Secure.AUTOFILL_SERVICE;
    }

    @Override // from MasterSystemService
    @Override // from AbstractMasterSystemService
    protected void registerForExtraSettingsChanges(@NonNull ContentResolver resolver,
            @NonNull ContentObserver observer) {
        resolver.registerContentObserver(Settings.Global.getUriFor(
@@ -188,7 +188,7 @@ public final class AutofillManagerService
                UserHandle.USER_ALL);
    }

    @Override // from MasterSystemService
    @Override // from AbstractMasterSystemService
    protected void onSettingsChanged(int userId, @NonNull String property) {
        switch (property) {
            case Settings.Global.AUTOFILL_LOGGING_LEVEL:
@@ -210,25 +210,24 @@ public final class AutofillManagerService
        }
    }

    @Override // from MasterSystemService
    protected AutofillManagerServiceImpl newServiceLocked(int resolvedUserId, boolean disabled) {
    @Override // from AbstractMasterSystemService
    protected AutofillManagerServiceImpl newServiceLocked(@UserIdInt int resolvedUserId,
            boolean disabled) {
        return new AutofillManagerServiceImpl(this, mLock, mRequestsHistory,
                mUiLatencyHistory, mWtfHistory, resolvedUserId, mUi, mAutofillCompatState,
                disabled);
    }

    @Override // MasterSystemService
    protected AutofillManagerServiceImpl removeCachedServiceLocked(int userId) {
        final AutofillManagerServiceImpl service = super.removeCachedServiceLocked(userId);
        if (service != null) {
    @Override // AbstractMasterSystemService
    protected void onServiceRemoved(@NonNull AutofillManagerServiceImpl service,
            @UserIdInt int userId) {
        service.destroyLocked();
        mAutofillCompatState.removeCompatibilityModeRequests(userId);
    }
        return service;
    }

    @Override // from MasterSystemService
    protected void onServiceEnabledLocked(@NonNull AutofillManagerServiceImpl service, int userId) {
    @Override // from AbstractMasterSystemService
    protected void onServiceEnabledLocked(@NonNull AutofillManagerServiceImpl service,
            @UserIdInt int userId) {
        addCompatibilityModeRequestsLocked(service, userId);
    }

@@ -245,7 +244,7 @@ public final class AutofillManagerService
    }

    // Called by Shell command.
    void destroySessions(int userId, IResultReceiver receiver) {
    void destroySessions(@UserIdInt int userId, IResultReceiver receiver) {
        Slog.i(TAG, "destroySessions() for userId " + userId);
        getContext().enforceCallingPermission(MANAGE_AUTO_FILL, TAG);

+14 −6
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     */
    @GuardedBy("mLock")
    @Nullable
    protected S peekServiceForUserLocked(int userId) {
    protected S peekServiceForUserLocked(@UserIdInt int userId) {
        final int resolvedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
                Binder.getCallingUid(), userId, false, false, null, null);
        return mServicesCache.get(resolvedUserId);
@@ -254,7 +254,7 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     * Updates a cached service for a given user.
     */
    @GuardedBy("mLock")
    protected void updateCachedServiceLocked(int userId) {
    protected void updateCachedServiceLocked(@UserIdInt int userId) {
        updateCachedServiceLocked(userId, isDisabledLocked(userId));
    }

@@ -262,7 +262,7 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     * Checks whether the service is disabled (through {@link UserManager} restrictions) for the
     * given user.
     */
    protected boolean isDisabledLocked(int userId) {
    protected boolean isDisabledLocked(@UserIdInt int userId) {
        return mDisabledUsers == null ? false : mDisabledUsers.get(userId);
    }

@@ -274,7 +274,7 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     * @return service for the user.
     */
    @GuardedBy("mLock")
    protected S updateCachedServiceLocked(int userId, boolean disabled) {
    protected S updateCachedServiceLocked(@UserIdInt int userId, boolean disabled) {
        final S service = getServiceForUserLocked(userId);
        if (service != null) {
            service.updateLocked(disabled);
@@ -304,7 +304,7 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     * <p>By default doesn't do anything, but can be overridden by subclasses.
     */
    @SuppressWarnings("unused")
    protected void onServiceEnabledLocked(S service, @UserIdInt int userId) {
    protected void onServiceEnabledLocked(@NonNull S service, @UserIdInt int userId) {
    }

    /**
@@ -314,14 +314,22 @@ public abstract class AbstractMasterSystemService<S extends AbstractPerUserSyste
     */
    @GuardedBy("mLock")
    @NonNull
    protected S removeCachedServiceLocked(@UserIdInt int userId) {
    private S removeCachedServiceLocked(@UserIdInt int userId) {
        final S service = peekServiceForUserLocked(userId);
        if (service != null) {
            mServicesCache.delete(userId);
            onServiceRemoved(service, userId);
        }
        return service;
    }

    /**
     * Called after the service is removed from the cache.
     */
    @SuppressWarnings("unused")
    protected void onServiceRemoved(@NonNull S service, @UserIdInt int userId) {
    }

    /**
     * Visits all services in the cache.
     */
+7 −9
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.intelligence;
import static android.content.Context.INTELLIGENCE_MANAGER_SERVICE;

import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.ActivityManagerInternal;
import android.content.ComponentName;
import android.content.Context;
@@ -59,14 +60,14 @@ public final class IntelligenceManagerService
        super(context, UserManager.DISALLOW_INTELLIGENCE_CAPTURE);
    }

    @Override // from MasterSystemService
    @Override // from AbstractMasterSystemService
    protected String getServiceSettingsProperty() {
        // TODO(b/111276913): STOPSHIP temporary settings, until it's set by resourcs + cmd
        return "intel_service";
    }

    @Override // from MasterSystemService
    protected IntelligencePerUserService newServiceLocked(int resolvedUserId,
    @Override // from AbstractMasterSystemService
    protected IntelligencePerUserService newServiceLocked(@UserIdInt int resolvedUserId,
            boolean disabled) {
        return new IntelligencePerUserService(this, mLock, resolvedUserId);
    }
@@ -79,13 +80,10 @@ public final class IntelligenceManagerService
    }

    @Override // from AbstractMasterSystemService
    protected IntelligencePerUserService removeCachedServiceLocked(int userId) {
        final IntelligencePerUserService service = super.removeCachedServiceLocked(userId);
        if (service != null) {
    protected void onServiceRemoved(@NonNull IntelligencePerUserService service,
            @UserIdInt int userId) {
        service.destroyLocked();
    }
        return service;
    }

    private ActivityManagerInternal getAmInternal() {
        synchronized (mLock) {