Catching more errors when parsing ICE server URLs.
Every malformed URL should now produce an error message in JS, rather than
silently failing and possibly printing a warning message to the console (and
possibly crashing).
Also added some unit tests, and made "ParseIceServers" public.
BUG=445002
Review URL: https://codereview.webrtc.org/1344143002
Cr-Commit-Position: refs/heads/master@{#10186}
diff --git a/talk/app/webrtc/peerconnectioninterface_unittest.cc b/talk/app/webrtc/peerconnectioninterface_unittest.cc
index 03ceaf2..5e135df 100644
--- a/talk/app/webrtc/peerconnectioninterface_unittest.cc
+++ b/talk/app/webrtc/peerconnectioninterface_unittest.cc
@@ -247,9 +247,11 @@
webrtc::MediaConstraintsInterface* constraints) {
PeerConnectionInterface::IceServer server;
PeerConnectionInterface::IceServers servers;
- server.uri = uri;
- server.password = password;
- servers.push_back(server);
+ if (!uri.empty()) {
+ server.uri = uri;
+ server.password = password;
+ servers.push_back(server);
+ }
port_allocator_factory_ = FakePortAllocatorFactory::Create();
@@ -281,6 +283,21 @@
EXPECT_EQ(PeerConnectionInterface::kStable, observer_.state_);
}
+ void CreatePeerConnectionExpectFail(const std::string& uri) {
+ PeerConnectionInterface::IceServer server;
+ PeerConnectionInterface::IceServers servers;
+ server.uri = uri;
+ servers.push_back(server);
+
+ scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store;
+ port_allocator_factory_ = FakePortAllocatorFactory::Create();
+ scoped_refptr<PeerConnectionInterface> pc;
+ pc = pc_factory_->CreatePeerConnection(
+ servers, nullptr, port_allocator_factory_.get(),
+ dtls_identity_store.Pass(), &observer_);
+ ASSERT_EQ(nullptr, pc);
+ }
+
void CreatePeerConnectionWithDifferentConfigurations() {
CreatePeerConnection(kStunAddressOnly, "", NULL);
EXPECT_EQ(1u, port_allocator_factory_->stun_configs().size());
@@ -290,17 +307,9 @@
EXPECT_EQ(kDefaultStunPort,
port_allocator_factory_->stun_configs()[0].server.port());
- CreatePeerConnection(kStunInvalidPort, "", NULL);
- EXPECT_EQ(0u, port_allocator_factory_->stun_configs().size());
- EXPECT_EQ(0u, port_allocator_factory_->turn_configs().size());
-
- CreatePeerConnection(kStunAddressPortAndMore1, "", NULL);
- EXPECT_EQ(0u, port_allocator_factory_->stun_configs().size());
- EXPECT_EQ(0u, port_allocator_factory_->turn_configs().size());
-
- CreatePeerConnection(kStunAddressPortAndMore2, "", NULL);
- EXPECT_EQ(0u, port_allocator_factory_->stun_configs().size());
- EXPECT_EQ(0u, port_allocator_factory_->turn_configs().size());
+ CreatePeerConnectionExpectFail(kStunInvalidPort);
+ CreatePeerConnectionExpectFail(kStunAddressPortAndMore1);
+ CreatePeerConnectionExpectFail(kStunAddressPortAndMore2);
CreatePeerConnection(kTurnIceServerUri, kTurnPassword, NULL);
EXPECT_EQ(0u, port_allocator_factory_->stun_configs().size());