Add android bindings for PeerConnectionState.
This change makes it possible for android apps to use the new standards-compliant PeerConnectionState. Bug: webrtc:9977 Change-Id: Iad19c38e664a59e86879715ec7a04a59a9894bee Reviewed-on: https://webrtc-review.googlesource.com/c/109883 Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25652}
This commit is contained in:
@ -171,7 +171,7 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
private RoomConnectionParameters roomConnectionParameters;
|
private RoomConnectionParameters roomConnectionParameters;
|
||||||
@Nullable
|
@Nullable
|
||||||
private PeerConnectionParameters peerConnectionParameters;
|
private PeerConnectionParameters peerConnectionParameters;
|
||||||
private boolean iceConnected;
|
private boolean connected;
|
||||||
private boolean isError;
|
private boolean isError;
|
||||||
private boolean callControlFragmentVisible = true;
|
private boolean callControlFragmentVisible = true;
|
||||||
private long callStartedTimeMs;
|
private long callStartedTimeMs;
|
||||||
@ -203,7 +203,7 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
getWindow().getDecorView().setSystemUiVisibility(getSystemUiVisibility());
|
getWindow().getDecorView().setSystemUiVisibility(getSystemUiVisibility());
|
||||||
setContentView(R.layout.activity_call);
|
setContentView(R.layout.activity_call);
|
||||||
|
|
||||||
iceConnected = false;
|
connected = false;
|
||||||
signalingParameters = null;
|
signalingParameters = null;
|
||||||
|
|
||||||
// Create UI controls.
|
// Create UI controls.
|
||||||
@ -553,7 +553,7 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
|
|
||||||
// Helper functions.
|
// Helper functions.
|
||||||
private void toggleCallControlFragmentVisibility() {
|
private void toggleCallControlFragmentVisibility() {
|
||||||
if (!iceConnected || !callFragment.isAdded()) {
|
if (!connected || !callFragment.isAdded()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Show/hide call control fragment
|
// Show/hide call control fragment
|
||||||
@ -649,7 +649,7 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
audioManager.stop();
|
audioManager.stop();
|
||||||
audioManager = null;
|
audioManager = null;
|
||||||
}
|
}
|
||||||
if (iceConnected && !isError) {
|
if (connected && !isError) {
|
||||||
setResult(RESULT_OK);
|
setResult(RESULT_OK);
|
||||||
} else {
|
} else {
|
||||||
setResult(RESULT_CANCELED);
|
setResult(RESULT_CANCELED);
|
||||||
@ -911,8 +911,6 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
logAndToast("ICE connected, delay=" + delta + "ms");
|
logAndToast("ICE connected, delay=" + delta + "ms");
|
||||||
iceConnected = true;
|
|
||||||
callConnected();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -923,7 +921,30 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
logAndToast("ICE disconnected");
|
logAndToast("ICE disconnected");
|
||||||
iceConnected = false;
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnected() {
|
||||||
|
final long delta = System.currentTimeMillis() - callStartedTimeMs;
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
logAndToast("DTLS connected, delay=" + delta + "ms");
|
||||||
|
connected = true;
|
||||||
|
callConnected();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisconnected() {
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
logAndToast("DTLS disconnected");
|
||||||
|
connected = false;
|
||||||
disconnect();
|
disconnect();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -937,7 +958,7 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
|
|||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!isError && iceConnected) {
|
if (!isError && connected) {
|
||||||
hudFragment.updateEncoderStatistics(reports);
|
hudFragment.updateEncoderStatistics(reports);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ import org.webrtc.MediaStreamTrack;
|
|||||||
import org.webrtc.MediaStreamTrack.MediaType;
|
import org.webrtc.MediaStreamTrack.MediaType;
|
||||||
import org.webrtc.PeerConnection;
|
import org.webrtc.PeerConnection;
|
||||||
import org.webrtc.PeerConnection.IceConnectionState;
|
import org.webrtc.PeerConnection.IceConnectionState;
|
||||||
|
import org.webrtc.PeerConnection.PeerConnectionState;
|
||||||
import org.webrtc.PeerConnectionFactory;
|
import org.webrtc.PeerConnectionFactory;
|
||||||
import org.webrtc.RtpParameters;
|
import org.webrtc.RtpParameters;
|
||||||
import org.webrtc.RtpReceiver;
|
import org.webrtc.RtpReceiver;
|
||||||
@ -293,11 +294,23 @@ public class PeerConnectionClient {
|
|||||||
void onIceConnected();
|
void onIceConnected();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback fired once connection is closed (IceConnectionState is
|
* Callback fired once connection is disconnected (IceConnectionState is
|
||||||
* DISCONNECTED).
|
* DISCONNECTED).
|
||||||
*/
|
*/
|
||||||
void onIceDisconnected();
|
void onIceDisconnected();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback fired once DTLS connection is established (PeerConnectionState
|
||||||
|
* is CONNECTED).
|
||||||
|
*/
|
||||||
|
void onConnected();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback fired once DTLS connection is disconnected (PeerConnectionState
|
||||||
|
* is DISCONNECTED).
|
||||||
|
*/
|
||||||
|
void onDisconnected();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback fired once peer connection is closed.
|
* Callback fired once peer connection is closed.
|
||||||
*/
|
*/
|
||||||
@ -1263,6 +1276,20 @@ public class PeerConnectionClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnectionChange(final PeerConnection.PeerConnectionState newState) {
|
||||||
|
executor.execute(() -> {
|
||||||
|
Log.d(TAG, "PeerConnectionState: " + newState);
|
||||||
|
if (newState == PeerConnectionState.CONNECTED) {
|
||||||
|
events.onConnected();
|
||||||
|
} else if (newState == PeerConnectionState.DISCONNECTED) {
|
||||||
|
events.onDisconnected();
|
||||||
|
} else if (newState == PeerConnectionState.FAILED) {
|
||||||
|
reportError("DTLS connection failed.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onIceGatheringChange(PeerConnection.IceGatheringState newState) {
|
public void onIceGatheringChange(PeerConnection.IceGatheringState newState) {
|
||||||
Log.d(TAG, "IceGatheringState: " + newState);
|
Log.d(TAG, "IceGatheringState: " + newState);
|
||||||
|
@ -183,6 +183,16 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnected() {
|
||||||
|
Log.d(TAG, "DTLS Connected");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisconnected() {
|
||||||
|
Log.d(TAG, "DTLS Disconnected");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPeerConnectionClosed() {
|
public void onPeerConnectionClosed() {
|
||||||
Log.d(TAG, "PeerConnection closed");
|
Log.d(TAG, "PeerConnection closed");
|
||||||
|
@ -50,6 +50,21 @@ public class PeerConnection {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Tracks PeerConnectionInterface::PeerConnectionState */
|
||||||
|
public enum PeerConnectionState {
|
||||||
|
NEW,
|
||||||
|
CONNECTING,
|
||||||
|
CONNECTED,
|
||||||
|
DISCONNECTED,
|
||||||
|
FAILED,
|
||||||
|
CLOSED;
|
||||||
|
|
||||||
|
@CalledByNative("PeerConnectionState")
|
||||||
|
static PeerConnectionState fromNativeIndex(int nativeIndex) {
|
||||||
|
return values()[nativeIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Tracks PeerConnectionInterface::TlsCertPolicy */
|
/** Tracks PeerConnectionInterface::TlsCertPolicy */
|
||||||
public enum TlsCertPolicy {
|
public enum TlsCertPolicy {
|
||||||
TLS_CERT_POLICY_SECURE,
|
TLS_CERT_POLICY_SECURE,
|
||||||
@ -79,6 +94,10 @@ public class PeerConnection {
|
|||||||
/** Triggered when the IceConnectionState changes. */
|
/** Triggered when the IceConnectionState changes. */
|
||||||
@CalledByNative("Observer") void onIceConnectionChange(IceConnectionState newState);
|
@CalledByNative("Observer") void onIceConnectionChange(IceConnectionState newState);
|
||||||
|
|
||||||
|
/** Triggered when the PeerConnectionState changes. */
|
||||||
|
@CalledByNative("Observer")
|
||||||
|
default void onConnectionChange(PeerConnectionState newState) {}
|
||||||
|
|
||||||
/** Triggered when the ICE connection receiving status changes. */
|
/** Triggered when the ICE connection receiving status changes. */
|
||||||
@CalledByNative("Observer") void onIceConnectionReceivingChange(boolean receiving);
|
@CalledByNative("Observer") void onIceConnectionReceivingChange(boolean receiving);
|
||||||
|
|
||||||
@ -1093,6 +1112,10 @@ public class PeerConnection {
|
|||||||
return nativeIceConnectionState();
|
return nativeIceConnectionState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PeerConnectionState connectionState() {
|
||||||
|
return nativeConnectionState();
|
||||||
|
}
|
||||||
|
|
||||||
public IceGatheringState iceGatheringState() {
|
public IceGatheringState iceGatheringState() {
|
||||||
return nativeIceGatheringState();
|
return nativeIceGatheringState();
|
||||||
}
|
}
|
||||||
@ -1167,6 +1190,7 @@ public class PeerConnection {
|
|||||||
private native boolean nativeSetBitrate(Integer min, Integer current, Integer max);
|
private native boolean nativeSetBitrate(Integer min, Integer current, Integer max);
|
||||||
private native SignalingState nativeSignalingState();
|
private native SignalingState nativeSignalingState();
|
||||||
private native IceConnectionState nativeIceConnectionState();
|
private native IceConnectionState nativeIceConnectionState();
|
||||||
|
private native PeerConnectionState nativeConnectionState();
|
||||||
private native IceGatheringState nativeIceGatheringState();
|
private native IceGatheringState nativeIceGatheringState();
|
||||||
private native void nativeClose();
|
private native void nativeClose();
|
||||||
private static native long nativeCreatePeerConnectionObserver(Observer observer);
|
private static native long nativeCreatePeerConnectionObserver(Observer observer);
|
||||||
|
@ -45,6 +45,7 @@ import org.junit.runner.RunWith;
|
|||||||
import org.webrtc.Metrics.HistogramInfo;
|
import org.webrtc.Metrics.HistogramInfo;
|
||||||
import org.webrtc.PeerConnection.IceConnectionState;
|
import org.webrtc.PeerConnection.IceConnectionState;
|
||||||
import org.webrtc.PeerConnection.IceGatheringState;
|
import org.webrtc.PeerConnection.IceGatheringState;
|
||||||
|
import org.webrtc.PeerConnection.PeerConnectionState;
|
||||||
import org.webrtc.PeerConnection.SignalingState;
|
import org.webrtc.PeerConnection.SignalingState;
|
||||||
|
|
||||||
/** End-to-end tests for PeerConnection.java. */
|
/** End-to-end tests for PeerConnection.java. */
|
||||||
@ -74,6 +75,7 @@ public class PeerConnectionTest {
|
|||||||
private int expectedTracksAdded;
|
private int expectedTracksAdded;
|
||||||
private Queue<SignalingState> expectedSignalingChanges = new ArrayDeque<>();
|
private Queue<SignalingState> expectedSignalingChanges = new ArrayDeque<>();
|
||||||
private Queue<IceConnectionState> expectedIceConnectionChanges = new ArrayDeque<>();
|
private Queue<IceConnectionState> expectedIceConnectionChanges = new ArrayDeque<>();
|
||||||
|
private Queue<PeerConnectionState> expectedConnectionChanges = new ArrayDeque<>();
|
||||||
private Queue<IceGatheringState> expectedIceGatheringChanges = new ArrayDeque<>();
|
private Queue<IceGatheringState> expectedIceGatheringChanges = new ArrayDeque<>();
|
||||||
private Queue<String> expectedAddStreamLabels = new ArrayDeque<>();
|
private Queue<String> expectedAddStreamLabels = new ArrayDeque<>();
|
||||||
private Queue<String> expectedRemoveStreamLabels = new ArrayDeque<>();
|
private Queue<String> expectedRemoveStreamLabels = new ArrayDeque<>();
|
||||||
@ -188,11 +190,29 @@ public class PeerConnectionTest {
|
|||||||
assertEquals(expectedIceConnectionChanges.remove(), newState);
|
assertEquals(expectedIceConnectionChanges.remove(), newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
||||||
|
@SuppressWarnings("NoSynchronizedMethodCheck")
|
||||||
|
public synchronized void expectConnectionChange(PeerConnectionState newState) {
|
||||||
|
expectedConnectionChanges.add(newState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
||||||
|
@SuppressWarnings("NoSynchronizedMethodCheck")
|
||||||
|
public synchronized void onConnectionChange(PeerConnectionState newState) {
|
||||||
|
if (expectedConnectionChanges.isEmpty()) {
|
||||||
|
System.out.println(name + " got an unexpected DTLS connection change " + newState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(expectedConnectionChanges.remove(), newState);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
||||||
@SuppressWarnings("NoSynchronizedMethodCheck")
|
@SuppressWarnings("NoSynchronizedMethodCheck")
|
||||||
public synchronized void onIceConnectionReceivingChange(boolean receiving) {
|
public synchronized void onIceConnectionReceivingChange(boolean receiving) {
|
||||||
System.out.println(name + "Got an ICE connection receiving change " + receiving);
|
System.out.println(name + " got an ICE connection receiving change " + receiving);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
// TODO(bugs.webrtc.org/8491): Remove NoSynchronizedMethodCheck suppression.
|
||||||
@ -799,12 +819,14 @@ public class PeerConnectionTest {
|
|||||||
|
|
||||||
sdpLatch = new SdpObserverLatch();
|
sdpLatch = new SdpObserverLatch();
|
||||||
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
|
|
||||||
sdpLatch = new SdpObserverLatch();
|
sdpLatch = new SdpObserverLatch();
|
||||||
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
@ -814,6 +836,9 @@ public class PeerConnectionTest {
|
|||||||
|
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.NEW);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
||||||
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
||||||
//
|
//
|
||||||
@ -821,6 +846,7 @@ public class PeerConnectionTest {
|
|||||||
// IceConnectionState.COMPLETED);
|
// IceConnectionState.COMPLETED);
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
|
|
||||||
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
@ -1029,12 +1055,14 @@ public class PeerConnectionTest {
|
|||||||
|
|
||||||
sdpLatch = new SdpObserverLatch();
|
sdpLatch = new SdpObserverLatch();
|
||||||
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
|
|
||||||
sdpLatch = new SdpObserverLatch();
|
sdpLatch = new SdpObserverLatch();
|
||||||
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
@ -1043,10 +1071,14 @@ public class PeerConnectionTest {
|
|||||||
|
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.NEW);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
||||||
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
|
|
||||||
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
@ -1179,6 +1211,7 @@ public class PeerConnectionTest {
|
|||||||
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
offeringExpectations.expectSignalingChange(SignalingState.HAVE_LOCAL_OFFER);
|
||||||
offeringExpectations.expectIceCandidates(2);
|
offeringExpectations.expectIceCandidates(2);
|
||||||
offeringExpectations.expectIceGatheringChange(IceGatheringState.COMPLETE);
|
offeringExpectations.expectIceGatheringChange(IceGatheringState.COMPLETE);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
offeringPC.setLocalDescription(sdpLatch, offerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
@ -1210,6 +1243,7 @@ public class PeerConnectionTest {
|
|||||||
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
answeringExpectations.expectSignalingChange(SignalingState.STABLE);
|
||||||
answeringExpectations.expectIceCandidates(2);
|
answeringExpectations.expectIceCandidates(2);
|
||||||
answeringExpectations.expectIceGatheringChange(IceGatheringState.COMPLETE);
|
answeringExpectations.expectIceGatheringChange(IceGatheringState.COMPLETE);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
answeringPC.setLocalDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
assertNull(sdpLatch.getSdp());
|
assertNull(sdpLatch.getSdp());
|
||||||
@ -1221,6 +1255,9 @@ public class PeerConnectionTest {
|
|||||||
|
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
offeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.NEW);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTING);
|
||||||
|
offeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
// TODO(bemasc): uncomment once delivery of ICECompleted is reliable
|
||||||
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
// (https://code.google.com/p/webrtc/issues/detail?id=3021).
|
||||||
//
|
//
|
||||||
@ -1228,6 +1265,7 @@ public class PeerConnectionTest {
|
|||||||
// IceConnectionState.COMPLETED);
|
// IceConnectionState.COMPLETED);
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CHECKING);
|
||||||
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
answeringExpectations.expectIceConnectionChange(IceConnectionState.CONNECTED);
|
||||||
|
answeringExpectations.expectConnectionChange(PeerConnectionState.CONNECTED);
|
||||||
|
|
||||||
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
offeringPC.setRemoteDescription(sdpLatch, answerSdp);
|
||||||
assertTrue(sdpLatch.await());
|
assertTrue(sdpLatch.await());
|
||||||
@ -1613,6 +1651,7 @@ public class PeerConnectionTest {
|
|||||||
assertTrue(expectations.waitForAllExpectationsToBeSatisfied(TIMEOUT_SECONDS));
|
assertTrue(expectations.waitForAllExpectationsToBeSatisfied(TIMEOUT_SECONDS));
|
||||||
|
|
||||||
expectations.expectIceConnectionChange(IceConnectionState.CLOSED);
|
expectations.expectIceConnectionChange(IceConnectionState.CLOSED);
|
||||||
|
expectations.expectConnectionChange(PeerConnectionState.CLOSED);
|
||||||
expectations.expectSignalingChange(SignalingState.CLOSED);
|
expectations.expectSignalingChange(SignalingState.CLOSED);
|
||||||
pc.close();
|
pc.close();
|
||||||
assertTrue(expectations.waitForAllExpectationsToBeSatisfied(TIMEOUT_SECONDS));
|
assertTrue(expectations.waitForAllExpectationsToBeSatisfied(TIMEOUT_SECONDS));
|
||||||
|
@ -299,6 +299,14 @@ void PeerConnectionObserverJni::OnIceConnectionChange(
|
|||||||
Java_IceConnectionState_fromNativeIndex(env, new_state));
|
Java_IceConnectionState_fromNativeIndex(env, new_state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PeerConnectionObserverJni::OnConnectionChange(
|
||||||
|
PeerConnectionInterface::PeerConnectionState new_state) {
|
||||||
|
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||||
|
Java_Observer_onConnectionChange(env, j_observer_global_,
|
||||||
|
Java_PeerConnectionState_fromNativeIndex(
|
||||||
|
env, static_cast<int>(new_state)));
|
||||||
|
}
|
||||||
|
|
||||||
void PeerConnectionObserverJni::OnIceConnectionReceivingChange(bool receiving) {
|
void PeerConnectionObserverJni::OnIceConnectionReceivingChange(bool receiving) {
|
||||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||||
Java_Observer_onIceConnectionReceivingChange(env, j_observer_global_,
|
Java_Observer_onIceConnectionReceivingChange(env, j_observer_global_,
|
||||||
@ -752,6 +760,14 @@ static ScopedJavaLocalRef<jobject> JNI_PeerConnection_IceConnectionState(
|
|||||||
env, ExtractNativePC(env, j_pc)->ice_connection_state());
|
env, ExtractNativePC(env, j_pc)->ice_connection_state());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ScopedJavaLocalRef<jobject> JNI_PeerConnection_ConnectionState(
|
||||||
|
JNIEnv* env,
|
||||||
|
const JavaParamRef<jobject>& j_pc) {
|
||||||
|
return Java_PeerConnectionState_fromNativeIndex(
|
||||||
|
env,
|
||||||
|
static_cast<int>(ExtractNativePC(env, j_pc)->peer_connection_state()));
|
||||||
|
}
|
||||||
|
|
||||||
static ScopedJavaLocalRef<jobject> JNI_PeerConnection_IceGatheringState(
|
static ScopedJavaLocalRef<jobject> JNI_PeerConnection_IceGatheringState(
|
||||||
JNIEnv* env,
|
JNIEnv* env,
|
||||||
const JavaParamRef<jobject>& j_pc) {
|
const JavaParamRef<jobject>& j_pc) {
|
||||||
|
@ -51,6 +51,8 @@ class PeerConnectionObserverJni : public PeerConnectionObserver {
|
|||||||
PeerConnectionInterface::SignalingState new_state) override;
|
PeerConnectionInterface::SignalingState new_state) override;
|
||||||
void OnIceConnectionChange(
|
void OnIceConnectionChange(
|
||||||
PeerConnectionInterface::IceConnectionState new_state) override;
|
PeerConnectionInterface::IceConnectionState new_state) override;
|
||||||
|
void OnConnectionChange(
|
||||||
|
PeerConnectionInterface::PeerConnectionState new_state) override;
|
||||||
void OnIceConnectionReceivingChange(bool receiving) override;
|
void OnIceConnectionReceivingChange(bool receiving) override;
|
||||||
void OnIceGatheringChange(
|
void OnIceGatheringChange(
|
||||||
PeerConnectionInterface::IceGatheringState new_state) override;
|
PeerConnectionInterface::IceGatheringState new_state) override;
|
||||||
|
Reference in New Issue
Block a user