Loading services/core/java/com/android/server/infra/AbstractMasterSystemService.java +23 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,16 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem */ @GuardedBy("mLock") protected List<S> updateCachedServiceListLocked(@UserIdInt int userId, boolean disabled) { if (mServiceNameResolver != null && 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; Loading @@ -704,6 +714,19 @@ 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 Loading services/core/java/com/android/server/infra/AbstractPerUserSystemService.java +8 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,14 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst if (mMaster.mServiceNameResolver != null && mMaster.mServiceNameResolver.isConfiguredInMultipleMode()) { updateServiceInfoListLocked(); // 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"); } } else { updateServiceInfoLocked(); } Loading Loading
services/core/java/com/android/server/infra/AbstractMasterSystemService.java +23 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,16 @@ public abstract class AbstractMasterSystemService<M extends AbstractMasterSystem */ @GuardedBy("mLock") protected List<S> updateCachedServiceListLocked(@UserIdInt int userId, boolean disabled) { if (mServiceNameResolver != null && 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; Loading @@ -704,6 +714,19 @@ 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 Loading
services/core/java/com/android/server/infra/AbstractPerUserSystemService.java +8 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,14 @@ public abstract class AbstractPerUserSystemService<S extends AbstractPerUserSyst if (mMaster.mServiceNameResolver != null && mMaster.mServiceNameResolver.isConfiguredInMultipleMode()) { updateServiceInfoListLocked(); // 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"); } } else { updateServiceInfoLocked(); } Loading