Merge "Add a subId extra to the respond via SMS intent." into lmp-mr1-dev
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 36048dd..1c842da 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -382,12 +382,21 @@
void setState(int newState) {
if (mState != newState) {
Log.v(this, "setState %s -> %s", mState, newState);
+ int oldState = mState;
mState = newState;
maybeLoadCannedSmsResponses();
if (mState == CallState.DISCONNECTED) {
setLocallyDisconnecting(false);
fixParentAfterDisconnect();
+ if ((oldState == CallState.DIALING || oldState == CallState.CONNECTING)
+ && mCreateConnectionProcessor != null
+ && mCreateConnectionProcessor.isProcessingComplete()
+ && mCreateConnectionProcessor.hasMorePhoneAccounts()
+ && mDisconnectCause != null
+ && mDisconnectCause.getCode() == DisconnectCause.ERROR) {
+ mCreateConnectionProcessor.continueProcessingIfPossible(this, mDisconnectCause);
+ }
}
}
}
@@ -689,7 +698,6 @@
CallIdMapper idMapper,
ParcelableConnection connection) {
Log.v(this, "handleCreateConnectionSuccessful %s", connection);
- mCreateConnectionProcessor = null;
setTargetPhoneAccount(connection.getPhoneAccount());
setHandle(connection.getHandle(), connection.getHandlePresentation());
setCallerDisplayName(
@@ -731,7 +739,6 @@
@Override
public void handleCreateConnectionFailure(DisconnectCause disconnectCause) {
- mCreateConnectionProcessor = null;
clearConnectionService();
setDisconnectCause(disconnectCause);
CallsManager.getInstance().markCallAsDisconnected(this, disconnectCause);
@@ -806,7 +813,8 @@
}
void abort(boolean wasViaNewOutgoingCallBroadcaster) {
- if (mCreateConnectionProcessor != null) {
+ if (mCreateConnectionProcessor != null &&
+ !mCreateConnectionProcessor.isProcessingComplete()) {
mCreateConnectionProcessor.abort();
} else if (mState == CallState.NEW || mState == CallState.PRE_DIAL_WAIT
|| mState == CallState.CONNECTING) {
diff --git a/src/com/android/server/telecom/CreateConnectionProcessor.java b/src/com/android/server/telecom/CreateConnectionProcessor.java
index f31f423..5d21d1a 100644
--- a/src/com/android/server/telecom/CreateConnectionProcessor.java
+++ b/src/com/android/server/telecom/CreateConnectionProcessor.java
@@ -101,6 +101,10 @@
mContext = context;
}
+ boolean isProcessingComplete() {
+ return mResponse == null;
+ }
+
void process() {
Log.v(this, "process");
mAttemptRecords = new ArrayList<>();
@@ -114,6 +118,18 @@
attemptNextPhoneAccount();
}
+ boolean hasMorePhoneAccounts() {
+ return mAttemptRecordIterator.hasNext();
+ }
+
+ void continueProcessingIfPossible(CreateConnectionResponse response,
+ DisconnectCause disconnectCause) {
+ Log.v(this, "continueProcessingIfPossible");
+ mResponse = response;
+ mLastErrorDisconnectCause = disconnectCause;
+ attemptNextPhoneAccount();
+ }
+
void abort() {
Log.v(this, "abort");
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index f3ea392..df7e93e 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -73,6 +73,7 @@
<action android:name="android.telecom.testapps.ACTION_NEW_UNKNOWN_CALL" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
+ <data android:scheme="sip" />
</intent-filter>
</activity>