summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2021-07-12 13:50:38 -0700
committerBrad Ebinger <breadley@google.com>2021-07-12 13:57:34 -0700
commit2186a56187acde6e2ff72095dcd2a31a741facfa (patch)
tree188814c3e575727bb2e80276c84c8c9ac65b7a5e
parentf7c7e7daf433774a760599543737953983d56d80 (diff)
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
-rw-r--r--telephony/java/android/telephony/ims/ImsMmTelManager.java12
-rw-r--r--telephony/java/android/telephony/ims/ImsRcsManager.java12
2 files changed, 16 insertions, 8 deletions
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));
}
}