Update in call button logic.

Bug: 73774242
Test: unit
PiperOrigin-RevId: 193262041
Change-Id: Idc0de19cc6d58cf79715ec243108c53b9b1df848
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index 7e05bad..a22a258 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -16,7 +16,9 @@
 
 package com.android.incallui;
 
+import android.annotation.TargetApi;
 import android.content.Context;
+import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Trace;
 import android.support.v4.app.Fragment;
@@ -441,7 +443,8 @@
    *
    * @param call The active call.
    */
-  @SuppressWarnings("MissingPermission")
+  @TargetApi(VERSION_CODES.N)
+  @SuppressWarnings(value = {"MissingPermission", "AndroidApiChecker"}) // Java 8 APIs.
   private void updateButtonsState(DialerCall call) {
     LogUtil.v("CallButtonPresenter.updateButtonsState", "");
     final boolean isVideo = call.isVideoCall();
@@ -459,7 +462,15 @@
 
     final boolean showAddCall =
         TelecomAdapter.getInstance().canAddCall() && UserManagerCompat.isUserUnlocked(context);
-    final boolean showMerge = call.can(android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
+    // There can only be two calls so don't show the ability to merge when one of them
+    // is a speak easy call.
+    final boolean showMerge =
+        InCallPresenter.getInstance()
+                .getCallList()
+                .getAllCalls()
+                .stream()
+                .noneMatch(c -> c != null && c.isSpeakEasyCall())
+            && call.can(android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
     final boolean showUpgradeToVideo = !isVideo && (hasVideoCallCapabilities(call));
     final boolean showDowngradeToAudio = isVideo && isDowngradeToAudioSupported(call);
     final boolean showMute = call.can(android.telecom.Call.Details.CAPABILITY_MUTE);