Promotion of atel.lnx.2.0.c1-00010.

CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
1098780   I4962bbc832c9b6526fb1de87498fc6fc7eb3e139   IMS-VT: Modify conditional logic of showing upgrade vide
1099503   Ib202b490c5c60d4d842d1cdf08e3c3b8aec3aab8   IMS: Handle connection event to enable merge button
916896   Iea38af484a206ced44637d82e27df944e7cf0f85   IMS-VT: Exit full screen mode of in-call UI
1097132   I3bc68b7d5ea143632f4ea6b1e7f9a8ca78272986   IMS: Grey out merge menu item in more options
1095653   I01b9c9fd59480fea86990a2179564bfe37eb238d   IMS-VT: Fix for Call end button overlap

Change-Id: I4d53ee584836b0bae225ddd997d1b7e4f594541d
CRs-Fixed: 1098780, 1097132, 1099503, 916896, 1095653
diff --git a/InCallUI/res/layout-w500dp-land/call_card_fragment.xml b/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
index 049f41f..89b7fb5 100644
--- a/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
+++ b/InCallUI/res/layout-w500dp-land/call_card_fragment.xml
@@ -187,14 +187,20 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
+    <!-- Margin left and centerHorizontal don't work well together, so use a Space instead. -->
+    <Space
+        android:id="@+id/floating_end_call_action_button_margin_left"
+        android:layout_width="@dimen/end_call_button_margin_left"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true" />
+
      <FrameLayout
         android:id="@+id/floating_end_call_action_button_container"
         android:layout_width="@dimen/end_call_floating_action_button_diameter"
         android:layout_height="@dimen/end_call_floating_action_button_diameter"
         android:background="@drawable/fab_red"
-        android:layout_alignParentRight="true"
+        android:layout_toRightOf="@id/floating_end_call_action_button_margin_left"
         android:layout_alignParentBottom="true"
-        android:layout_marginRight="@dimen/end_call_button_margin_right"
         android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
         <ImageButton android:id="@+id/floating_end_call_action_button"
             android:layout_width="match_parent"
diff --git a/InCallUI/res/values-w500dp-land/dimens.xml b/InCallUI/res/values-w500dp-land/dimens.xml
index 01cf165..42b0886 100644
--- a/InCallUI/res/values-w500dp-land/dimens.xml
+++ b/InCallUI/res/values-w500dp-land/dimens.xml
@@ -33,5 +33,5 @@
 
     <dimen name="video_preview_margin">20dp</dimen>
 
-    <dimen name="end_call_button_margin_right">80dp</dimen>
+    <dimen name="end_call_button_margin_left">50dp</dimen>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 42890f2..feaf5ee 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -368,6 +368,12 @@
                     List<android.telecom.Call> conferenceableCalls) {
                 update();
             }
+
+            @Override
+            public void onConnectionEvent(android.telecom.Call call, String event, Bundle extras) {
+                Log.d(this, "TelecomCallCallback onConnectionEvent call=" + call);
+                update();
+            }
     };
 
     boolean mIsActiveSub = false;
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 7694c5f..d03872b 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -281,6 +281,7 @@
         } else if (id == R.id.overflowButton) {
             if (mOverflowPopup != null) {
                 updateRecordMenu();
+                updateMergeCallsMenuItem();
                 mOverflowPopup.show();
             }
         } else if (id == R.id.manageVideoCallConferenceButton) {
@@ -317,6 +318,13 @@
         }
     }
 
+    private void updateMergeCallsMenuItem() {
+        MenuItem item = mOverflowPopup.getMenu().findItem(BUTTON_MERGE);
+        if (item != null) {
+            item.setEnabled(mMergeButton.isEnabled());
+        }
+    }
+
     public void updateColors() {
         MaterialPalette themeColors = InCallPresenter.getInstance().getThemeColors();
 
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 8af8835..665ed8b 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -268,6 +268,10 @@
     }
 
     public void mergeClicked() {
+        if (mCall == null) {
+            return;
+        }
+
         if (getUi().getContext().getResources().getBoolean(
                 R.bool.add_multi_participants_enabled)){
             int participantsCount = 0;
@@ -499,11 +503,11 @@
         final boolean showUpgradeToVideo =
                 /* When useExt is true, show upgrade button for an active/held
                    call if the call has either voice or video capabilities */
+                ((isCallActive || isCallOnHold) &&
                 ((useExt && QtiCallUtils.hasVoiceOrVideoCapabilities(call)) ||
                 /* When useCustomVideoUi is true, show upgrade button for an active/held
                    voice call only if the current call has video capabilities */
-                (useCustomVideoUi && !isVideo && hasVideoCallCapabilities(call))
-                && (isCallActive || isCallOnHold)) ||
+                (useCustomVideoUi && !isVideo && hasVideoCallCapabilities(call)))) ||
                 /* When useExt and custom UI are false, default to Google behaviour */
                 (!isVideo && !useExt && !useCustomVideoUi && hasVideoCallCapabilities(call));
 
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index dd2af36..4598d3c 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -309,8 +309,8 @@
         InCallPresenter.getInstance().setThemeColors();
         InCallPresenter.getInstance().onUiShowing(true);
 
-        // Clear fullscreen state onResume; the stored value may not match reality.
-        InCallPresenter.getInstance().clearFullscreen();
+        // Exit fullscreen state onResume; the stored value may not match reality.
+        InCallPresenter.getInstance().setFullScreen(false);
 
         // If there is a pending request to show or hide the dialpad, handle that now.
         if (mShowDialpadRequest != DIALPAD_REQUEST_NONE) {