Merge "Dismiss RTT request dialog if RTT is already active."
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 7d9608a..7e15197 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -159,6 +159,7 @@
   private int[] backgroundDrawableColors;
   @DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
   private SpeakEasyCallManager speakEasyCallManager;
+  private DialogFragment rttRequestDialogFragment;
 
   public static Intent getIntent(
       Context context, boolean showDialpad, boolean newOutgoingCall, boolean isForFullScreen) {
@@ -1175,8 +1176,8 @@
 
   public void showDialogForRttRequest(DialerCall call, int rttRequestId) {
     LogUtil.enterBlock("InCallActivity.showDialogForRttRequest");
-    DialogFragment fragment = RttRequestDialogFragment.newInstance(call.getId(), rttRequestId);
-    fragment.show(getSupportFragmentManager(), Tags.RTT_REQUEST_DIALOG);
+    rttRequestDialogFragment = RttRequestDialogFragment.newInstance(call.getId(), rttRequestId);
+    rttRequestDialogFragment.show(getSupportFragmentManager(), Tags.RTT_REQUEST_DIALOG);
   }
 
   public void setAllowOrientationChange(boolean allowOrientationChange) {
@@ -1564,6 +1565,13 @@
     transaction.add(R.id.main, rttCallScreen.getRttCallScreenFragment(), Tags.RTT_CALL_SCREEN);
     Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     didShowRttCallScreen = true;
+    // In some cases such as VZW, RTT request will be automatically accepted by modem. So the dialog
+    // won't make any sense and should be dismissed if it's already switched to RTT.
+    if (rttRequestDialogFragment != null) {
+      LogUtil.i("InCallActivity.showRttCallScreenFragment", "dismiss RTT request dialog");
+      rttRequestDialogFragment.dismiss();
+      rttRequestDialogFragment = null;
+    }
     return true;
   }