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

Side by Side Diff: content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc

Issue 675013005: Split libjingle's signaling thread from the UI thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update tests, remove circular dependency Created 6 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/thread_task_runner_handle.h"
8 #include "content/child/child_process.h" 9 #include "content/child/child_process.h"
9 #include "content/renderer/media/media_stream_video_track.h" 10 #include "content/renderer/media/media_stream_video_track.h"
10 #include "content/renderer/media/mock_media_stream_video_sink.h" 11 #include "content/renderer/media/mock_media_stream_video_sink.h"
11 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h" 12 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h"
12 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h" 13 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h"
13 #include "media/base/video_frame.h" 14 #include "media/base/video_frame.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/WebKit/public/web/WebHeap.h" 16 #include "third_party/WebKit/public/web/WebHeap.h"
16 #include "third_party/libjingle/source/talk/media/webrtc/webrtcvideoframe.h" 17 #include "third_party/libjingle/source/talk/media/webrtc/webrtcvideoframe.h"
17 18
18 namespace content { 19 namespace content {
19 20
20 ACTION_P(RunClosure, closure) { 21 ACTION_P(RunClosure, closure) {
21 closure.Run(); 22 closure.Run();
22 } 23 }
23 24
24 class MediaStreamRemoteVideoSourceUnderTest 25 class MediaStreamRemoteVideoSourceUnderTest
25 : public MediaStreamRemoteVideoSource { 26 : public MediaStreamRemoteVideoSource {
26 public: 27 public:
27 MediaStreamRemoteVideoSourceUnderTest(webrtc::VideoTrackInterface* track) 28 MediaStreamRemoteVideoSourceUnderTest(const scoped_refptr<Observer>& observer)
28 : MediaStreamRemoteVideoSource(track) { 29 : MediaStreamRemoteVideoSource(observer) {
29 } 30 }
30 using MediaStreamRemoteVideoSource::RenderInterfaceForTest; 31 using MediaStreamRemoteVideoSource::RenderInterfaceForTest;
31 }; 32 };
32 33
33 class MediaStreamRemoteVideoSourceTest 34 class MediaStreamRemoteVideoSourceTest
34 : public ::testing::Test { 35 : public ::testing::Test {
35 public: 36 public:
36 MediaStreamRemoteVideoSourceTest() 37 MediaStreamRemoteVideoSourceTest()
37 : child_process_(new ChildProcess()), 38 : child_process_(new ChildProcess()),
38 mock_factory_(new MockPeerConnectionDependencyFactory()), 39 mock_factory_(new MockPeerConnectionDependencyFactory()),
39 webrtc_video_track_(mock_factory_->CreateLocalVideoTrack( 40 webrtc_video_track_(mock_factory_->CreateLocalVideoTrack(
40 "test", 41 "test",
41 static_cast<cricket::VideoCapturer*>(NULL))), 42 static_cast<cricket::VideoCapturer*>(NULL))),
42 remote_source_(new MediaStreamRemoteVideoSourceUnderTest( 43 observer_(new MediaStreamRemoteVideoSource::Observer(
43 webrtc_video_track_.get())), 44 base::ThreadTaskRunnerHandle::Get(), webrtc_video_track_.get())),
45 remote_source_(new MediaStreamRemoteVideoSourceUnderTest(observer_)),
44 number_of_successful_constraints_applied_(0), 46 number_of_successful_constraints_applied_(0),
45 number_of_failed_constraints_applied_(0) { 47 number_of_failed_constraints_applied_(0) {
46 webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"), 48 webkit_source_.initialize(base::UTF8ToUTF16("dummy_source_id"),
47 blink::WebMediaStreamSource::TypeVideo, 49 blink::WebMediaStreamSource::TypeVideo,
48 base::UTF8ToUTF16("dummy_source_name")); 50 base::UTF8ToUTF16("dummy_source_name"));
49 webkit_source_.setExtraData(remote_source_); 51 webkit_source_.setExtraData(remote_source_);
50 } 52 }
51 53
52 void TearDown() override { 54 void TearDown() override {
53 webkit_source_.reset(); 55 webkit_source_.reset();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 if (result == MEDIA_DEVICE_OK) 98 if (result == MEDIA_DEVICE_OK)
97 ++number_of_successful_constraints_applied_; 99 ++number_of_successful_constraints_applied_;
98 else 100 else
99 ++number_of_failed_constraints_applied_; 101 ++number_of_failed_constraints_applied_;
100 } 102 }
101 103
102 base::MessageLoopForUI message_loop_; 104 base::MessageLoopForUI message_loop_;
103 scoped_ptr<ChildProcess> child_process_; 105 scoped_ptr<ChildProcess> child_process_;
104 scoped_ptr<MockPeerConnectionDependencyFactory> mock_factory_; 106 scoped_ptr<MockPeerConnectionDependencyFactory> mock_factory_;
105 scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_; 107 scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_;
108 scoped_refptr<MediaStreamRemoteVideoSource::Observer> observer_;
106 // |remote_source_| is owned by |webkit_source_|. 109 // |remote_source_| is owned by |webkit_source_|.
107 MediaStreamRemoteVideoSourceUnderTest* remote_source_; 110 MediaStreamRemoteVideoSourceUnderTest* remote_source_;
108 blink::WebMediaStreamSource webkit_source_; 111 blink::WebMediaStreamSource webkit_source_;
109 int number_of_successful_constraints_applied_; 112 int number_of_successful_constraints_applied_;
110 int number_of_failed_constraints_applied_; 113 int number_of_failed_constraints_applied_;
111 }; 114 };
112 115
113 TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) { 116 TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) {
114 scoped_ptr<MediaStreamVideoTrack> track(CreateTrack()); 117 scoped_ptr<MediaStreamVideoTrack> track(CreateTrack());
115 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 118 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
(...skipping 15 matching lines...) Expand all
131 134
132 TEST_F(MediaStreamRemoteVideoSourceTest, RemoteTrackStop) { 135 TEST_F(MediaStreamRemoteVideoSourceTest, RemoteTrackStop) {
133 scoped_ptr<MediaStreamVideoTrack> track(CreateTrack()); 136 scoped_ptr<MediaStreamVideoTrack> track(CreateTrack());
134 137
135 MockMediaStreamVideoSink sink; 138 MockMediaStreamVideoSink sink;
136 track->AddSink(&sink, sink.GetDeliverFrameCB()); 139 track->AddSink(&sink, sink.GetDeliverFrameCB());
137 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink.state()); 140 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, sink.state());
138 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 141 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
139 webkit_source().readyState()); 142 webkit_source().readyState());
140 StopWebRtcTrack(); 143 StopWebRtcTrack();
144 base::RunLoop().RunUntilIdle();
141 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 145 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
142 webkit_source().readyState()); 146 webkit_source().readyState());
143 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state()); 147 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, sink.state());
144 148
145 track->RemoveSink(&sink); 149 track->RemoveSink(&sink);
146 } 150 }
147 151
148 } // namespace content 152 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698