Set the call video provider again after listeners are added.
Bug: 16043064
Change-Id: I97fecd71fbf2f27721e80fd6ba58c408884472e7
diff --git a/api/current.txt b/api/current.txt
index 15c8117..463a0aa 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -27540,6 +27540,7 @@
method public final boolean getAudioModeIsVoip();
method public final android.telecomm.CallAudioState getCallAudioState();
method public final int getCallCapabilities();
+ method public final android.telecomm.CallVideoProvider getCallVideoProvider();
method public final java.util.List<android.telecomm.Connection> getChildConnections();
method public final int getFeatures();
method public final android.net.Uri getHandle();
diff --git a/telecomm/java/android/telecomm/Connection.java b/telecomm/java/android/telecomm/Connection.java
index 2fd001a..05b0062 100644
--- a/telecomm/java/android/telecomm/Connection.java
+++ b/telecomm/java/android/telecomm/Connection.java
@@ -112,6 +112,7 @@
private boolean mRequestingRingback = false;
private int mCallCapabilities;
private Connection mParentConnection;
+ private CallVideoProvider mCallVideoProvider;
private boolean mAudioModeIsVoip;
private StatusHints mStatusHints;
@@ -349,11 +350,16 @@
* @param callVideoProvider The call video provider.
*/
public final void setCallVideoProvider(CallVideoProvider callVideoProvider) {
+ mCallVideoProvider = callVideoProvider;
for (Listener l : mListeners) {
l.onSetCallVideoProvider(this, callVideoProvider);
}
}
+ public final CallVideoProvider getCallVideoProvider() {
+ return mCallVideoProvider;
+ }
+
/**
* Sets state to disconnected.
*
diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java
index 1bc184b..d0ad0cc 100644
--- a/telecomm/java/android/telecomm/ConnectionService.java
+++ b/telecomm/java/android/telecomm/ConnectionService.java
@@ -25,6 +25,7 @@
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.telecomm.CallVideoProvider;
import com.android.internal.os.SomeArgs;
import com.android.internal.telecomm.IConnectionService;
@@ -688,6 +689,12 @@
mIdByConnection.put(connection, callId);
connection.addConnectionListener(mConnectionListener);
onConnectionAdded(connection);
+
+ // Trigger listeners for properties set before connection listener was added.
+ CallVideoProvider callVideoProvider = connection.getCallVideoProvider();
+ if (callVideoProvider != null) {
+ connection.setCallVideoProvider(callVideoProvider);
+ }
}
private void removeConnection(Connection connection) {