aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames.cf Lin <jamescflin@google.com>2020-12-04 17:31:41 +0800
committerJames.cf Lin <jamescflin@google.com>2020-12-04 22:22:49 +0800
commit2b37f4d05e0acf6c3d06ee0f7e50b4b8a8e9edbc (patch)
tree64587d531c874418aebe26a27e07574ecd138c10
parentcee4c3afd640bea872ad51ec435822450d4c3152 (diff)
downloadims-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.java29
-rw-r--r--src/java/com/android/ims/RcsFeatureManager.java143
-rw-r--r--src/java/com/android/ims/rcs/uce/UceController.java25
-rw-r--r--tests/src/com/android/ims/rcs/uce/UceControllerTest.java3
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();