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

Commit 5c0e3a8d authored by Reema Bajwa's avatar Reema Bajwa Committed by Android (Google) Code Review
Browse files

Merge "Revert "Fix update of services for multiple backend mode""

parents 862eda0d e31dc4d4
Loading
Loading
Loading
Loading
+0 −22
Original line number Diff line number Diff line
@@ -684,15 +684,6 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
     */
    @GuardedBy("mLock")
    protected List<S> updateCachedServiceListLocked(@UserIdInt int userId, boolean disabled) {
        if (mServiceNameResolver.isConfiguredInMultipleMode()) {
            // In multiple mode, we have multiple instances of AbstractPerUserSystemService, per
            // user where each instance holds information needed to connect to a backend. An
            // update operation in this mode needs to account for addition, deletion, change
            // of backends and cannot be executed in the scope of a given
            // AbstractPerUserSystemService.
            return updateCachedServiceListMultiModeLocked(userId, disabled);
        }
        // isConfiguredInMultipleMode is false
        final List<S> services = getServiceListForUserLocked(userId);
        if (services == null) {
            return null;
@@ -713,19 +704,6 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem
        return services;
    }

    @GuardedBy("mLock")
    private List<S> updateCachedServiceListMultiModeLocked(int userId, boolean disabled) {
        final int resolvedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
                Binder.getCallingUid(), userId, false, false, null,
                null);
        List<S> services = new ArrayList<>();
	synchronized (mLock) {
            removeCachedServiceListLocked(resolvedUserId);
            services = getServiceListForUserLocked(userId);
        }
        return services;
    }

    /**
     * Gets the Settings property that defines the name of the component name used to bind this
     * service to an external service, or {@code null} when the service is not defined by such
+18 −10
Original line number Diff line number Diff line
@@ -154,14 +154,7 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst

        if (mMaster.mServiceNameResolver != null
                && mMaster.mServiceNameResolver.isConfiguredInMultipleMode()) {
            // Update of multi configured mode should always happen in AbstractMasterSystemService
            // as this class is not aware of the complete list of multiple backends. Since we
            // should never end up in this state, it is safe to not do anything if we end up here
            // through a different code path.
            if (mMaster.debug) {
                Slog.d(mTag, "Should not end up in updateLocked when "
                        + "isConfiguredInMultipleMode is true");
            }
            updateServiceInfoListLocked();
        } else {
            updateServiceInfoLocked();
        }
@@ -173,14 +166,29 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst
     */
    @GuardedBy("mLock")
    protected final ComponentName updateServiceInfoLocked() {
        ComponentName[] componentNames = updateServiceInfoListLocked();
        return componentNames == null || componentNames.length == 0 ? null : componentNames[0];
    }

    /**
     * Updates the internal reference to the service info, and returns the service's component.
     */
    @GuardedBy("mLock")
    protected final ComponentName[] updateServiceInfoListLocked() {
        if (mMaster.mServiceNameResolver == null) {
            return null;
        }
        if (!mMaster.mServiceNameResolver.isConfiguredInMultipleMode()) {
            final String componentName = getComponentNameLocked();
            return getServiceComponent(componentName);
            return new ComponentName[] { getServiceComponent(componentName) };
        }
        return null;
        final String[] componentNames = mMaster.mServiceNameResolver.getServiceNameList(
                mUserId);
        ComponentName[] serviceComponents = new ComponentName[componentNames.length];
        for (int i = 0; i < componentNames.length; i++) {
            serviceComponents[i] = getServiceComponent(componentNames[i]);
        }
        return serviceComponents;
    }

    private ComponentName getServiceComponent(String componentName) {