Merge "DSDA: Support "Add call" from 2nd sub" into udc-dev am: 374b1ebd87 am: 3fa05ed9ae
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/21535964
Change-Id: Iadcf0843e6156b018f8450e92f5f8be63fd5eb6e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 02dff13..3d62076 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -2397,6 +2397,8 @@
@Override
public void handleCreateConferenceFailure(DisconnectCause disconnectCause) {
+ Log.i(this, "handleCreateConferenceFailure; callid=%s, disconnectCause=%s",
+ getId(), disconnectCause);
clearConnectionService();
setDisconnectCause(disconnectCause);
mCallsManager.markCallAsDisconnected(this, disconnectCause);
@@ -2417,6 +2419,8 @@
@Override
public void handleCreateConnectionFailure(DisconnectCause disconnectCause) {
+ Log.i(this, "handleCreateConnectionFailure; callid=%s, disconnectCause=%s",
+ getId(), disconnectCause);
clearConnectionService();
setDisconnectCause(disconnectCause);
mCallsManager.markCallAsDisconnected(this, disconnectCause);
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index f56320f..e87c298 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -554,6 +554,7 @@
return HANDLED;
case STREAMING_FORCE_ENABLED:
transitionTo(mStreamingState);
+ return HANDLED;
default:
return NOT_HANDLED;
}
diff --git a/src/com/android/server/telecom/CallStreamingController.java b/src/com/android/server/telecom/CallStreamingController.java
index e494d8e..54ea385 100644
--- a/src/com/android/server/telecom/CallStreamingController.java
+++ b/src/com/android/server/telecom/CallStreamingController.java
@@ -185,9 +185,8 @@
return future;
}
- // TODO: change this role to RoleManager.ROLE_STREAMING
- List<String> holders = roleManager.getRoleHoldersAsUser(RoleManager.ROLE_DIALER,
- mUserHandle);
+ List<String> holders = roleManager.getRoleHoldersAsUser(
+ RoleManager.ROLE_SYSTEM_CALL_STREAMING, mUserHandle);
if (holders.isEmpty()) {
Log.e(TAG, "Can't find streaming app");
future.complete(new VoipCallTransactionResult(
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 2658994..f680084 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -733,8 +733,7 @@
@Override
public void onFailedOutgoingCall(Call call, DisconnectCause disconnectCause) {
- Log.v(this, "onFailedOutgoingCall, call: %s", call);
-
+ Log.i(this, "onFailedOutgoingCall for call %s", call);
markCallAsRemoved(call);
}
@@ -989,14 +988,15 @@
@Override
public void onFailedIncomingCall(Call call) {
+ Log.i(this, "onFailedIncomingCall for call %s", call);
setCallState(call, CallState.DISCONNECTED, "failed incoming call");
call.removeListener(this);
}
@Override
public void onSuccessfulUnknownCall(Call call, int callState) {
- setCallState(call, callState, "successful unknown call");
Log.i(this, "onSuccessfulUnknownCall for call %s", call);
+ setCallState(call, callState, "successful unknown call");
addCall(call);
}
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 874b77f..59a84f9 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -1597,7 +1597,7 @@
public void onSuccess() {
String callId = mCallIdMapper.getCallId(call);
if (callId == null) {
- Log.w(ConnectionServiceWrapper.this, "Call not present"
+ Log.i(ConnectionServiceWrapper.this, "Call not present"
+ " in call id mapper, maybe it was aborted before the bind"
+ " completed successfully?");
response.handleCreateConnectionFailure(
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index a7824b4..3c6934a 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -962,18 +962,20 @@
String[] fields =
{"Package Name", "Class Name", "PhoneAccountHandle Id", "Label", "ShortDescription",
- "GroupId", "Address"};
+ "GroupId", "Address", "SubscriptionAddress"};
CharSequence[] args = {handle.getComponentName().getPackageName(),
handle.getComponentName().getClassName(), handle.getId(), account.getLabel(),
account.getShortDescription(), account.getGroupId(),
- (account.getAddress() != null ? account.getAddress().toString() : "")};
+ (account.getAddress() != null ? account.getAddress().toString() : ""),
+ (account.getSubscriptionAddress() != null ?
+ account.getSubscriptionAddress().toString() : "")};
for (int i = 0; i < fields.length; i++) {
if (args[i] != null && args[i].length() > MAX_PHONE_ACCOUNT_FIELD_CHAR_LIMIT) {
EventLog.writeEvent(0x534e4554, "259064622", Binder.getCallingUid(),
"enforceCharacterLimit");
- throw new IllegalArgumentException("The PhoneAccount or PhoneAccountHandle"
- + fields[i] + " field has an invalid character count. PhoneAccount and "
+ throw new IllegalArgumentException("The PhoneAccount or PhoneAccountHandle ["
+ + fields[i] + "] field has an invalid character count. PhoneAccount and "
+ "PhoneAccountHandle String and Char-Sequence fields are limited to "
+ MAX_PHONE_ACCOUNT_FIELD_CHAR_LIMIT + " characters.");
}
diff --git a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
index c6cbbbb..cef032f 100644
--- a/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
+++ b/tests/src/com/android/server/telecom/tests/PhoneAccountRegistrarTest.java
@@ -1667,6 +1667,23 @@
}
}
+ /**
+ * Ensure an IllegalArgumentException is thrown when providing a SubscriptionAddress that
+ * exceeds the PhoneAccountRegistrar limit.
+ */
+ @Test
+ public void testLimitOnSubscriptionAddress() throws Exception {
+ String text = "a".repeat(100);
+ PhoneAccount.Builder builder = new PhoneAccount.Builder(makeQuickAccountHandle(TEST_ID),
+ TEST_LABEL).setSubscriptionAddress(Uri.fromParts(text, text, text));
+ try {
+ mRegistrar.enforceCharacterLimit(builder.build());
+ fail("failed to throw IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ // pass test
+ }
+ }
+
private static PhoneAccount.Builder makeBuilderWithBindCapabilities(PhoneAccountHandle handle) {
return new PhoneAccount.Builder(handle, TEST_LABEL)
.setCapabilities(PhoneAccount.CAPABILITY_SUPPORTS_TRANSACTIONAL_OPERATIONS);