Merge "Syncronize frameowrk and ImsStack operation for ImsFeatureStatusCallback."

This commit is contained in:
Treehugger Robot
2022-11-08 17:07:54 +00:00
committed by Gerrit Code Review
2 changed files with 11 additions and 7 deletions

View File

@@ -425,8 +425,8 @@ public class ImsService extends Service {
} }
} }
private IImsRcsFeature createRcsFeatureInternal(int slotId, int subI) { private IImsRcsFeature createRcsFeatureInternal(int slotId, int subId) {
RcsFeature f = createRcsFeatureForSubscription(slotId, subI); RcsFeature f = createRcsFeatureForSubscription(slotId, subId);
if (f != null) { if (f != null) {
f.setDefaultExecutor(mExecutor); f.setDefaultExecutor(mExecutor);
setupFeature(f, slotId, ImsFeature.FEATURE_RCS); setupFeature(f, slotId, ImsFeature.FEATURE_RCS);

View File

@@ -394,10 +394,12 @@ public abstract class ImsFeature {
@VisibleForTesting @VisibleForTesting
public void addImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) { public void addImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) {
try { try {
synchronized (mStatusCallbacks) {
// Add the callback if the callback completes successfully without a RemoteException
mStatusCallbacks.register(c);
// If we have just connected, send queued status. // If we have just connected, send queued status.
c.notifyImsFeatureStatus(getFeatureState()); c.notifyImsFeatureStatus(getFeatureState());
// Add the callback if the callback completes successfully without a RemoteException. }
mStatusCallbacks.register(c);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(LOG_TAG, "Couldn't notify feature state: " + e.getMessage()); Log.w(LOG_TAG, "Couldn't notify feature state: " + e.getMessage());
} }
@@ -409,8 +411,10 @@ public abstract class ImsFeature {
*/ */
@VisibleForTesting @VisibleForTesting
public void removeImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) { public void removeImsFeatureStatusCallback(@NonNull IImsFeatureStatusCallback c) {
synchronized (mStatusCallbacks) {
mStatusCallbacks.unregister(c); mStatusCallbacks.unregister(c);
} }
}
/** /**
* Internal method called by ImsFeature when setFeatureState has changed. * Internal method called by ImsFeature when setFeatureState has changed.