From 7fd1f110593a426a2d39065d6696a19ddf53dd3c Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Tue, 10 May 2022 16:55:16 -0700 Subject: [PATCH] Ensure create/destroy is called properly for Capability Exchange API We were mistakenly not calling the destroy API properly for Capability Exchange API when the listener passed in was null. Instead we were calling destroy -> create. This was causing us to call destroy -> create over 4 times when switching SIMs. Bug: 228278638 Test: manual PUBLISH verification on TMO, atest FrameworksTelephonyTests Change-Id: If374f8306add45e60f64fa4031af31c8f448bb22 --- .../java/android/telephony/ims/feature/RcsFeature.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/telephony/java/android/telephony/ims/feature/RcsFeature.java b/telephony/java/android/telephony/ims/feature/RcsFeature.java index 843827befb65f..186241217588b 100644 --- a/telephony/java/android/telephony/ims/feature/RcsFeature.java +++ b/telephony/java/android/telephony/ims/feature/RcsFeature.java @@ -118,8 +118,10 @@ public class RcsFeature extends ImsFeature { @Override public void setCapabilityExchangeEventListener( @Nullable ICapabilityExchangeEventListener listener) throws RemoteException { - CapabilityExchangeEventListener listenerWrapper = - new CapabilityExchangeAidlWrapper(listener); + // Set the listener wrapper to null if the listener passed in is null. This will notify + // the RcsFeature to trigger the destruction of active capability exchange interface. + CapabilityExchangeEventListener listenerWrapper = listener != null + ? new CapabilityExchangeAidlWrapper(listener) : null; executeMethodAsync(() -> mReference.setCapabilityExchangeEventListener(listenerWrapper), "setCapabilityExchangeEventListener"); }