Remove IllegalArgumentException for registration of capabilities

We threw an IllegalArgumentException for an invalid subscription,
however this is counter to what this exception should be used for.
Instead, use ImsException#CODE_ERROR_INVALID_SUBSCRIPTION.

Also fixed incorrect ImsException sent when telephony crashed.

Bug: 156402275
Test: atest FrameworksTelephonyTests; CtsTelephonyTestCases; manual
Change-Id: I3250419a2438afb58922ae653e3f2e4f9628e593
This commit is contained in:
Brad Ebinger
2020-05-21 16:35:23 -07:00
parent a9c6632f54
commit ffb93e5dd6

View File

@@ -518,9 +518,6 @@ public class ImsMmTelManager implements RegistrationManager {
* @param executor The executor the callback events should be run on. * @param executor The executor the callback events should be run on.
* @param c The MmTel {@link CapabilityCallback} to be registered. * @param c The MmTel {@link CapabilityCallback} to be registered.
* @see #unregisterMmTelCapabilityCallback(CapabilityCallback) * @see #unregisterMmTelCapabilityCallback(CapabilityCallback)
* @throws IllegalArgumentException if the subscription associated with this callback is not
* active (SIM is not inserted, ESIM inactive) or invalid, or a null {@link Executor} or
* {@link CapabilityCallback} callback.
* @throws ImsException if the subscription associated with this callback is valid, but * @throws ImsException if the subscription associated with this callback is valid, but
* the {@link ImsService} associated with the subscription is not available. This can happen if * the {@link ImsService} associated with the subscription is not available. This can happen if
* the service crashed, for example. See {@link ImsException#getCode()} for a more detailed * the service crashed, for example. See {@link ImsException#getCode()} for a more detailed
@@ -543,18 +540,13 @@ public class ImsMmTelManager implements RegistrationManager {
ITelephony iTelephony = getITelephony(); ITelephony iTelephony = getITelephony();
if (iTelephony == null) { if (iTelephony == null) {
throw new ImsException("Could not find Telephony Service.", throw new ImsException("Could not find Telephony Service.",
ImsException.CODE_ERROR_INVALID_SUBSCRIPTION); ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
} }
try { try {
iTelephony.registerMmTelCapabilityCallback(mSubId, c.getBinder()); iTelephony.registerMmTelCapabilityCallback(mSubId, c.getBinder());
} catch (ServiceSpecificException e) { } catch (ServiceSpecificException e) {
if (e.errorCode == ImsException.CODE_ERROR_INVALID_SUBSCRIPTION) {
// Rethrow as runtime error to keep API compatible.
throw new IllegalArgumentException(e.getMessage());
} else {
throw new ImsException(e.getMessage(), e.errorCode); throw new ImsException(e.getMessage(), e.errorCode);
}
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowAsRuntimeException(); throw e.rethrowAsRuntimeException();
} catch (IllegalStateException e) { } catch (IllegalStateException e) {