Populate EXTRA_DISPLAY_TEXT for outgoing calls with a subject.
- Ensure call intent extras are passed into dialInternal, allowing the
RIL to know the subject.
- Set the EXTRA_DISPLAY_TEXT on the imsCallProfile to the
EXTRA_CALL_SUBJECT from Telecom.
Bug: 22685114
Change-Id: If5a2c2d505a1120cdb0a6560906fa8c20e5edeb9
Signed-off-by: Tyler Gunn <tgunn@google.com>
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 17d84cc..4216fa8 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -191,6 +191,7 @@
private int pendingCallClirMode;
private int mPendingCallVideoState;
+ private Bundle mPendingIntentExtras;
private boolean pendingCallInEcm = false;
private boolean mSwitchingFgAndBgCalls = false;
private ImsCall mCallExpectedToResume = null;
@@ -338,6 +339,7 @@
holdBeforeDial = true;
// Cache the video state for pending MO call.
mPendingCallVideoState = videoState;
+ mPendingIntentExtras = intentExtras;
switchWaitingOrHoldingAndActive();
}
@@ -369,7 +371,7 @@
if (!holdBeforeDial) {
if ((!isPhoneInEcmMode) || (isPhoneInEcmMode && isEmergencyNumber)) {
- dialInternal(mPendingMO, clirMode, videoState);
+ dialInternal(mPendingMO, clirMode, videoState, intentExtras);
} else {
try {
getEcbmInterface().exitEmergencyCallbackMode();
@@ -402,7 +404,9 @@
}
}
- private void dialInternal(ImsPhoneConnection conn, int clirMode, int videoState) {
+ private void dialInternal(ImsPhoneConnection conn, int clirMode, int videoState,
+ Bundle intentExtras) {
+
if (conn == null) {
return;
}
@@ -429,6 +433,12 @@
serviceType, callType);
profile.setCallExtraInt(ImsCallProfile.EXTRA_OIR, clirMode);
+ if (intentExtras != null &&
+ intentExtras.containsKey(android.telecom.TelecomManager.EXTRA_CALL_SUBJECT)) {
+ profile.setCallExtra(ImsCallProfile.EXTRA_DISPLAY_TEXT,
+ intentExtras.getString(android.telecom.TelecomManager.EXTRA_CALL_SUBJECT));
+ }
+
ImsCall imsCall = mImsManager.makeCall(mServiceId, profile,
callees, mImsCallListener);
conn.setImsCall(imsCall);
@@ -1643,7 +1653,7 @@
removeConnection(mPendingMO);
mPendingMO = null;
}
-
+ mPendingIntentExtras = null;
updatePhoneState();
mPhone.notifyPreciseCallStateChanged();
break;
@@ -1657,14 +1667,16 @@
}
break;
case EVENT_DIAL_PENDINGMO:
- dialInternal(mPendingMO, mClirMode, mPendingCallVideoState);
+ dialInternal(mPendingMO, mClirMode, mPendingCallVideoState, mPendingIntentExtras);
+ mPendingIntentExtras = null;
break;
case EVENT_EXIT_ECM_RESPONSE_CDMA:
// no matter the result, we still do the same here
if (pendingCallInEcm) {
dialInternal(mPendingMO, pendingCallClirMode,
- mPendingCallVideoState);
+ mPendingCallVideoState, mPendingIntentExtras);
+ mPendingIntentExtras = null;
pendingCallInEcm = false;
}
mPhone.unsetOnEcbModeExitResponse(this);