diff options
author | wangqi <wangqi@google.com> | 2018-04-25 15:04:01 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-25 17:22:43 -0700 |
commit | a0c49f63111f672d91e812370baa0249b69929cd (patch) | |
tree | 8e75ba5fb2fd8cb9a1237754cceac8798476a5d2 /java | |
parent | a489f5159eba96d9ea7db138da3f93a37d3318de (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')
-rw-r--r-- | java/com/android/incallui/call/DialerCall.java | 11 |
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() { |