From ce07d61ce7f6141d5f21ea8f4fdcc17c2edc9282 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Tue, 27 Jun 2017 17:08:55 +0000 Subject: [PATCH] IMS: Check for binderstate before calling endSession ImsRegistrationListenerProxy listener, which is registered as part of ImsManager.open, is not cleared even after moving feature state to NOT_AVAILABLE because end session is never called. Check for binder state instead of feature state READY before calling end session. End session will be triggered after moving feature state to NOT_AVAILABLE. Notify Ims state change only for the supported feature state change to clients. Test: Manual Bug: 62816014 Merged-In: Idfb6dfad51cca574c2ae25e2029ef7bdfe9d725b Change-Id: Idfb6dfad51cca574c2ae25e2029ef7bdfe9d725b (cherry picked from commit 913e11fcdfc9cbd7fd3eee1c94d1cb3fced37da9) --- .../java/android/telephony/ims/ImsServiceProxy.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/telephony/java/android/telephony/ims/ImsServiceProxy.java b/telephony/java/android/telephony/ims/ImsServiceProxy.java index a75cd86dcf071..038e295d88222 100644 --- a/telephony/java/android/telephony/ims/ImsServiceProxy.java +++ b/telephony/java/android/telephony/ims/ImsServiceProxy.java @@ -90,11 +90,11 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur " status: " + status); if (mSlotId == slotId && feature == mSupportedFeature) { mFeatureStatusCached = status; + if (mStatusCallback != null) { + mStatusCallback.notifyStatusChanged(); + } } } - if (mStatusCallback != null) { - mStatusCallback.notifyStatusChanged(); - } } }; @@ -129,7 +129,9 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur @Override public void endSession(int sessionId) throws RemoteException { synchronized (mLock) { - checkServiceIsReady(); + // Only check to make sure the binder connection still exists. This method should + // still be able to be called when the state is STATE_NOT_AVAILABLE. + checkBinderConnection(); getServiceInterface(mBinder).endSession(mSlotId, mSupportedFeature, sessionId); } }