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) {