Properly setup MockPeerConnectionObserver in tests (continued).

This CL prevents dereferencing potentially null pointer by
setting the pointer in client code.

We can now safely call PeerConnection::Close(), which happens
to trigger OnIceConnectionChange() on the observer.

This is a followup to: https://webrtc-review.googlesource.com/c/src/+/107706

Bug: webrtc:9855
Change-Id: Ieebf8415f0a12fe87d8cd80d1eb06797926005df
Reviewed-on: https://webrtc-review.googlesource.com/c/108785
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25462}
This commit is contained in:
Yves Gerey 2018-10-31 15:36:05 +01:00 committed by Commit Bot
parent dd20c9c1e3
commit 4e93329839
9 changed files with 11 additions and 0 deletions

View File

@ -76,6 +76,7 @@ class PeerConnectionCryptoBaseTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
return absl::make_unique<PeerConnectionWrapper>(pc_factory_, pc,
std::move(observer));
}

View File

@ -123,6 +123,7 @@ class PeerConnectionDataChannelBaseTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
auto wrapper = absl::make_unique<PeerConnectionWrapperForDataChannelTest>(
pc_factory, pc, std::move(observer));
RTC_DCHECK(pc_factory->last_fake_sctp_transport_factory_);

View File

@ -251,6 +251,7 @@ class PeerConnectionUsageHistogramTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
auto wrapper =
absl::make_unique<PeerConnectionWrapperForUsageHistogramTest>(
pc_factory, pc, std::move(observer));

View File

@ -125,6 +125,7 @@ class PeerConnectionIceBaseTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
auto wrapper = absl::make_unique<PeerConnectionWrapperForIceTest>(
pc_factory_, pc, std::move(observer));
wrapper->set_network(fake_network);

View File

@ -95,6 +95,7 @@ class PeerConnectionJsepTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
return absl::make_unique<PeerConnectionWrapper>(pc_factory, pc,
std::move(observer));
}

View File

@ -105,6 +105,7 @@ class PeerConnectionMediaBaseTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
auto wrapper = absl::make_unique<PeerConnectionWrapperForMediaTest>(
pc_factory, pc, std::move(observer));
wrapper->set_media_engine(media_engine_ptr);

View File

@ -117,6 +117,8 @@ class PeerConnectionRtpBaseTest : public testing::Test {
auto observer = absl::make_unique<MockPeerConnectionObserver>();
auto pc = pc_factory_->CreatePeerConnection(config, nullptr, nullptr,
observer.get());
EXPECT_TRUE(pc.get());
observer->SetPeerConnectionInterface(pc.get());
return absl::make_unique<PeerConnectionWrapper>(pc_factory_, pc,
std::move(observer));
}

View File

@ -90,6 +90,7 @@ class PeerConnectionSignalingBaseTest : public ::testing::Test {
return nullptr;
}
observer->SetPeerConnectionInterface(pc.get());
return absl::make_unique<PeerConnectionWrapperForSignalingTest>(
pc_factory_, pc, std::move(observer));
}

View File

@ -1397,6 +1397,8 @@ TEST_P(PeerConnectionInterfaceTest,
rtc::scoped_refptr<PeerConnectionInterface> pc(
pc_factory->CreatePeerConnection(config, std::move(port_allocator),
nullptr, &observer_));
EXPECT_TRUE(pc.get());
observer_.SetPeerConnectionInterface(pc.get());
// Now validate that the config fields set above were applied to the
// PortAllocator, as flags or otherwise.