Merge "Update buttons state once UI is ready"
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 718dd52..82c576f 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -58,11 +58,16 @@
         AudioModeProvider.getInstance().addListener(this);
 
         // register for call state changes last
-        InCallPresenter.getInstance().addListener(this);
-        InCallPresenter.getInstance().addIncomingCallListener(this);
-        InCallPresenter.getInstance().addDetailsListener(this);
-        InCallPresenter.getInstance().addCanAddCallListener(this);
-        InCallPresenter.getInstance().getInCallCameraManager().addCameraSelectionListener(this);
+        final InCallPresenter inCallPresenter = InCallPresenter.getInstance();
+        inCallPresenter.addListener(this);
+        inCallPresenter.addIncomingCallListener(this);
+        inCallPresenter.addDetailsListener(this);
+        inCallPresenter.addCanAddCallListener(this);
+        inCallPresenter.getInCallCameraManager().addCameraSelectionListener(this);
+
+        // Update the buttons state immediately for the current call
+        onStateChange(InCallState.NO_CALLS, inCallPresenter.getInCallState(),
+                CallList.getInstance());
     }
 
     @Override
@@ -100,7 +105,7 @@
             if (ui != null) {
                 ui.displayDialpad(false /* show */, true /* animate */);
             }
-            mCall = null;
+            mCall = callList.getIncomingCall();
         } else {
             mCall = null;
         }
@@ -336,17 +341,11 @@
                 state.isConnectingOrConnected() &&!state.isIncoming() && call != null;
         ui.setEnabled(isEnabled);
 
-        if (!isEnabled) {
+        if (call == null) {
             return;
         }
 
         updateButtonsState(call);
-
-        ui.enableButton(BUTTON_MUTE, call.can(android.telecom.Call.Details.CAPABILITY_MUTE));
-    }
-
-    private static int toInteger(boolean b) {
-        return b ? 1 : 0;
     }
 
     /**