Bug 1616875: Make this work with gtest. r=ng

Differential Revision: https://phabricator.services.mozilla.com/D64692

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Byron Campen [:bwc] 2020-03-20 15:35:46 +00:00
parent 2eecfe8825
commit bcd72fe82e
2 changed files with 22 additions and 14 deletions

View File

@ -243,8 +243,8 @@ class RtpSourcesTest : public ::testing::Test {
// Observer a header with a single Csrc
void TestObserveOneCsrc() {
RtpSourceObserver observer =
RtpSourceObserver(dom::RTCStatsTimestampMaker());
RefPtr<RtpSourceObserver> observer =
new RtpSourceObserver(dom::RTCStatsTimestampMaker());
webrtc::RTPHeader header;
constexpr unsigned int ssrc = 857265;
constexpr unsigned int csrc = 3268365;
@ -253,12 +253,12 @@ class RtpSourcesTest : public ::testing::Test {
header.ssrc = ssrc;
header.numCSRCs = 1;
header.arrOfCSRCs[0] = csrc;
observer.OnRtpPacket(header, jitter);
observer->OnRtpPacket(header, jitter);
// One for the SSRC, one for the CSRC
EXPECT_EQ(observer.mRtpSources.size(), static_cast<size_t>(2));
EXPECT_EQ(observer->mRtpSources.size(), static_cast<size_t>(2));
nsTArray<dom::RTCRtpSourceEntry> outLevels;
observer.GetRtpSources(outLevels);
observer->GetRtpSources(outLevels);
EXPECT_EQ(outLevels.Length(), static_cast<size_t>(2));
bool ssrcFound = false;
bool csrcFound = true;
@ -279,8 +279,8 @@ class RtpSourcesTest : public ::testing::Test {
// Observer a header with two CSRCs
void TestObserveTwoCsrcs() {
RtpSourceObserver observer =
RtpSourceObserver(dom::RTCStatsTimestampMaker());
RefPtr<RtpSourceObserver> observer =
new RtpSourceObserver(dom::RTCStatsTimestampMaker());
webrtc::RTPHeader header;
constexpr unsigned int ssrc = 239485;
constexpr unsigned int csrc0 = 3425;
@ -291,12 +291,12 @@ class RtpSourcesTest : public ::testing::Test {
header.numCSRCs = 2;
header.arrOfCSRCs[0] = csrc0;
header.arrOfCSRCs[1] = csrc1;
observer.OnRtpPacket(header, jitter);
observer->OnRtpPacket(header, jitter);
// One for the SSRC, two for the CSRCs
EXPECT_EQ(observer.mRtpSources.size(), static_cast<size_t>(3));
EXPECT_EQ(observer->mRtpSources.size(), static_cast<size_t>(3));
nsTArray<dom::RTCRtpSourceEntry> outLevels;
observer.GetRtpSources(outLevels);
observer->GetRtpSources(outLevels);
EXPECT_EQ(outLevels.Length(), static_cast<size_t>(3));
bool ssrcFound = false;
bool csrc0Found = true;
@ -323,8 +323,8 @@ class RtpSourcesTest : public ::testing::Test {
// Observer a header with a CSRC with audio level extension
void TestObserveCsrcWithAudioLevel() {
RtpSourceObserver observer =
RtpSourceObserver(dom::RTCStatsTimestampMaker());
RefPtr<RtpSourceObserver> observer =
new RtpSourceObserver(dom::RTCStatsTimestampMaker());
webrtc::RTPHeader header;
}
};

View File

@ -30,7 +30,7 @@ void RtpSourceObserver::OnRtpPacket(const webrtc::RTPHeader& aHeader,
const uint32_t aJitter) {
DOMHighResTimeStamp jsNow = mTimestampMaker.GetNow();
NS_DispatchToMainThread(NS_NewRunnableFunction(
RefPtr<Runnable> runnable = NS_NewRunnableFunction(
"RtpSourceObserver::OnRtpPacket",
[this, self = RefPtr<RtpSourceObserver>(this), aHeader, aJitter,
jsNow]() {
@ -64,7 +64,15 @@ void RtpSourceObserver::OnRtpPacket(const webrtc::RTPHeader& aHeader,
hist.Insert(jsNow, predictedPlayoutTime, aHeader.timestamp, hasLevel,
level);
}
}));
});
if (NS_IsMainThread()) {
// Code-path for gtests; everything happens on main, and there's no event
// loop.
runnable->Run();
} else {
NS_DispatchToMainThread(runnable);
}
}
void RtpSourceObserver::GetRtpSources(