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

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

Revert "Fix update of services for multiple backend mode"

This reverts commit 468d4e8d.

Reason for revert: Change causing NPE b/20797663

Change-Id: Ia71efac2d8583cc5ac79879f10209784c700fbb0
parent 468d4e8d
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) {