Call waiting add the error reponse for FDN_CHECK_FAILURE
The getCallWaitingStatus and setCallWaitingStatus system api did not
have FDN_CHECK_FAILURE. Therefore, the call waiting can't get the
precise error response while FDN is enabled.
Adding the CALL_WAITING_STATUS_FDN_CHECK_FAILURE for this case.
Bug: 189402480
Test: pass cts' TelephonyManagerTest#testGetCallWaitingStatus
pass cts' TelephonyManagerTest#testSetCallWaitingStatus
Change-Id: I93e614e239cb754db720ed8c6bd6883ecc7dfc76
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 77bcd0c..c988cbf 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -1259,7 +1259,7 @@
ar = (AsyncResult) msg.obj;
request = (MainThreadRequest) ar.userObj;
Consumer<Integer> callback = (Consumer<Integer>) request.argument;
- int callForwardingStatus = TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR;
+ int callWaitingStatus = TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR;
if (ar.exception == null && ar.result != null) {
int[] callForwardResults = (int[]) ar.result;
// Service Class is a bit mask per 3gpp 27.007.
@@ -1267,11 +1267,11 @@
if (callForwardResults.length > 1
&& ((callForwardResults[1]
& CommandsInterface.SERVICE_CLASS_VOICE) > 0)) {
- callForwardingStatus = callForwardResults[0] == 0
+ callWaitingStatus = callForwardResults[0] == 0
? TelephonyManager.CALL_WAITING_STATUS_DISABLED
: TelephonyManager.CALL_WAITING_STATUS_ENABLED;
} else {
- callForwardingStatus = TelephonyManager.CALL_WAITING_STATUS_DISABLED;
+ callWaitingStatus = TelephonyManager.CALL_WAITING_STATUS_DISABLED;
}
} else {
if (ar.result == null) {
@@ -1284,12 +1284,15 @@
CommandException.Error error =
((CommandException) (ar.exception)).getCommandError();
if (error == CommandException.Error.REQUEST_NOT_SUPPORTED) {
- callForwardingStatus =
+ callWaitingStatus =
TelephonyManager.CALL_WAITING_STATUS_NOT_SUPPORTED;
+ } else if (error == CommandException.Error.FDN_CHECK_FAILURE) {
+ callWaitingStatus =
+ TelephonyManager.CALL_WAITING_STATUS_FDN_CHECK_FAILURE;
}
}
}
- callback.accept(callForwardingStatus);
+ callback.accept(callWaitingStatus);
break;
}
@@ -1314,6 +1317,9 @@
((CommandException) (ar.exception)).getCommandError();
if (error == CommandException.Error.REQUEST_NOT_SUPPORTED) {
callback.accept(TelephonyManager.CALL_WAITING_STATUS_NOT_SUPPORTED);
+ } else if (error == CommandException.Error.FDN_CHECK_FAILURE) {
+ callback.accept(
+ TelephonyManager.CALL_WAITING_STATUS_FDN_CHECK_FAILURE);
} else {
callback.accept(TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR);
}