Merge changes from topic 'mwd-merge-050415' into mnc-dev
* changes:
Merge commit 'fd9760e' into merge_try2
Merge commit '41ce566' into merge_try2
Merge commit '21ec0f1' into merge_try2
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 1b8f96f..82b6e00 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -78,7 +78,7 @@
private static final String LOG_TAG = "CallFeaturesSetting";
private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
// STOPSHIP if true. Flag to override behavior default behavior to hide VT setting.
- private static final boolean ENABLE_VT_FLAG = false;
+ private static final boolean ENABLE_VT_FLAG = true;
// String keys for preference lookup
// TODO: Naming these "BUTTON_*" is confusing since they're not actually buttons(!)
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 3beabf4..bf9a90e 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -50,6 +50,8 @@
private static final int MSG_RINGBACK_TONE = 2;
private static final int MSG_HANDOVER_STATE_CHANGED = 3;
private static final int MSG_DISCONNECT = 4;
+ private static final int MSG_MULTIPARTY_STATE_CHANGED = 5;
+ private static final int MSG_CONFERENCE_MERGE_FAILED = 6;
private final Handler mHandler = new Handler() {
@Override
@@ -87,6 +89,16 @@
case MSG_DISCONNECT:
updateState();
break;
+ case MSG_MULTIPARTY_STATE_CHANGED:
+ boolean isMultiParty = (Boolean) msg.obj;
+ Log.i(this, "Update multiparty state to %s", isMultiParty ? "Y" : "N");
+ mIsMultiParty = isMultiParty;
+ if (isMultiParty) {
+ notifyConferenceStarted();
+ }
+ case MSG_CONFERENCE_MERGE_FAILED:
+ notifyConferenceMergeFailed();
+ break;
}
}
};
@@ -192,6 +204,25 @@
public void onConferenceParticipantsChanged(List<ConferenceParticipant> participants) {
updateConferenceParticipants(participants);
}
+
+ /*
+ * Handles a change to the multiparty state for this connection.
+ *
+ * @param isMultiParty {@code true} if the call became multiparty, {@code false}
+ * otherwise.
+ */
+ @Override
+ public void onMultipartyStateChanged(boolean isMultiParty) {
+ handleMultipartyStateChange(isMultiParty);
+ }
+
+ /**
+ * Handles the event that the request to merge calls failed.
+ */
+ @Override
+ public void onConferenceMergedFailed() {
+ handleConferenceMergeFailed();
+ }
};
private com.android.internal.telephony.Connection mOriginalConnection;
@@ -709,6 +740,33 @@
}
}
+ /**
+ * Handles a failure when merging calls into a conference.
+ * {@link com.android.internal.telephony.Connection.Listener#onConferenceMergedFailed()}
+ * listener.
+ */
+ private void handleConferenceMergeFailed(){
+ mHandler.obtainMessage(MSG_CONFERENCE_MERGE_FAILED).sendToTarget();
+ }
+
+ /**
+ * Handles requests to update the multiparty state received via the
+ * {@link com.android.internal.telephony.Connection.Listener#onMultipartyStateChanged(boolean)}
+ * listener.
+ * <p>
+ * Note: We post this to the mHandler to ensure that if a conference must be created as a
+ * result of the multiparty state change, the conference creation happens on the correct
+ * thread. This ensures that the thread check in
+ * {@link com.android.internal.telephony.PhoneBase#checkCorrectThread(android.os.Handler)}
+ * does not fire.
+ *
+ * @param isMultiParty {@code true} if this connection is multiparty, {@code false} otherwise.
+ */
+ private void handleMultipartyStateChange(boolean isMultiParty) {
+ Log.i(this, "Update multiparty state to %s", isMultiParty ? "Y" : "N");
+ mHandler.obtainMessage(MSG_MULTIPARTY_STATE_CHANGED, isMultiParty).sendToTarget();
+ }
+
private void setActiveInternal() {
if (getState() == STATE_ACTIVE) {
Log.w(this, "Should not be called if this is already ACTIVE");