diff options
author | James.cf Lin <jamescflin@google.com> | 2020-12-04 17:31:41 +0800 |
---|---|---|
committer | James.cf Lin <jamescflin@google.com> | 2020-12-04 22:22:49 +0800 |
commit | 2b37f4d05e0acf6c3d06ee0f7e50b4b8a8e9edbc (patch) | |
tree | 64587d531c874418aebe26a27e07574ecd138c10 | |
parent | cee4c3afd640bea872ad51ec435822450d4c3152 (diff) | |
download | ims-2b37f4d05e0acf6c3d06ee0f7e50b4b8a8e9edbc.tar.gz |
[RCS UCE] Remove the unused listener RcsFeatureListener
Since the UCE design change, the listener IRcsFeatureListener has been replaced by the listener ICapabilityExchangeEventListener.
Remove the unused listener IRcsFeatureListener.
Bug: 171965576
Test: atest UceControllerTest
Change-Id: Idfd2f763fa95b74844574077a655429b2537dbe9
-rw-r--r-- | src/java/com/android/ims/RcsFeatureConnection.java | 29 | ||||
-rw-r--r-- | src/java/com/android/ims/RcsFeatureManager.java | 143 | ||||
-rw-r--r-- | src/java/com/android/ims/rcs/uce/UceController.java | 25 | ||||
-rw-r--r-- | tests/src/com/android/ims/rcs/uce/UceControllerTest.java | 3 |
4 files changed, 72 insertions, 128 deletions
diff --git a/src/java/com/android/ims/RcsFeatureConnection.java b/src/java/com/android/ims/RcsFeatureConnection.java index d5f83ca2..1dfc1aab 100644 --- a/src/java/com/android/ims/RcsFeatureConnection.java +++ b/src/java/com/android/ims/RcsFeatureConnection.java @@ -21,7 +21,6 @@ import android.content.Context; import android.net.Uri; import android.os.IBinder; import android.os.RemoteException; -import android.telephony.ims.RcsContactUceCapability; import android.telephony.ims.aidl.ICapabilityExchangeEventListener; import android.telephony.ims.aidl.IImsCapabilityCallback; import android.telephony.ims.aidl.IImsConfig; @@ -29,7 +28,6 @@ import android.telephony.ims.aidl.IImsRcsFeature; import android.telephony.ims.aidl.IImsRegistration; import android.telephony.ims.aidl.IImsRegistrationCallback; import android.telephony.ims.aidl.IPublishResponseCallback; -import android.telephony.ims.aidl.IRcsFeatureListener; import android.telephony.ims.aidl.ISipTransport; import android.telephony.ims.aidl.ISubscribeResponseCallback; import android.telephony.ims.feature.CapabilityChangeRequest; @@ -128,7 +126,7 @@ public class RcsFeatureConnection extends FeatureConnection { } public void close() { - removeRcsFeatureListener(); + removeCapabilityExchangeEventListener(); mAvailabilityCallbackManager.close(); mRegistrationCallbackManager.close(); } @@ -139,16 +137,17 @@ public class RcsFeatureConnection extends FeatureConnection { super.onRemovedOrDied(); } - public void setRcsFeatureListener(IRcsFeatureListener listener) throws RemoteException { + public void setCapabilityExchangeEventListener(ICapabilityExchangeEventListener listener) + throws RemoteException { synchronized (mLock) { checkServiceIsReady(); - getServiceInterface(mBinder).setListener(listener); + getServiceInterface(mBinder).setCapabilityExchangeEventListener(listener); } } - public void removeRcsFeatureListener() { + public void removeCapabilityExchangeEventListener() { try { - setRcsFeatureListener(null); + setCapabilityExchangeEventListener(null); } catch (RemoteException e) { // If we are not still connected, there is no need to fail removing. } @@ -217,22 +216,6 @@ public class RcsFeatureConnection extends FeatureConnection { } } - public void requestPublication(RcsContactUceCapability capabilities, int taskId) - throws RemoteException { - synchronized (mLock) { - checkServiceIsReady(); - getServiceInterface(mBinder).updateCapabilities(capabilities, taskId); - } - } - - public void setCapabilityExchangeEventListener(ICapabilityExchangeEventListener listener) - throws RemoteException{ - synchronized (mLock) { - checkServiceIsReady(); - getServiceInterface(mBinder).setCapabilityExchangeEventListener(listener); - } - } - public void requestPublication(String pidfXml, IPublishResponseCallback responseCallback) throws RemoteException { synchronized (mLock) { diff --git a/src/java/com/android/ims/RcsFeatureManager.java b/src/java/com/android/ims/RcsFeatureManager.java index fc7d7a31..cc519e8b 100644 --- a/src/java/com/android/ims/RcsFeatureManager.java +++ b/src/java/com/android/ims/RcsFeatureManager.java @@ -28,15 +28,15 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyFrameworkInitializer; import android.telephony.ims.ImsException; import android.telephony.ims.ImsService; -import android.telephony.ims.RcsContactUceCapability; +import android.telephony.ims.RcsUceAdapter.StackPublishTriggerType; import android.telephony.ims.RegistrationManager; import android.telephony.ims.aidl.ICapabilityExchangeEventListener; import android.telephony.ims.aidl.IImsCapabilityCallback; import android.telephony.ims.aidl.IImsRcsController; import android.telephony.ims.aidl.IImsRcsFeature; import android.telephony.ims.aidl.IImsRegistrationCallback; +import android.telephony.ims.aidl.IOptionsRequestCallback; import android.telephony.ims.aidl.IPublishResponseCallback; -import android.telephony.ims.aidl.IRcsFeatureListener; import android.telephony.ims.aidl.ISipTransport; import android.telephony.ims.aidl.ISubscribeResponseCallback; import android.telephony.ims.feature.CapabilityChangeRequest; @@ -44,14 +44,10 @@ import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.RcsFeature; import android.telephony.ims.feature.RcsFeature.RcsImsCapabilities; import android.telephony.ims.stub.ImsRegistrationImplBase; -import android.telephony.ims.stub.RcsCapabilityExchange; -import android.telephony.ims.stub.RcsPresenceExchangeImplBase; -import android.telephony.ims.stub.RcsSipOptionsImplBase; import android.util.Log; import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.telephony.ITelephony; import com.android.telephony.Rlog; import java.util.ArrayList; @@ -77,91 +73,55 @@ public class RcsFeatureManager implements FeatureUpdates { private static final int CAPABILITY_PRESENCE = RcsImsCapabilities.CAPABILITY_TYPE_PRESENCE_UCE; /** - * Callbacks from the RcsFeature, which have an empty default implementation and can be - * overridden for each Feature. + * The capability exchange event callbacks from the RcsFeature. */ - public static class RcsFeatureCallbacks { - /** See {@link RcsCapabilityExchange#onCommandUpdate(int, int)} */ - @VisibleForTesting - public void onCommandUpdate(int commandCode, int operationToken) {} - - /** See {@link RcsPresenceExchangeImplBase#onNetworkResponse(int, String, int)} */ - public void onNetworkResponse(int code, String reason, int operationToken) {} - - /** See {@link RcsPresenceExchangeImplBase#onCapabilityRequestResponse(List, int)} */ - public void onCapabilityRequestResponsePresence(List<RcsContactUceCapability> infos, - int operationToken) {} - - /** See {@link RcsPresenceExchangeImplBase#onNotifyUpdateCapabilites(int)} */ - public void onNotifyUpdateCapabilities(int publishTriggerType) {} - - /** See {@link RcsPresenceExchangeImplBase#onUnpublish()} */ - public void onUnpublish() {} + public interface CapabilityExchangeEventCallback { + /** + * Triggered by RcsFeature to publish the device's capabilities to the network. + */ + void onRequestPublishCapabilities(@StackPublishTriggerType int publishTriggerType); /** - * See {@link RcsSipOptionsImplBase#onCapabilityRequestResponse(int,String, - * RcsContactUceCapability, int)} + * Notify that the devices is unpublished. */ - public void onCapabilityRequestResponseOptions(int code, String reason, - RcsContactUceCapability info, int operationToken) {} + void onUnpublish(); /** - * See {@link RcsSipOptionsImplBase#onRemoteCapabilityRequest(Uri, RcsContactUceCapability, - * int)} + * Receive a capabilities request from the remote client. */ - public void onRemoteCapabilityRequest(Uri contactUri, RcsContactUceCapability remoteInfo, - int operationToken) {} + void onRemoteCapabilityRequest(Uri contactUri, + List<String> remoteCapabilities, IOptionsRequestCallback cb); } - private final IRcsFeatureListener mRcsFeatureCallbackAdapter = new IRcsFeatureListener.Stub() { - @Override - public void onCommandUpdate(int commandCode, int operationToken) { - mRcsFeatureCallbacks.forEach(listener-> listener.onCommandUpdate(commandCode, - operationToken)); - } - - @Override - public void onNetworkResponse(int code, String reason, int operationToken) { - mRcsFeatureCallbacks.forEach(listener-> listener.onNetworkResponse(code, reason, - operationToken)); - } - - @Override - public void onCapabilityRequestResponsePresence(List<RcsContactUceCapability> infos, - int operationToken) { - mRcsFeatureCallbacks.forEach(listener-> listener.onCapabilityRequestResponsePresence( - infos, operationToken)); - } - - @Override - public void onNotifyUpdateCapabilities(int publishTriggerType) { - mRcsFeatureCallbacks.forEach(listener-> listener.onNotifyUpdateCapabilities( - publishTriggerType)); - } - - @Override - public void onUnpublish() { - mRcsFeatureCallbacks.forEach(listener-> listener.onUnpublish()); - } + /* + * Setup the listener to listen to the requests and updates from ImsService. + */ + private ICapabilityExchangeEventListener mCapabilityEventListener = + new ICapabilityExchangeEventListener.Stub() { + @Override + public void onRequestPublishCapabilities(@StackPublishTriggerType int type) { + mCapabilityEventCallback.forEach( + callback -> callback.onRequestPublishCapabilities(type)); + } - @Override - public void onCapabilityRequestResponseOptions(int code, String reason, - RcsContactUceCapability info, int operationToken) { - mRcsFeatureCallbacks.forEach(listener -> listener.onCapabilityRequestResponseOptions( - code, reason, info, operationToken)); - } + @Override + public void onUnpublish() { + mCapabilityEventCallback.forEach(callback -> callback.onUnpublish()); + } - @Override - public void onRemoteCapabilityRequest(Uri contactUri, RcsContactUceCapability remoteInfo, - int operationToken) { - mRcsFeatureCallbacks.forEach(listener -> listener.onRemoteCapabilityRequest( - contactUri, remoteInfo, operationToken)); - } - }; + @Override + public void onRemoteCapabilityRequest(Uri contactUri, + List<String> remoteCapabilities, IOptionsRequestCallback cb) { + mCapabilityEventCallback.forEach( + callback -> callback.onRemoteCapabilityRequest( + contactUri, remoteCapabilities, cb)); + } + }; private final int mSlotId; private final Context mContext; - private final Set<RcsFeatureCallbacks> mRcsFeatureCallbacks = new CopyOnWriteArraySet<>(); + private final Set<CapabilityExchangeEventCallback> mCapabilityEventCallback + = new CopyOnWriteArraySet<>(); private final BinderCacheManager<IImsRcsController> mBinderCache = new BinderCacheManager<>(RcsFeatureManager::getIImsRcsControllerInterface); @@ -205,7 +165,7 @@ public class RcsFeatureManager implements FeatureUpdates { */ public void openConnection() throws android.telephony.ims.ImsException { try { - mRcsFeatureConnection.setRcsFeatureListener(mRcsFeatureCallbackAdapter); + mRcsFeatureConnection.setCapabilityExchangeEventListener(mCapabilityEventListener); } catch (RemoteException e){ throw new android.telephony.ims.ImsException("Service is not available.", android.telephony.ims.ImsException.CODE_ERROR_SERVICE_UNAVAILABLE); @@ -218,27 +178,27 @@ public class RcsFeatureManager implements FeatureUpdates { */ public void releaseConnection() { try { - mRcsFeatureConnection.setRcsFeatureListener(null); + mRcsFeatureConnection.setCapabilityExchangeEventListener(null); } catch (RemoteException e){ // Connection may not be available at this point. } mRcsFeatureConnection.close(); - mRcsFeatureCallbacks.clear(); + mCapabilityEventCallback.clear(); } /** - * Adds a callback for {@link RcsFeatureCallbacks}. + * Adds a callback for {@link CapabilityExchangeEventCallback}. * Note: These callbacks will be sent on the binder thread used to notify the callback. */ - public void addFeatureListenerCallback(RcsFeatureCallbacks listener) { - mRcsFeatureCallbacks.add(listener); + public void addCapabilityEventCallback(CapabilityExchangeEventCallback listener) { + mCapabilityEventCallback.add(listener); } /** - * Removes an existing {@link RcsFeatureCallbacks}. + * Removes an existing {@link CapabilityExchangeEventCallback}. */ - public void removeFeatureListenerCallback(RcsFeatureCallbacks listener) { - mRcsFeatureCallbacks.remove(listener); + public void removeCapabilityEventCallback(CapabilityExchangeEventCallback listener) { + mCapabilityEventCallback.remove(listener); } /** @@ -366,6 +326,7 @@ public class RcsFeatureManager implements FeatureUpdates { } return mRcsFeatureConnection.getSipTransport(); } + /** * Query for the specific capability. */ @@ -447,16 +408,6 @@ public class RcsFeatureManager implements FeatureUpdates { ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN); } - public void requestPublication(RcsContactUceCapability capabilities, int taskId) - throws RemoteException { - mRcsFeatureConnection.requestPublication(capabilities, taskId); - } - - public void setCapabilityExchangeEventListener(ICapabilityExchangeEventListener listener) - throws RemoteException { - mRcsFeatureConnection.setCapabilityExchangeEventListener(listener); - } - public void requestPublication(String pidfXml, IPublishResponseCallback responseCallback) throws RemoteException { mRcsFeatureConnection.requestPublication(pidfXml, responseCallback); diff --git a/src/java/com/android/ims/rcs/uce/UceController.java b/src/java/com/android/ims/rcs/uce/UceController.java index 2100a125..ad04996d 100644 --- a/src/java/com/android/ims/rcs/uce/UceController.java +++ b/src/java/com/android/ims/rcs/uce/UceController.java @@ -203,6 +203,7 @@ public class UceController { private volatile boolean mIsDestroyedFlag; private Looper mLooper; + private RcsFeatureManager mRcsFeatureManager; private EabController mEabController; private PublishController mPublishController; private SubscribeController mSubscribeController; @@ -270,12 +271,9 @@ public class UceController { mPublishController.onRcsConnected(manager); mSubscribeController.onRcsConnected(manager); mOptionsController.onRcsConnected(manager); - - try { - manager.setCapabilityExchangeEventListener(mCapabilityEventListener); - } catch (RemoteException e) { - logw("Set capability event listener error: " + e.getMessage()); - } + // Listen to the capability exchange event which is triggered by the ImsService + mRcsFeatureManager = manager; + mRcsFeatureManager.addCapabilityEventCallback(mCapabilityEventListener); } /** @@ -284,6 +282,11 @@ public class UceController { public void onRcsDisconnected() { logi("onRcsDisconnected"); mIsRcsConnected = false; + // Remove the listener because RCS is disconnected. + if (mRcsFeatureManager != null) { + mRcsFeatureManager.removeCapabilityEventCallback(mCapabilityEventListener); + mRcsFeatureManager = null; + } // Notify each controllers that RCS is disconnected. mEabController.onRcsDisconnected(); mPublishController.onRcsDisconnected(); @@ -297,6 +300,12 @@ public class UceController { public void onDestroy() { logi("onDestroy"); mIsDestroyedFlag = true; + // Remove the listener because the UceController instance is destroyed. + if (mRcsFeatureManager != null) { + mRcsFeatureManager.removeCapabilityEventCallback(mCapabilityEventListener); + mRcsFeatureManager = null; + } + // Destroy all the controllers mRequestManager.onDestroy(); mEabController.onDestroy(); mPublishController.onDestroy(); @@ -380,8 +389,8 @@ public class UceController { /* * Setup the listener to listen to the requests and updates from ImsService. */ - private ICapabilityExchangeEventListener mCapabilityEventListener = - new ICapabilityExchangeEventListener.Stub() { + private RcsFeatureManager.CapabilityExchangeEventCallback mCapabilityEventListener = + new RcsFeatureManager.CapabilityExchangeEventCallback() { @Override public void onRequestPublishCapabilities( @StackPublishTriggerType int publishTriggerType) { diff --git a/tests/src/com/android/ims/rcs/uce/UceControllerTest.java b/tests/src/com/android/ims/rcs/uce/UceControllerTest.java index b30b1329..abca2c16 100644 --- a/tests/src/com/android/ims/rcs/uce/UceControllerTest.java +++ b/tests/src/com/android/ims/rcs/uce/UceControllerTest.java @@ -101,7 +101,7 @@ public class UceControllerTest extends ImsTestBase { verify(mPublishController).onRcsConnected(mFeatureManager); verify(mSubscribeController).onRcsConnected(mFeatureManager); verify(mOptionsController).onRcsConnected(mFeatureManager); - verify(mFeatureManager).setCapabilityExchangeEventListener(any()); + verify(mFeatureManager).addCapabilityEventCallback(any()); } @Test @@ -112,6 +112,7 @@ public class UceControllerTest extends ImsTestBase { uceController.onRcsDisconnected(); + verify(mFeatureManager).removeCapabilityEventCallback(any()); verify(mEabController).onRcsDisconnected(); verify(mPublishController).onRcsDisconnected(); verify(mSubscribeController).onRcsDisconnected(); |