Add the url attribute to the IceCandidate (Java Wrapper)

The url of the ICE server is added to the IceCandiate class.
This can be used to tell which server this candidate was gathered from.

BUG=webrtc:7128

Review-Url: https://codereview.webrtc.org/2690593002
Cr-Original-Commit-Position: refs/heads/master@{#16593}
Committed: 8586c8ee88
Review-Url: https://codereview.webrtc.org/2690593002
Cr-Commit-Position: refs/heads/master@{#16615}
This commit is contained in:
zhihuang
2017-02-14 12:23:34 -08:00
committed by Commit bot
parent bb1de873b9
commit 45efce01c7
6 changed files with 30 additions and 12 deletions

View File

@ -187,6 +187,7 @@ public class DirectRTCClient implements AppRTCClient, TCPChannelClient.TCPChanne
jsonPut(json, "label", candidate.sdpMLineIndex);
jsonPut(json, "id", candidate.sdpMid);
jsonPut(json, "candidate", candidate.sdp);
jsonPut(json, "url", candidate.serverUrl);
if (roomState != ConnectionState.CONNECTED) {
reportError("Sending ICE candidate in non connected state.");
@ -336,12 +337,13 @@ public class DirectRTCClient implements AppRTCClient, TCPChannelClient.TCPChanne
jsonPut(json, "label", candidate.sdpMLineIndex);
jsonPut(json, "id", candidate.sdpMid);
jsonPut(json, "candidate", candidate.sdp);
jsonPut(json, "url", candidate.serverUrl);
return json;
}
// Converts a JSON candidate to a Java object.
private static IceCandidate toJavaCandidate(JSONObject json) throws JSONException {
return new IceCandidate(
json.getString("id"), json.getInt("label"), json.getString("candidate"));
return new IceCandidate(json.getString("id"), json.getInt("label"), json.getString("candidate"),
json.getString("url"));
}
}

View File

@ -115,8 +115,8 @@ public class RoomParametersFetcher {
offerSdp = new SessionDescription(
SessionDescription.Type.fromCanonicalForm(messageType), message.getString("sdp"));
} else if (messageType.equals("candidate")) {
IceCandidate candidate = new IceCandidate(
message.getString("id"), message.getInt("label"), message.getString("candidate"));
IceCandidate candidate = new IceCandidate(message.getString("id"),
message.getInt("label"), message.getString("candidate"), message.getString("url"));
iceCandidates.add(candidate);
} else {
Log.e(TAG, "Unknown message: " + messageString);

View File

@ -408,12 +408,13 @@ public class WebSocketRTCClient implements AppRTCClient, WebSocketChannelEvents
jsonPut(json, "label", candidate.sdpMLineIndex);
jsonPut(json, "id", candidate.sdpMid);
jsonPut(json, "candidate", candidate.sdp);
jsonPut(json, "url", candidate.serverUrl);
return json;
}
// Converts a JSON candidate to a Java object.
IceCandidate toJavaCandidate(JSONObject json) throws JSONException {
return new IceCandidate(
json.getString("id"), json.getInt("label"), json.getString("candidate"));
return new IceCandidate(json.getString("id"), json.getInt("label"), json.getString("candidate"),
json.getString("url"));
}
}

View File

@ -41,6 +41,7 @@ public class DirectRTCClientTest {
private static final String DUMMY_SDP_MID = "sdpMid";
private static final String DUMMY_SDP = "sdp";
private static final String DUMMY_SERVER_URL = "serverUrl";
public static final int SERVER_WAIT = 100;
public static final int NETWORK_TIMEOUT = 1000;
@ -136,7 +137,7 @@ public class DirectRTCClientTest {
verify(serverEvents, timeout(NETWORK_TIMEOUT))
.onRemoteDescription(isNotNull(SessionDescription.class));
IceCandidate candidate = new IceCandidate(DUMMY_SDP_MID, 0, DUMMY_SDP);
IceCandidate candidate = new IceCandidate(DUMMY_SDP_MID, 0, DUMMY_SDP, DUMMY_SERVER_URL);
server.sendLocalIceCandidate(candidate);
verify(clientEvents, timeout(NETWORK_TIMEOUT))
.onRemoteIceCandidate(isNotNull(IceCandidate.class));

View File

@ -18,14 +18,24 @@ public class IceCandidate {
public final String sdpMid;
public final int sdpMLineIndex;
public final String sdp;
public final String serverUrl;
@Deprecated
public IceCandidate(String sdpMid, int sdpMLineIndex, String sdp) {
this.sdpMid = sdpMid;
this.sdpMLineIndex = sdpMLineIndex;
this.sdp = sdp;
this.serverUrl = "";
}
public IceCandidate(String sdpMid, int sdpMLineIndex, String sdp, String serverUrl) {
this.sdpMid = sdpMid;
this.sdpMLineIndex = sdpMLineIndex;
this.sdp = sdp;
this.serverUrl = serverUrl;
}
public String toString() {
return sdpMid + ":" + sdpMLineIndex + ":" + sdp;
return sdpMid + ":" + sdpMLineIndex + ":" + sdp + ":" + serverUrl;
}
}

View File

@ -245,12 +245,16 @@ class PCOJava : public PeerConnectionObserver {
std::string sdp;
RTC_CHECK(candidate->ToString(&sdp)) << "got so far: " << sdp;
jclass candidate_class = FindClass(jni(), "org/webrtc/IceCandidate");
jmethodID ctor = GetMethodID(jni(), candidate_class,
"<init>", "(Ljava/lang/String;ILjava/lang/String;)V");
jmethodID ctor = GetMethodID(
jni(), candidate_class, "<init>",
"(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V");
jstring j_mid = JavaStringFromStdString(jni(), candidate->sdp_mid());
jstring j_sdp = JavaStringFromStdString(jni(), sdp);
jobject j_candidate = jni()->NewObject(candidate_class, ctor, j_mid,
candidate->sdp_mline_index(), j_sdp);
jstring j_url =
JavaStringFromStdString(jni(), candidate->candidate().url());
jobject j_candidate =
jni()->NewObject(candidate_class, ctor, j_mid,
candidate->sdp_mline_index(), j_sdp, j_url);
CHECK_EXCEPTION(jni()) << "error during NewObject";
jmethodID m = GetMethodID(jni(), *j_observer_class_,
"onIceCandidate", "(Lorg/webrtc/IceCandidate;)V");