Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc

Issue 2924033002: TrackObserver DCHECK not on main thread, tests updated. (Closed)
Patch Set: MediaStreamRemoteVideoSourceTest using the signaling thread Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
diff --git a/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc b/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
index c142805c1fc76d2ee4607ef487ae6c6df7ad6f63..1687dbcea21529160c8731635b11c429799b9d1a 100644
--- a/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
+++ b/content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc
@@ -9,6 +9,7 @@
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/synchronization/waitable_event.h"
#include "base/test/scoped_task_environment.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/child/child_process.h"
@@ -45,12 +46,37 @@ class MediaStreamRemoteVideoSourceTest
child_process_(new ChildProcess()),
mock_factory_(new MockPeerConnectionDependencyFactory()),
webrtc_video_track_(MockWebRtcVideoTrack::Create("test")),
- remote_source_(new MediaStreamRemoteVideoSourceUnderTest(
- std::unique_ptr<TrackObserver>(
- new TrackObserver(base::ThreadTaskRunnerHandle::Get(),
- webrtc_video_track_.get())))),
+ remote_source_(nullptr),
number_of_successful_track_starts_(0),
- number_of_failed_track_starts_(0) {
+ number_of_failed_track_starts_(0) {}
+
+ void SetUp() override {
+ scoped_refptr<base::SingleThreadTaskRunner> main_thread =
+ base::ThreadTaskRunnerHandle::Get();
+
+ base::WaitableEvent waitable_event(
+ base::WaitableEvent::ResetPolicy::MANUAL,
+ base::WaitableEvent::InitialState::NOT_SIGNALED);
+
+ std::unique_ptr<TrackObserver> track_observer;
+ mock_factory_->GetWebRtcSignalingThread()->PostTask(
+ FROM_HERE,
+ base::Bind(
+ [](scoped_refptr<base::SingleThreadTaskRunner> main_thread,
+ webrtc::MediaStreamTrackInterface* webrtc_track,
+ std::unique_ptr<TrackObserver>* track_observer,
+ base::WaitableEvent* waitable_event) {
+ track_observer->reset(
+ new TrackObserver(main_thread, webrtc_track));
+ waitable_event->Signal();
+ },
+ main_thread, base::Unretained(webrtc_video_track_.get()),
+ base::Unretained(&track_observer),
+ base::Unretained(&waitable_event)));
+ waitable_event.Wait();
+
+ remote_source_ =
+ new MediaStreamRemoteVideoSourceUnderTest(std::move(track_observer));
webkit_source_.Initialize(blink::WebString::FromASCII("dummy_source_id"),
blink::WebMediaStreamSource::kTypeVideo,
blink::WebString::FromASCII("dummy_source_name"),
@@ -86,7 +112,20 @@ class MediaStreamRemoteVideoSourceTest
}
void StopWebRtcTrack() {
- static_cast<MockWebRtcVideoTrack*>(webrtc_video_track_.get())->SetEnded();
+ base::WaitableEvent waitable_event(
+ base::WaitableEvent::ResetPolicy::MANUAL,
+ base::WaitableEvent::InitialState::NOT_SIGNALED);
+ mock_factory_->GetWebRtcSignalingThread()->PostTask(
+ FROM_HERE, base::Bind(
+ [](MockWebRtcVideoTrack* video_track,
+ base::WaitableEvent* waitable_event) {
+ video_track->SetEnded();
+ waitable_event->Signal();
+ },
+ base::Unretained(static_cast<MockWebRtcVideoTrack*>(
+ webrtc_video_track_.get())),
+ base::Unretained(&waitable_event)));
+ waitable_event.Wait();
}
const blink::WebMediaStreamSource& webkit_source() const {
« no previous file with comments | « content/renderer/media/rtc_peer_connection_handler_unittest.cc ('k') | content/renderer/media/webrtc/track_observer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698