More improvements call flow.

Bug: 73774461,73774884,73775516,73775590,73775873
Test: unit/manual
PiperOrigin-RevId: 193236364
Change-Id: I03726ed7e5a3383f6e8632fb2cf9b948c3203f87
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 0c57dff..91f557b 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -1347,9 +1347,11 @@
 
     if (didShowSpeakEasyScreen) {
       if (lastShownSpeakEasyScreenUniqueCallid.equals(call.getUniqueCallId())) {
+        LogUtil.i("InCallActivity.showSpeakEasyFragment", "found existing fragment");
         return false;
       }
       hideSpeakEasyFragment(transaction);
+      LogUtil.i("InCallActivity.showSpeakEasyFragment", "hid existing fragment");
     }
 
     Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
@@ -1357,6 +1359,10 @@
       transaction.add(R.id.main, speakEasyFragment.get(), Tags.SPEAK_EASY_SCREEN);
       didShowSpeakEasyScreen = true;
       lastShownSpeakEasyScreenUniqueCallid = call.getUniqueCallId();
+      LogUtil.i(
+          "InCallActivity.showSpeakEasyFragment",
+          "set fragment for call %s",
+          lastShownSpeakEasyScreenUniqueCallid);
       return true;
     }
     return false;
@@ -1381,11 +1387,16 @@
     return false;
   }
 
+  @VisibleForTesting
   public void setSpeakEasyCallManager(SpeakEasyCallManager speakEasyCallManager) {
     this.speakEasyCallManager = speakEasyCallManager;
   }
 
+  @Nullable
   public SpeakEasyCallManager getSpeakEasyCallManager() {
+    if (this.speakEasyCallManager == null) {
+      this.speakEasyCallManager = InCallPresenter.getInstance().getSpeakEasyCallManager();
+    }
     return speakEasyCallManager;
   }
 
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 7468b83..1dc150d 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -513,7 +513,6 @@
 
       this.inCallActivity = inCallActivity;
       this.inCallActivity.setExcludeFromRecents(false);
-      this.inCallActivity.setSpeakEasyCallManager(this.speakEasyCallManager);
 
       // By the time the UI finally comes up, the call may already be disconnected.
       // If that's the case, we may need to show an error dialog.
@@ -569,6 +568,10 @@
     Trace.endSection();
   }
 
+  public SpeakEasyCallManager getSpeakEasyCallManager() {
+    return this.speakEasyCallManager;
+  }
+
   public void setManageConferenceActivity(
       @Nullable ManageConferenceActivity manageConferenceActivity) {
     this.manageConferenceActivity = manageConferenceActivity;