From 2186a56187acde6e2ff72095dcd2a31a741facfa Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Mon, 12 Jul 2021 13:50:38 -0700 Subject: Catch ServiceSpecificExceptions properly when getting reg state/ transport type We were not catching ServiceSpecificExceptions that were thrown, causing unclear exceptions. Instead, return the default value when the ImsService is unavailable. Bug: 192930411 Test: atest CtsTelephonyTestCases Change-Id: I3d50b19047bc287ce6200e75bb59cf98bf8bfef0 --- telephony/java/android/telephony/ims/ImsMmTelManager.java | 12 ++++++++---- telephony/java/android/telephony/ims/ImsRcsManager.java | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'telephony') diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index 7ba6f36d28e2..53922ed27c10 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -37,6 +37,7 @@ import android.telephony.ims.aidl.IImsCapabilityCallback; import android.telephony.ims.feature.ImsFeature; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; +import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.IIntegerConsumer; @@ -447,8 +448,9 @@ public class ImsMmTelManager implements RegistrationManager { executor.execute(() -> stateCallback.accept(result)); } }); - } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + } catch (ServiceSpecificException | RemoteException e) { + Log.w("ImsMmTelManager", "Error getting registration state: " + e); + executor.execute(() -> stateCallback.accept(REGISTRATION_STATE_NOT_REGISTERED)); } } @@ -488,8 +490,10 @@ public class ImsMmTelManager implements RegistrationManager { executor.execute(() -> transportTypeCallback.accept(result)); } }); - } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + } catch (ServiceSpecificException | RemoteException e) { + Log.w("ImsMmTelManager", "Error getting transport type: " + e); + executor.execute(() -> transportTypeCallback.accept( + AccessNetworkConstants.TRANSPORT_TYPE_INVALID)); } } diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java index 370002634278..91c53244a780 100644 --- a/telephony/java/android/telephony/ims/ImsRcsManager.java +++ b/telephony/java/android/telephony/ims/ImsRcsManager.java @@ -302,8 +302,10 @@ public class ImsRcsManager { executor.execute(() -> stateCallback.accept(result)); } }); - } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + } catch (ServiceSpecificException | RemoteException e) { + Log.w(TAG, "Get registration state error: " + e); + executor.execute(() -> stateCallback.accept( + RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED)); } } @@ -346,8 +348,10 @@ public class ImsRcsManager { executor.execute(() -> transportTypeCallback.accept(result)); } }); - } catch (RemoteException e) { - throw e.rethrowAsRuntimeException(); + } catch (ServiceSpecificException | RemoteException e) { + Log.w(TAG, "Get registration transport type error: " + e); + executor.execute(() -> transportTypeCallback.accept( + AccessNetworkConstants.TRANSPORT_TYPE_INVALID)); } } -- cgit v1.2.3