summaryrefslogtreecommitdiff
path: root/java/com/android
diff options
context:
space:
mode:
authorwangqi <wangqi@google.com>2018-04-25 15:04:01 -0700
committerCopybara-Service <copybara-piper@google.com>2018-04-25 17:22:43 -0700
commita0c49f63111f672d91e812370baa0249b69929cd (patch)
tree8e75ba5fb2fd8cb9a1237754cceac8798476a5d2 /java/com/android
parenta489f5159eba96d9ea7db138da3f93a37d3318de (diff)
Fix crash when saving transcript is called multiple times.
This is caused by transcript set to non-null again in some cases. Test: manual PiperOrigin-RevId: 194303928 Change-Id: Ife5e6bad3874751efab1d94a4262d83017b79808
Diffstat (limited to 'java/com/android')
-rw-r--r--java/com/android/incallui/call/DialerCall.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 9dfe7abcb..da05b9d2a 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -192,6 +192,7 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
private volatile boolean feedbackRequested = false;
@Nullable private PreferredAccountRecorder preferredAccountRecorder;
+ private boolean isCallRemoved;
public static String getNumberFromHandle(Uri handle) {
return handle == null ? "" : handle.getSchemeSpecificPart();
@@ -1608,15 +1609,17 @@ public class DialerCall implements VideoTechListener, StateChangedListener, Capa
void onRemovedFromCallList() {
LogUtil.enterBlock("DialerCall.onRemovedFromCallList");
// Ensure we clean up when this call is removed.
- videoTechManager.dispatchRemovedFromCallList();
- if (rttTranscript != null) {
+ if (videoTechManager != null) {
+ videoTechManager.dispatchRemovedFromCallList();
+ }
+ // TODO(a bug): Add tests for it to make sure no crash on subsequent call to this method.
+ if (rttTranscript != null && !isCallRemoved) {
Futures.addCallback(
RttTranscriptUtil.saveRttTranscript(context, rttTranscript),
new DefaultFutureCallback<>(),
MoreExecutors.directExecutor());
- // Sets to null so it won't be saved again when called multiple times.
- rttTranscript = null;
}
+ isCallRemoved = true;
}
public com.android.dialer.logging.VideoTech.Type getSelectedAvailableVideoTechType() {