Add capability to indicate a conference will never have children.

Used to mark IMS conference calls so that it is possible to know that we
never expect child calls to be associated with the conference.

Bug: 21085329
Change-Id: I7e5c82622ed382e431d4156878c28b37421e1e35
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 6055211..16ecd39 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -34,7 +34,6 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -195,8 +194,30 @@
      */
     public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000;
 
+    /**
+     * For a conference, indicates the conference will not have child connections.
+     * <p>
+     * An example of a conference with child connections is a GSM conference call, where the radio
+     * retains connections to the individual participants of the conference.  Another example is an
+     * IMS conference call where conference event package functionality is supported; in this case
+     * the conference server ensures the radio is aware of the participants in the conference, which
+     * are represented by child connections.
+     * <p>
+     * An example of a conference with no child connections is an IMS conference call with no
+     * conference event package support.  Such a conference is represented by the radio as a single
+     * connection to the IMS conference server.
+     * <p>
+     * Indicating whether a conference has children or not is important to help user interfaces
+     * visually represent a conference.  A conference with no children, for example, will have the
+     * conference connection shown in the list of calls on a Bluetooth device, where if the
+     * conference has children, only the children will be shown in the list of calls on a Bluetooth
+     * device.
+     * @hide
+     */
+    public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 0x00200000;
+
     //**********************************************************************************************
-    // Next CAPABILITY value: 0x00200000
+    // Next CAPABILITY value: 0x00400000
     //**********************************************************************************************
 
     // Flag controlling whether PII is emitted into the logs
@@ -309,6 +330,9 @@
         if (can(capabilities, CAPABILITY_CAN_PAUSE_VIDEO)) {
             builder.append(" CAPABILITY_CAN_PAUSE_VIDEO");
         }
+        if (can(capabilities, CAPABILITY_CONFERENCE_HAS_NO_CHILDREN)) {
+            builder.append(" CAPABILITY_SINGLE_PARTY_CONFERENCE");
+        }
         builder.append("]");
         return builder.toString();
     }