If session closes after we start our pending call, we place our call immediately.
If a user experienced network issues while they were placing an EC w/ an image,
they could get into a state where they are stuck on the incall screen and could
potentially crash the dialer. Now, if the session closes after the user has
initiated the call, we just move forward with the phone call without any data.
Bug: 65202135
Test: manual
PiperOrigin-RevId: 167068436
Change-Id: If4351f7c949e6ec8a48f3d6df8c87cdf9414606b
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index d785cf3..fa380cc 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -315,7 +315,11 @@
break;
case Session.STATE_START_FAILED:
case Session.STATE_CLOSED:
- setFailedResultAndFinish();
+ if (pendingCallStarted) {
+ placeTelecomCall();
+ } else {
+ setFailedResultAndFinish();
+ }
break;
case Session.STATE_MESSAGE_SENT:
if (++messageSentCounter == 3) {
diff --git a/java/com/android/incallui/callpending/CallPendingActivity.java b/java/com/android/incallui/callpending/CallPendingActivity.java
index d08998b..26490d9 100644
--- a/java/com/android/incallui/callpending/CallPendingActivity.java
+++ b/java/com/android/incallui/callpending/CallPendingActivity.java
@@ -28,6 +28,7 @@
import android.telecom.TelecomManager;
import com.android.dialer.common.LogUtil;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.enrichedcall.Session;
import com.android.dialer.multimedia.MultimediaData;
import com.android.incallui.audiomode.AudioModeProvider;
import com.android.incallui.call.DialerCall.State;
@@ -152,11 +153,15 @@
}
private PrimaryInfo createPrimaryInfo() {
- MultimediaData multimediaData =
- EnrichedCallComponent.get(this)
- .getEnrichedCallManager()
- .getSession(getSessionId())
- .getMultimediaData();
+ Session session =
+ EnrichedCallComponent.get(this).getEnrichedCallManager().getSession(getSessionId());
+ MultimediaData multimediaData;
+ if (session == null) {
+ LogUtil.i("CallPendingActivity.createPrimaryInfo", "Null session.");
+ multimediaData = null;
+ } else {
+ multimediaData = session.getMultimediaData();
+ }
Drawable photo = null;
try {