resolved conflicts for merge of ead63f02 to lmp-mr1-dev
Change-Id: I20d5f9d8aae82f0cb6f0ebf2ac1cb0af05eb8c9b
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.telecom;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -33,6 +34,8 @@ public abstract class Conference {
|
||||
public void onDisconnected(Conference conference, DisconnectCause disconnectCause) {}
|
||||
public void onConnectionAdded(Conference conference, Connection connection) {}
|
||||
public void onConnectionRemoved(Conference conference, Connection connection) {}
|
||||
public void onConferenceableConnectionsChanged(
|
||||
Conference conference, List<Connection> conferenceableConnections) {}
|
||||
public void onDestroyed(Conference conference) {}
|
||||
public void onCapabilitiesChanged(Conference conference, int capabilities) {}
|
||||
}
|
||||
@@ -41,6 +44,9 @@ public abstract class Conference {
|
||||
private final List<Connection> mChildConnections = new CopyOnWriteArrayList<>();
|
||||
private final List<Connection> mUnmodifiableChildConnections =
|
||||
Collections.unmodifiableList(mChildConnections);
|
||||
private final List<Connection> mConferenceableConnections = new ArrayList<>();
|
||||
private final List<Connection> mUnmodifiableConferenceableConnections =
|
||||
Collections.unmodifiableList(mConferenceableConnections);
|
||||
|
||||
private PhoneAccountHandle mPhoneAccount;
|
||||
private AudioState mAudioState;
|
||||
@@ -49,6 +55,15 @@ public abstract class Conference {
|
||||
private int mCapabilities;
|
||||
private String mDisconnectMessage;
|
||||
|
||||
private final Connection.Listener mConnectionDeathListener = new Connection.Listener() {
|
||||
@Override
|
||||
public void onDestroyed(Connection c) {
|
||||
if (mConferenceableConnections.remove(c)) {
|
||||
fireOnConferenceableConnectionsChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructs a new Conference with a mandatory {@link PhoneAccountHandle}
|
||||
*
|
||||
@@ -115,6 +130,13 @@ public abstract class Conference {
|
||||
*/
|
||||
public void onSeparate(Connection connection) {}
|
||||
|
||||
/**
|
||||
* Invoked when the specified {@link Connection} should merged with the conference call.
|
||||
*
|
||||
* @param connection The {@code Connection} to merge.
|
||||
*/
|
||||
public void onMerge(Connection connection) {}
|
||||
|
||||
/**
|
||||
* Invoked when the conference should be put on hold.
|
||||
*/
|
||||
@@ -233,6 +255,37 @@ public abstract class Conference {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the connections with which this connection can be conferenced.
|
||||
*
|
||||
* @param conferenceableConnections The set of connections this connection can conference with.
|
||||
*/
|
||||
public final void setConferenceableConnections(List<Connection> conferenceableConnections) {
|
||||
clearConferenceableList();
|
||||
for (Connection c : conferenceableConnections) {
|
||||
// If statement checks for duplicates in input. It makes it N^2 but we're dealing with a
|
||||
// small amount of items here.
|
||||
if (!mConferenceableConnections.contains(c)) {
|
||||
c.addConnectionListener(mConnectionDeathListener);
|
||||
mConferenceableConnections.add(c);
|
||||
}
|
||||
}
|
||||
fireOnConferenceableConnectionsChanged();
|
||||
}
|
||||
|
||||
private final void fireOnConferenceableConnectionsChanged() {
|
||||
for (Listener l : mListeners) {
|
||||
l.onConferenceableConnectionsChanged(this, getConferenceableConnections());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the connections with which this connection can be conferenced.
|
||||
*/
|
||||
public final List<Connection> getConferenceableConnections() {
|
||||
return mUnmodifiableConferenceableConnections;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tears down the conference object and any of its current connections.
|
||||
*/
|
||||
@@ -309,4 +362,11 @@ public abstract class Conference {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final void clearConferenceableList() {
|
||||
for (Connection c : mConferenceableConnections) {
|
||||
c.removeConnectionListener(mConnectionDeathListener);
|
||||
}
|
||||
mConferenceableConnections.clear();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user