From 18958eaee71e0e548a8705046d3e7f129f528d17 Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Mon, 16 Nov 2020 12:57:01 -0800 Subject: Catch SSE when no subId is loaded Correctly catch SSEs in ImsRcsManager and RcsUceAdapter and rethrow as checked ImsExceptions instead of using RuntimeExceptions. Fixes: 173436604 Test: atest CtsTelephonyTestCases:ImsServiceTest Change-Id: I80dde5556c1239f89a258b0f57f7feceb142aec7 --- telephony/java/android/telephony/ims/ImsRcsManager.java | 6 ++++++ telephony/java/android/telephony/ims/RcsUceAdapter.java | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java index 4292aae59515..0d8e5bceaf2b 100644 --- a/telephony/java/android/telephony/ims/ImsRcsManager.java +++ b/telephony/java/android/telephony/ims/ImsRcsManager.java @@ -26,6 +26,7 @@ import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; +import android.os.ServiceSpecificException; import android.provider.Settings; import android.telephony.AccessNetworkConstants; import android.telephony.BinderCacheManager; @@ -198,6 +199,8 @@ public class ImsRcsManager { c.setExecutor(executor); try { imsRcsController.registerImsRegistrationCallback(mSubId, c.getBinder()); + } catch (ServiceSpecificException e) { + throw new ImsException(e.toString(), e.errorCode); } catch (RemoteException | IllegalStateException e) { throw new ImsException(e.getMessage(), ImsException.CODE_ERROR_SERVICE_UNAVAILABLE); } @@ -333,6 +336,9 @@ public class ImsRcsManager { c.setExecutor(executor); try { imsRcsController.registerRcsAvailabilityCallback(mSubId, c.getBinder()); + + } catch (ServiceSpecificException e) { + throw new ImsException(e.toString(), e.errorCode); } catch (RemoteException e) { Log.e(TAG, "Error calling IImsRcsController#registerRcsAvailabilityCallback", e); throw new ImsException("Remote IMS Service is not available", diff --git a/telephony/java/android/telephony/ims/RcsUceAdapter.java b/telephony/java/android/telephony/ims/RcsUceAdapter.java index 0aeaecc2af5e..ada069666547 100644 --- a/telephony/java/android/telephony/ims/RcsUceAdapter.java +++ b/telephony/java/android/telephony/ims/RcsUceAdapter.java @@ -27,6 +27,7 @@ import android.net.Uri; import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; +import android.os.ServiceSpecificException; import android.telephony.TelephonyFrameworkInitializer; import android.telephony.ims.aidl.IImsRcsController; import android.telephony.ims.aidl.IRcsUceControllerCallback; @@ -463,6 +464,8 @@ public class RcsUceAdapter { try { imsRcsController.requestCapabilities(mSubId, mContext.getOpPackageName(), mContext.getAttributionTag(), contactNumbers, internalCallback); + } catch (ServiceSpecificException e) { + throw new ImsException(e.toString(), e.errorCode); } catch (RemoteException e) { Log.e(TAG, "Error calling IImsRcsController#requestCapabilities", e); throw new ImsException("Remote IMS Service is not available", @@ -545,6 +548,8 @@ public class RcsUceAdapter { try { imsRcsController.requestNetworkAvailability(mSubId, mContext.getOpPackageName(), mContext.getAttributionTag(), contactNumber, internalCallback); + } catch (ServiceSpecificException e) { + throw new ImsException(e.toString(), e.errorCode); } catch (RemoteException e) { Log.e(TAG, "Error calling IImsRcsController#requestNetworkAvailability", e); throw new ImsException("Remote IMS Service is not available", @@ -574,7 +579,7 @@ public class RcsUceAdapter { try { return imsRcsController.getUcePublishState(mSubId); - } catch (android.os.ServiceSpecificException e) { + } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException e) { Log.e(TAG, "Error calling IImsRcsController#getUcePublishState", e); @@ -621,7 +626,7 @@ public class RcsUceAdapter { c.setExecutor(executor); try { imsRcsController.registerUcePublishStateCallback(mSubId, c.getBinder()); - } catch (android.os.ServiceSpecificException e) { + } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException e) { Log.e(TAG, "Error calling IImsRcsController#registerUcePublishStateCallback", e); -- cgit v1.2.3-59-g8ed1b