Adding HOLD capability and passing it through the Service.

Change-Id: Ia4906ab4eaa601b12e06d151fed6e3b5f63958a3
diff --git a/src/com/android/phone/CallModeler.java b/src/com/android/phone/CallModeler.java
index 7f0c5c5..dcd11f7 100644
--- a/src/com/android/phone/CallModeler.java
+++ b/src/com/android/phone/CallModeler.java
@@ -30,7 +30,9 @@
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.services.telephony.common.Call;
+import com.android.services.telephony.common.Call.Capabilities;
 import com.android.services.telephony.common.Call.State;
 
 import java.util.ArrayList;
@@ -262,9 +264,30 @@
             changed = true;
         }
 
+        final int newCapabilities = getCapabilitiesFor(connection);
+        if (call.getCapabilities() != newCapabilities) {
+            call.setCapabilities(newCapabilities);
+            changed = true;
+        }
+
         return changed;
     }
 
+    /**
+     * Returns a mask of capabilities for the connection such as merge, hold, etc.
+     */
+    private int getCapabilitiesFor(Connection connection) {
+        int retval = 0x0;
+
+        final boolean hold = TelephonyCapabilities.supportsAnswerAndHold(connection.getCall().getPhone());
+
+        if (hold) {
+            retval |= Capabilities.HOLD;
+        }
+
+        return retval;
+    }
+
     private int translateStateFromTelephony(com.android.internal.telephony.Call.State teleState) {
         int retval = State.IDLE;
         switch (teleState) {