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

Side by Side Diff: content/renderer/media/rtc_peer_connection_handler_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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h"
10 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
11 #include "base/values.h" 12 #include "base/values.h"
12 #include "content/child/child_process.h" 13 #include "content/child/child_process.h"
13 #include "content/renderer/media/media_stream.h" 14 #include "content/renderer/media/media_stream.h"
14 #include "content/renderer/media/media_stream_audio_source.h" 15 #include "content/renderer/media/media_stream_audio_source.h"
15 #include "content/renderer/media/media_stream_source.h" 16 #include "content/renderer/media/media_stream_source.h"
16 #include "content/renderer/media/media_stream_video_track.h" 17 #include "content/renderer/media/media_stream_video_track.h"
18 #include "content/renderer/media/mock_media_constraint_factory.h"
17 #include "content/renderer/media/mock_media_stream_video_source.h" 19 #include "content/renderer/media/mock_media_stream_video_source.h"
18 #include "content/renderer/media/mock_peer_connection_impl.h" 20 #include "content/renderer/media/mock_peer_connection_impl.h"
19 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h" 21 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h"
20 #include "content/renderer/media/peer_connection_tracker.h" 22 #include "content/renderer/media/peer_connection_tracker.h"
21 #include "content/renderer/media/rtc_media_constraints.h" 23 #include "content/renderer/media/rtc_media_constraints.h"
22 #include "content/renderer/media/rtc_peer_connection_handler.h" 24 #include "content/renderer/media/rtc_peer_connection_handler.h"
23 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h" 25 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h"
24 #include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" 26 #include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h"
25 #include "content/renderer/media/webrtc_audio_capturer.h" 27 #include "content/renderer/media/webrtc_local_audio_track.h"
26 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
27 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
28 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 30 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
29 #include "third_party/WebKit/public/platform/WebMediaStream.h" 31 #include "third_party/WebKit/public/platform/WebMediaStream.h"
30 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" 32 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
31 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 33 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
32 #include "third_party/WebKit/public/platform/WebRTCConfiguration.h" 34 #include "third_party/WebKit/public/platform/WebRTCConfiguration.h"
33 #include "third_party/WebKit/public/platform/WebRTCDTMFSenderHandler.h" 35 #include "third_party/WebKit/public/platform/WebRTCDTMFSenderHandler.h"
34 #include "third_party/WebKit/public/platform/WebRTCDataChannelHandler.h" 36 #include "third_party/WebKit/public/platform/WebRTCDataChannelHandler.h"
35 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" 37 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h"
36 #include "third_party/WebKit/public/platform/WebRTCICECandidate.h" 38 #include "third_party/WebKit/public/platform/WebRTCICECandidate.h"
37 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h " 39 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h "
38 #include "third_party/WebKit/public/platform/WebRTCSessionDescription.h" 40 #include "third_party/WebKit/public/platform/WebRTCSessionDescription.h"
39 #include "third_party/WebKit/public/platform/WebRTCSessionDescriptionRequest.h" 41 #include "third_party/WebKit/public/platform/WebRTCSessionDescriptionRequest.h"
40 #include "third_party/WebKit/public/platform/WebRTCStatsRequest.h" 42 #include "third_party/WebKit/public/platform/WebRTCStatsRequest.h"
41 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" 43 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h"
42 #include "third_party/WebKit/public/platform/WebURL.h" 44 #include "third_party/WebKit/public/platform/WebURL.h"
43 #include "third_party/WebKit/public/web/WebHeap.h" 45 #include "third_party/WebKit/public/web/WebHeap.h"
44 #include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h " 46 #include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h "
45 47
46 static const char kDummySdp[] = "dummy sdp"; 48 static const char kDummySdp[] = "dummy sdp";
47 static const char kDummySdpType[] = "dummy type"; 49 static const char kDummySdpType[] = "dummy type";
48 50
49 using blink::WebRTCPeerConnectionHandlerClient; 51 using blink::WebRTCPeerConnectionHandlerClient;
50 using testing::NiceMock; 52 using testing::NiceMock;
51 using testing::_; 53 using testing::_;
52 using testing::Ref; 54 using testing::Ref;
55 using testing::SaveArg;
53 56
54 namespace content { 57 namespace content {
55 58
59 ACTION_P2(ExitMessageLoop, message_loop, quit_closure) {
60 message_loop->PostTask(FROM_HERE, quit_closure);
61 }
62
56 class MockRTCStatsResponse : public LocalRTCStatsResponse { 63 class MockRTCStatsResponse : public LocalRTCStatsResponse {
57 public: 64 public:
58 MockRTCStatsResponse() 65 MockRTCStatsResponse()
59 : report_count_(0), 66 : report_count_(0),
60 statistic_count_(0) { 67 statistic_count_(0) {
61 } 68 }
62 69
63 size_t addReport(blink::WebString type, 70 size_t addReport(blink::WebString type,
64 blink::WebString id, 71 blink::WebString id,
65 double timestamp) override { 72 double timestamp) override {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 public: 132 public:
126 MOCK_METHOD1(UnregisterPeerConnection, 133 MOCK_METHOD1(UnregisterPeerConnection,
127 void(RTCPeerConnectionHandler* pc_handler)); 134 void(RTCPeerConnectionHandler* pc_handler));
128 // TODO(jiayl): add coverage for the following methods 135 // TODO(jiayl): add coverage for the following methods
129 MOCK_METHOD2(TrackCreateOffer, 136 MOCK_METHOD2(TrackCreateOffer,
130 void(RTCPeerConnectionHandler* pc_handler, 137 void(RTCPeerConnectionHandler* pc_handler,
131 const RTCMediaConstraints& constraints)); 138 const RTCMediaConstraints& constraints));
132 MOCK_METHOD2(TrackCreateAnswer, 139 MOCK_METHOD2(TrackCreateAnswer,
133 void(RTCPeerConnectionHandler* pc_handler, 140 void(RTCPeerConnectionHandler* pc_handler,
134 const RTCMediaConstraints& constraints)); 141 const RTCMediaConstraints& constraints));
135 MOCK_METHOD3(TrackSetSessionDescription, 142 MOCK_METHOD4(TrackSetSessionDescription,
136 void(RTCPeerConnectionHandler* pc_handler, 143 void(RTCPeerConnectionHandler* pc_handler,
137 const blink::WebRTCSessionDescription& desc, 144 const std::string& sdp, const std::string& type,
138 Source source)); 145 Source source));
139 MOCK_METHOD3( 146 MOCK_METHOD3(
140 TrackUpdateIce, 147 TrackUpdateIce,
141 void(RTCPeerConnectionHandler* pc_handler, 148 void(RTCPeerConnectionHandler* pc_handler,
142 const webrtc::PeerConnectionInterface::RTCConfiguration& config, 149 const webrtc::PeerConnectionInterface::RTCConfiguration& config,
143 const RTCMediaConstraints& options)); 150 const RTCMediaConstraints& options));
144 MOCK_METHOD4(TrackAddIceCandidate, 151 MOCK_METHOD4(TrackAddIceCandidate,
145 void(RTCPeerConnectionHandler* pc_handler, 152 void(RTCPeerConnectionHandler* pc_handler,
146 const blink::WebRTCICECandidate& candidate, 153 const blink::WebRTCICECandidate& candidate,
147 Source source, 154 Source source,
(...skipping 28 matching lines...) Expand all
176 void(RTCPeerConnectionHandler* pc_handler)); 183 void(RTCPeerConnectionHandler* pc_handler));
177 MOCK_METHOD2(TrackCreateDTMFSender, 184 MOCK_METHOD2(TrackCreateDTMFSender,
178 void(RTCPeerConnectionHandler* pc_handler, 185 void(RTCPeerConnectionHandler* pc_handler,
179 const blink::WebMediaStreamTrack& track)); 186 const blink::WebMediaStreamTrack& track));
180 }; 187 };
181 188
182 class RTCPeerConnectionHandlerUnderTest : public RTCPeerConnectionHandler { 189 class RTCPeerConnectionHandlerUnderTest : public RTCPeerConnectionHandler {
183 public: 190 public:
184 RTCPeerConnectionHandlerUnderTest( 191 RTCPeerConnectionHandlerUnderTest(
185 WebRTCPeerConnectionHandlerClient* client, 192 WebRTCPeerConnectionHandlerClient* client,
186 PeerConnectionDependencyFactory* dependency_factory) 193 PeerConnectionDependencyFactory* dependency_factory,
187 : RTCPeerConnectionHandler(client, dependency_factory) { 194 const scoped_refptr<base::SingleThreadTaskRunner>& signaling_thread)
195 : RTCPeerConnectionHandler(client, dependency_factory, signaling_thread) {
188 } 196 }
189 197
190 MockPeerConnectionImpl* native_peer_connection() { 198 MockPeerConnectionImpl* native_peer_connection() {
191 return static_cast<MockPeerConnectionImpl*>( 199 return static_cast<MockPeerConnectionImpl*>(
192 RTCPeerConnectionHandler::native_peer_connection()); 200 RTCPeerConnectionHandler::native_peer_connection());
193 } 201 }
202
203 webrtc::PeerConnectionObserver* observer() {
204 return native_peer_connection()->observer();
205 }
194 }; 206 };
195 207
196 class RTCPeerConnectionHandlerTest : public ::testing::Test { 208 class RTCPeerConnectionHandlerTest : public ::testing::Test {
197 public: 209 public:
198 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) { 210 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) {
199 child_process_.reset(new ChildProcess()); 211 child_process_.reset(new ChildProcess());
200 } 212 }
201 213
202 void SetUp() override { 214 void SetUp() override {
203 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>()); 215 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>());
204 mock_dependency_factory_.reset(new MockPeerConnectionDependencyFactory()); 216 mock_dependency_factory_.reset(new MockPeerConnectionDependencyFactory());
205 pc_handler_.reset( 217 pc_handler_.reset(
206 new RTCPeerConnectionHandlerUnderTest(mock_client_.get(), 218 new RTCPeerConnectionHandlerUnderTest(
207 mock_dependency_factory_.get())); 219 mock_client_.get(), mock_dependency_factory_.get(),
220 message_loop_.message_loop_proxy()));
208 mock_tracker_.reset(new NiceMock<MockPeerConnectionTracker>()); 221 mock_tracker_.reset(new NiceMock<MockPeerConnectionTracker>());
209 blink::WebRTCConfiguration config; 222 blink::WebRTCConfiguration config;
210 blink::WebMediaConstraints constraints; 223 blink::WebMediaConstraints constraints;
211 EXPECT_TRUE(pc_handler_->InitializeForTest(config, constraints, 224 EXPECT_TRUE(pc_handler_->InitializeForTest(config, constraints,
212 mock_tracker_.get())); 225 mock_tracker_.get()));
213 226
214 mock_peer_connection_ = pc_handler_->native_peer_connection(); 227 mock_peer_connection_ = pc_handler_->native_peer_connection();
215 ASSERT_TRUE(mock_peer_connection_); 228 ASSERT_TRUE(mock_peer_connection_);
216 } 229 }
217 230
(...skipping 20 matching lines...) Expand all
238 video_source.initialize(blink::WebString::fromUTF8(video_track_label), 251 video_source.initialize(blink::WebString::fromUTF8(video_track_label),
239 blink::WebMediaStreamSource::TypeVideo, 252 blink::WebMediaStreamSource::TypeVideo,
240 blink::WebString::fromUTF8("video_track")); 253 blink::WebString::fromUTF8("video_track"));
241 MockMediaStreamVideoSource* native_video_source = 254 MockMediaStreamVideoSource* native_video_source =
242 new MockMediaStreamVideoSource(false); 255 new MockMediaStreamVideoSource(false);
243 video_source.setExtraData(native_video_source); 256 video_source.setExtraData(native_video_source);
244 257
245 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks( 258 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks(
246 static_cast<size_t>(1)); 259 static_cast<size_t>(1));
247 audio_tracks[0].initialize(audio_source.id(), audio_source); 260 audio_tracks[0].initialize(audio_source.id(), audio_source);
248 audio_tracks[0].setExtraData( 261 StreamDeviceInfo device_info(MEDIA_DEVICE_AUDIO_CAPTURE, "Mock device",
249 new MediaStreamTrack( 262 "mock_device_id");
250 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, 263 MockMediaConstraintFactory constraint_factory;
251 NULL), 264 const blink::WebMediaConstraints constraints =
252 true)); 265 constraint_factory.CreateWebMediaConstraints();
266 scoped_refptr<WebRtcAudioCapturer> capturer(
267 WebRtcAudioCapturer::CreateCapturer(
268 -1, device_info, constraints, nullptr, nullptr));
269 scoped_refptr<WebRtcLocalAudioTrackAdapter> adapter(
270 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, nullptr));
271 scoped_ptr<WebRtcLocalAudioTrack> native_track(
272 new WebRtcLocalAudioTrack(adapter.get(), capturer, nullptr));
273 audio_tracks[0].setExtraData(native_track.release());
253 blink::WebVector<blink::WebMediaStreamTrack> video_tracks( 274 blink::WebVector<blink::WebMediaStreamTrack> video_tracks(
254 static_cast<size_t>(1)); 275 static_cast<size_t>(1));
255 blink::WebMediaConstraints constraints; 276 blink::WebMediaConstraints video_constraints;
256 constraints.initialize(); 277 video_constraints.initialize();
257 video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack( 278 video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack(
258 native_video_source, constraints, 279 native_video_source, video_constraints,
259 MediaStreamVideoSource::ConstraintsCallback(), true); 280 MediaStreamVideoSource::ConstraintsCallback(), true);
260 281
261 blink::WebMediaStream local_stream; 282 blink::WebMediaStream local_stream;
262 local_stream.initialize(base::UTF8ToUTF16(stream_label), audio_tracks, 283 local_stream.initialize(base::UTF8ToUTF16(stream_label), audio_tracks,
263 video_tracks); 284 video_tracks);
264 local_stream.setExtraData( 285 local_stream.setExtraData(
265 new MediaStream(local_stream)); 286 new MediaStream(local_stream));
266 return local_stream; 287 return local_stream;
267 } 288 }
268 289
269 // Creates a remote MediaStream and adds it to the mocked native 290 // Creates a remote MediaStream and adds it to the mocked native
270 // peer connection. 291 // peer connection.
271 scoped_refptr<webrtc::MediaStreamInterface> 292 scoped_refptr<webrtc::MediaStreamInterface>
272 AddRemoteMockMediaStream(const std::string& stream_label, 293 AddRemoteMockMediaStream(const std::string& stream_label,
273 const std::string& video_track_label, 294 const std::string& video_track_label,
274 const std::string& audio_track_label) { 295 const std::string& audio_track_label) {
275 scoped_refptr<webrtc::MediaStreamInterface> stream( 296 scoped_refptr<webrtc::MediaStreamInterface> stream(
276 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); 297 mock_dependency_factory_->CreateLocalMediaStream(stream_label));
277 if (!video_track_label.empty()) { 298 if (!video_track_label.empty()) {
278 webrtc::VideoSourceInterface* source = NULL; 299 webrtc::VideoSourceInterface* source = NULL;
279 scoped_refptr<webrtc::VideoTrackInterface> video_track( 300 scoped_refptr<webrtc::VideoTrackInterface> video_track(
280 mock_dependency_factory_->CreateLocalVideoTrack( 301 mock_dependency_factory_->CreateLocalVideoTrack(
281 video_track_label, source)); 302 video_track_label, source));
282 stream->AddTrack(video_track.get()); 303 stream->AddTrack(video_track.get());
283 } 304 }
284 if (!audio_track_label.empty()) { 305 if (!audio_track_label.empty()) {
285 scoped_refptr<WebRtcAudioCapturer> capturer;
286 scoped_refptr<webrtc::AudioTrackInterface> audio_track( 306 scoped_refptr<webrtc::AudioTrackInterface> audio_track(
287 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, NULL)); 307 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, NULL));
288 stream->AddTrack(audio_track.get()); 308 stream->AddTrack(audio_track.get());
289 } 309 }
290 mock_peer_connection_->AddRemoteStream(stream.get()); 310 mock_peer_connection_->AddRemoteStream(stream.get());
291 return stream; 311 return stream;
292 } 312 }
293 313
294 base::MessageLoop message_loop_; 314 base::MessageLoop message_loop_;
295 scoped_ptr<ChildProcess> child_process_; 315 scoped_ptr<ChildProcess> child_process_;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 } 354 }
335 355
336 TEST_F(RTCPeerConnectionHandlerTest, setLocalDescription) { 356 TEST_F(RTCPeerConnectionHandlerTest, setLocalDescription) {
337 blink::WebRTCVoidRequest request; 357 blink::WebRTCVoidRequest request;
338 blink::WebRTCSessionDescription description; 358 blink::WebRTCSessionDescription description;
339 description.initialize(kDummySdpType, kDummySdp); 359 description.initialize(kDummySdpType, kDummySdp);
340 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 360 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
341 // before |mock_peer_connection| is called. 361 // before |mock_peer_connection| is called.
342 testing::InSequence sequence; 362 testing::InSequence sequence;
343 EXPECT_CALL(*mock_tracker_.get(), 363 EXPECT_CALL(*mock_tracker_.get(),
344 TrackSetSessionDescription(pc_handler_.get(), Ref(description), 364 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
365 kDummySdpType,
345 PeerConnectionTracker::SOURCE_LOCAL)); 366 PeerConnectionTracker::SOURCE_LOCAL));
346 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _)); 367 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _));
347 368
348 pc_handler_->setLocalDescription(request, description); 369 pc_handler_->setLocalDescription(request, description);
349 EXPECT_EQ(description.type(), pc_handler_->localDescription().type()); 370 EXPECT_EQ(description.type(), pc_handler_->localDescription().type());
350 EXPECT_EQ(description.sdp(), pc_handler_->localDescription().sdp()); 371 EXPECT_EQ(description.sdp(), pc_handler_->localDescription().sdp());
351 372
352 std::string sdp_string; 373 std::string sdp_string;
353 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL); 374 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL);
354 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type()); 375 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type());
355 mock_peer_connection_->local_description()->ToString(&sdp_string); 376 mock_peer_connection_->local_description()->ToString(&sdp_string);
356 EXPECT_EQ(kDummySdp, sdp_string); 377 EXPECT_EQ(kDummySdp, sdp_string);
357 } 378 }
358 379
359 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) { 380 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) {
360 blink::WebRTCVoidRequest request; 381 blink::WebRTCVoidRequest request;
361 blink::WebRTCSessionDescription description; 382 blink::WebRTCSessionDescription description;
362 description.initialize(kDummySdpType, kDummySdp); 383 description.initialize(kDummySdpType, kDummySdp);
363 384
364 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 385 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
365 // before |mock_peer_connection| is called. 386 // before |mock_peer_connection| is called.
366 testing::InSequence sequence; 387 testing::InSequence sequence;
367 EXPECT_CALL(*mock_tracker_.get(), 388 EXPECT_CALL(*mock_tracker_.get(),
368 TrackSetSessionDescription(pc_handler_.get(), Ref(description), 389 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
390 kDummySdpType,
369 PeerConnectionTracker::SOURCE_REMOTE)); 391 PeerConnectionTracker::SOURCE_REMOTE));
370 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _)); 392 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _));
371 393
372 pc_handler_->setRemoteDescription(request, description); 394 pc_handler_->setRemoteDescription(request, description);
373 EXPECT_EQ(description.type(), pc_handler_->remoteDescription().type()); 395 EXPECT_EQ(description.type(), pc_handler_->remoteDescription().type());
374 EXPECT_EQ(description.sdp(), pc_handler_->remoteDescription().sdp()); 396 EXPECT_EQ(description.sdp(), pc_handler_->remoteDescription().sdp());
375 397
376 std::string sdp_string; 398 std::string sdp_string;
377 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL); 399 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL);
378 EXPECT_EQ(kDummySdpType, mock_peer_connection_->remote_description()->type()); 400 EXPECT_EQ(kDummySdpType, mock_peer_connection_->remote_description()->type());
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 mock_peer_connection_->local_streams()->at(0)->GetAudioTracks().size()); 482 mock_peer_connection_->local_streams()->at(0)->GetAudioTracks().size());
461 EXPECT_EQ( 483 EXPECT_EQ(
462 1u, 484 1u,
463 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size()); 485 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size());
464 } 486 }
465 487
466 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) { 488 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) {
467 scoped_refptr<MockRTCStatsRequest> request( 489 scoped_refptr<MockRTCStatsRequest> request(
468 new rtc::RefCountedObject<MockRTCStatsRequest>()); 490 new rtc::RefCountedObject<MockRTCStatsRequest>());
469 pc_handler_->getStats(request.get()); 491 pc_handler_->getStats(request.get());
470 // Note that callback gets executed synchronously by mock. 492 base::RunLoop().RunUntilIdle();
471 ASSERT_TRUE(request->result()); 493 ASSERT_TRUE(request->result());
472 EXPECT_LT(1, request->result()->report_count()); 494 EXPECT_LT(1, request->result()->report_count());
473 } 495 }
474 496
475 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) { 497 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
476 scoped_refptr<MockRTCStatsRequest> request( 498 scoped_refptr<MockRTCStatsRequest> request(
477 new rtc::RefCountedObject<MockRTCStatsRequest>()); 499 new rtc::RefCountedObject<MockRTCStatsRequest>());
478 pc_handler_->stop(); 500 pc_handler_->stop();
479 pc_handler_->getStats(request.get()); 501 pc_handler_->getStats(request.get());
480 // Note that callback gets executed synchronously by mock. 502 base::RunLoop().RunUntilIdle();
481 ASSERT_TRUE(request->result()); 503 ASSERT_TRUE(request->result());
482 EXPECT_LT(1, request->result()->report_count()); 504 EXPECT_LT(1, request->result()->report_count());
483 } 505 }
484 506
485 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { 507 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
486 blink::WebMediaStream local_stream( 508 blink::WebMediaStream local_stream(
487 CreateLocalMediaStream("local_stream")); 509 CreateLocalMediaStream("local_stream"));
488 blink::WebMediaConstraints constraints; 510 blink::WebMediaConstraints constraints;
489 pc_handler_->addStream(local_stream, constraints); 511 pc_handler_->addStream(local_stream, constraints);
490 blink::WebVector<blink::WebMediaStreamTrack> tracks; 512 blink::WebVector<blink::WebMediaStreamTrack> tracks;
491 local_stream.audioTracks(tracks); 513 local_stream.audioTracks(tracks);
492 ASSERT_LE(1ul, tracks.size()); 514 ASSERT_LE(1ul, tracks.size());
493 515
494 scoped_refptr<MockRTCStatsRequest> request( 516 scoped_refptr<MockRTCStatsRequest> request(
495 new rtc::RefCountedObject<MockRTCStatsRequest>()); 517 new rtc::RefCountedObject<MockRTCStatsRequest>());
496 request->setSelector(tracks[0]); 518 request->setSelector(tracks[0]);
497 pc_handler_->getStats(request.get()); 519 pc_handler_->getStats(request.get());
520 base::RunLoop().RunUntilIdle();
498 EXPECT_EQ(1, request->result()->report_count()); 521 EXPECT_EQ(1, request->result()->report_count());
499 } 522 }
500 523
501 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { 524 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
502 scoped_refptr<webrtc::MediaStreamInterface> stream( 525 scoped_refptr<webrtc::MediaStreamInterface> stream(
503 AddRemoteMockMediaStream("remote_stream", "video", "audio")); 526 AddRemoteMockMediaStream("remote_stream", "video", "audio"));
504 pc_handler_->OnAddStream(stream.get()); 527 pc_handler_->observer()->OnAddStream(stream.get());
528 base::RunLoop().RunUntilIdle();
505 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream(); 529 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream();
506 530
507 blink::WebVector<blink::WebMediaStreamTrack> tracks; 531 blink::WebVector<blink::WebMediaStreamTrack> tracks;
508 remote_stream.audioTracks(tracks); 532 remote_stream.audioTracks(tracks);
509 ASSERT_LE(1ul, tracks.size()); 533 ASSERT_LE(1ul, tracks.size());
510 534
511 scoped_refptr<MockRTCStatsRequest> request( 535 scoped_refptr<MockRTCStatsRequest> request(
512 new rtc::RefCountedObject<MockRTCStatsRequest>()); 536 new rtc::RefCountedObject<MockRTCStatsRequest>());
513 request->setSelector(tracks[0]); 537 request->setSelector(tracks[0]);
514 pc_handler_->getStats(request.get()); 538 pc_handler_->getStats(request.get());
539 base::RunLoop().RunUntilIdle();
515 EXPECT_EQ(1, request->result()->report_count()); 540 EXPECT_EQ(1, request->result()->report_count());
516 } 541 }
517 542
518 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) { 543 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
519 // The setup is the same as GetStatsWithLocalSelector, but the stream is not 544 // The setup is the same as GetStatsWithLocalSelector, but the stream is not
520 // added to the PeerConnection. 545 // added to the PeerConnection.
521 blink::WebMediaStream local_stream( 546 blink::WebMediaStream local_stream(
522 CreateLocalMediaStream("local_stream_2")); 547 CreateLocalMediaStream("local_stream_2"));
523 blink::WebMediaConstraints constraints; 548 blink::WebMediaConstraints constraints;
524 blink::WebVector<blink::WebMediaStreamTrack> tracks; 549 blink::WebVector<blink::WebMediaStreamTrack> tracks;
525 550
526 local_stream.audioTracks(tracks); 551 local_stream.audioTracks(tracks);
527 blink::WebMediaStreamTrack component = tracks[0]; 552 blink::WebMediaStreamTrack component = tracks[0];
528 mock_peer_connection_->SetGetStatsResult(false); 553 mock_peer_connection_->SetGetStatsResult(false);
529 554
530 scoped_refptr<MockRTCStatsRequest> request( 555 scoped_refptr<MockRTCStatsRequest> request(
531 new rtc::RefCountedObject<MockRTCStatsRequest>()); 556 new rtc::RefCountedObject<MockRTCStatsRequest>());
532 request->setSelector(component); 557 request->setSelector(component);
533 pc_handler_->getStats(request.get()); 558 pc_handler_->getStats(request.get());
559 base::RunLoop().RunUntilIdle();
534 EXPECT_EQ(0, request->result()->report_count()); 560 EXPECT_EQ(0, request->result()->report_count());
535 } 561 }
536 562
537 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) { 563 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
538 testing::InSequence sequence; 564 testing::InSequence sequence;
539 565
540 webrtc::PeerConnectionInterface::SignalingState new_state = 566 webrtc::PeerConnectionInterface::SignalingState new_state =
541 webrtc::PeerConnectionInterface::kHaveRemoteOffer; 567 webrtc::PeerConnectionInterface::kHaveRemoteOffer;
542 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 568 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
543 pc_handler_.get(), 569 pc_handler_.get(),
544 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 570 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
545 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 571 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
546 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 572 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
547 pc_handler_->OnSignalingChange(new_state); 573 pc_handler_->observer()->OnSignalingChange(new_state);
548 574
549 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer; 575 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer;
550 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 576 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
551 pc_handler_.get(), 577 pc_handler_.get(),
552 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 578 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
553 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 579 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
554 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 580 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
555 pc_handler_->OnSignalingChange(new_state); 581 pc_handler_->observer()->OnSignalingChange(new_state);
556 582
557 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer; 583 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer;
558 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 584 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
559 pc_handler_.get(), 585 pc_handler_.get(),
560 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 586 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
561 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 587 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
562 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 588 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
563 pc_handler_->OnSignalingChange(new_state); 589 pc_handler_->observer()->OnSignalingChange(new_state);
564 590
565 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer; 591 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer;
566 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 592 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
567 pc_handler_.get(), 593 pc_handler_.get(),
568 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 594 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
569 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 595 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
570 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 596 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
571 pc_handler_->OnSignalingChange(new_state); 597 pc_handler_->observer()->OnSignalingChange(new_state);
572 598
573 new_state = webrtc::PeerConnectionInterface::kClosed; 599 new_state = webrtc::PeerConnectionInterface::kClosed;
574 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 600 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
575 pc_handler_.get(), 601 pc_handler_.get(),
576 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 602 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
577 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 603 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
578 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 604 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
579 pc_handler_->OnSignalingChange(new_state); 605 pc_handler_->observer()->OnSignalingChange(new_state);
580 } 606 }
581 607
582 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) { 608 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
583 testing::InSequence sequence; 609 testing::InSequence sequence;
584 610
585 webrtc::PeerConnectionInterface::IceConnectionState new_state = 611 webrtc::PeerConnectionInterface::IceConnectionState new_state =
586 webrtc::PeerConnectionInterface::kIceConnectionNew; 612 webrtc::PeerConnectionInterface::kIceConnectionNew;
587 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 613 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
588 pc_handler_.get(), 614 pc_handler_.get(),
589 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 615 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
590 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 616 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
591 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 617 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
592 pc_handler_->OnIceConnectionChange(new_state); 618 pc_handler_->observer()->OnIceConnectionChange(new_state);
593 619
594 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking; 620 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking;
595 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 621 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
596 pc_handler_.get(), 622 pc_handler_.get(),
597 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 623 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
598 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 624 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
599 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 625 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
600 pc_handler_->OnIceConnectionChange(new_state); 626 pc_handler_->observer()->OnIceConnectionChange(new_state);
601 627
602 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected; 628 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected;
603 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 629 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
604 pc_handler_.get(), 630 pc_handler_.get(),
605 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 631 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
606 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 632 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
607 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 633 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
608 pc_handler_->OnIceConnectionChange(new_state); 634 pc_handler_->observer()->OnIceConnectionChange(new_state);
609 635
610 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted; 636 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted;
611 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 637 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
612 pc_handler_.get(), 638 pc_handler_.get(),
613 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 639 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
614 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 640 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
615 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 641 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
616 pc_handler_->OnIceConnectionChange(new_state); 642 pc_handler_->observer()->OnIceConnectionChange(new_state);
617 643
618 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed; 644 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed;
619 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 645 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
620 pc_handler_.get(), 646 pc_handler_.get(),
621 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 647 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
622 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 648 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
623 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 649 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
624 pc_handler_->OnIceConnectionChange(new_state); 650 pc_handler_->observer()->OnIceConnectionChange(new_state);
625 651
626 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected; 652 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected;
627 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 653 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
628 pc_handler_.get(), 654 pc_handler_.get(),
629 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 655 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
630 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 656 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
631 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 657 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
632 pc_handler_->OnIceConnectionChange(new_state); 658 pc_handler_->observer()->OnIceConnectionChange(new_state);
633 659
634 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed; 660 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed;
635 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 661 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
636 pc_handler_.get(), 662 pc_handler_.get(),
637 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 663 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
638 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 664 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
639 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 665 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
640 pc_handler_->OnIceConnectionChange(new_state); 666 pc_handler_->observer()->OnIceConnectionChange(new_state);
641 } 667 }
642 668
643 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) { 669 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) {
644 testing::InSequence sequence; 670 testing::InSequence sequence;
645 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 671 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
646 pc_handler_.get(), 672 pc_handler_.get(),
647 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 673 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
648 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 674 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
649 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 675 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
650 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 676 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
651 pc_handler_.get(), 677 pc_handler_.get(),
652 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 678 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
653 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 679 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
654 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 680 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
655 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 681 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
656 pc_handler_.get(), 682 pc_handler_.get(),
657 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 683 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
658 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 684 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
659 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 685 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
660 686
661 webrtc::PeerConnectionInterface::IceGatheringState new_state = 687 webrtc::PeerConnectionInterface::IceGatheringState new_state =
662 webrtc::PeerConnectionInterface::kIceGatheringNew; 688 webrtc::PeerConnectionInterface::kIceGatheringNew;
663 pc_handler_->OnIceGatheringChange(new_state); 689 pc_handler_->observer()->OnIceGatheringChange(new_state);
664 690
665 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering; 691 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering;
666 pc_handler_->OnIceGatheringChange(new_state); 692 pc_handler_->observer()->OnIceGatheringChange(new_state);
667 693
668 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete; 694 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete;
669 pc_handler_->OnIceGatheringChange(new_state); 695 pc_handler_->observer()->OnIceGatheringChange(new_state);
670 696
671 // Check NULL candidate after ice gathering is completed. 697 // Check NULL candidate after ice gathering is completed.
672 EXPECT_EQ("", mock_client_->candidate_mid()); 698 EXPECT_EQ("", mock_client_->candidate_mid());
673 EXPECT_EQ(-1, mock_client_->candidate_mlineindex()); 699 EXPECT_EQ(-1, mock_client_->candidate_mlineindex());
674 EXPECT_EQ("", mock_client_->candidate_sdp()); 700 EXPECT_EQ("", mock_client_->candidate_sdp());
675 } 701 }
676 702
677 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) { 703 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) {
678 std::string remote_stream_label("remote_stream"); 704 std::string remote_stream_label("remote_stream");
679 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 705 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
(...skipping 11 matching lines...) Expand all
691 717
692 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream( 718 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream(
693 pc_handler_.get(), 719 pc_handler_.get(),
694 testing::Property(&blink::WebMediaStream::id, 720 testing::Property(&blink::WebMediaStream::id,
695 base::UTF8ToUTF16(remote_stream_label)), 721 base::UTF8ToUTF16(remote_stream_label)),
696 PeerConnectionTracker::SOURCE_REMOTE)); 722 PeerConnectionTracker::SOURCE_REMOTE));
697 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( 723 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream(
698 testing::Property(&blink::WebMediaStream::id, 724 testing::Property(&blink::WebMediaStream::id,
699 base::UTF8ToUTF16(remote_stream_label)))); 725 base::UTF8ToUTF16(remote_stream_label))));
700 726
701 pc_handler_->OnAddStream(remote_stream.get()); 727 pc_handler_->observer()->OnAddStream(remote_stream.get());
702 pc_handler_->OnRemoveStream(remote_stream.get()); 728 base::RunLoop().RunUntilIdle();
729 pc_handler_->observer()->OnRemoveStream(remote_stream.get());
730 base::RunLoop().RunUntilIdle();
703 } 731 }
704 732
705 // This test that WebKit is notified about remote track state changes. 733 // This test that WebKit is notified about remote track state changes.
706 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { 734 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
707 std::string remote_stream_label("remote_stream"); 735 std::string remote_stream_label("remote_stream");
708 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 736 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
709 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 737 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
710 738
711 testing::InSequence sequence; 739 testing::InSequence sequence;
712 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 740 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
713 testing::Property(&blink::WebMediaStream::id, 741 testing::Property(&blink::WebMediaStream::id,
714 base::UTF8ToUTF16(remote_stream_label)))); 742 base::UTF8ToUTF16(remote_stream_label))));
715 pc_handler_->OnAddStream(remote_stream.get()); 743 pc_handler_->observer()->OnAddStream(remote_stream.get());
744 base::RunLoop().RunUntilIdle();
716 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 745 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
717 746
718 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 747 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
719 webkit_stream.audioTracks(audio_tracks); 748 webkit_stream.audioTracks(audio_tracks);
720 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 749 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
721 audio_tracks[0].source().readyState()); 750 audio_tracks[0].source().readyState());
722 751
723 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 752 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
724 webkit_stream.videoTracks(video_tracks); 753 webkit_stream.videoTracks(video_tracks);
725 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 754 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
726 video_tracks[0].source().readyState()); 755 video_tracks[0].source().readyState());
727 756
728 remote_stream->GetAudioTracks()[0]->set_state( 757 remote_stream->GetAudioTracks()[0]->set_state(
729 webrtc::MediaStreamTrackInterface::kEnded); 758 webrtc::MediaStreamTrackInterface::kEnded);
759 base::RunLoop().RunUntilIdle();
730 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 760 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
731 audio_tracks[0].source().readyState()); 761 audio_tracks[0].source().readyState());
732 762
733 remote_stream->GetVideoTracks()[0]->set_state( 763 remote_stream->GetVideoTracks()[0]->set_state(
734 webrtc::MediaStreamTrackInterface::kEnded); 764 webrtc::MediaStreamTrackInterface::kEnded);
765 base::RunLoop().RunUntilIdle();
735 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 766 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
736 video_tracks[0].source().readyState()); 767 video_tracks[0].source().readyState());
737 } 768 }
738 769
739 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { 770 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
740 std::string remote_stream_label("remote_stream"); 771 std::string remote_stream_label("remote_stream");
772 base::RunLoop run_loop;
773
774 // Grab the added media stream when it's been successfully added to the PC.
775 blink::WebMediaStream webkit_stream;
776 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
777 testing::Property(&blink::WebMediaStream::id,
778 base::UTF8ToUTF16(remote_stream_label))))
779 .WillOnce(
780 DoAll(SaveArg<0>(&webkit_stream),
781 ExitMessageLoop(&message_loop_, run_loop.QuitClosure())));
782
741 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 783 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
742 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 784 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
743 785 pc_handler_->observer()->OnAddStream(remote_stream.get());
744 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 786 run_loop.Run();
745 testing::Property(&blink::WebMediaStream::id,
746 base::UTF8ToUTF16(remote_stream_label))));
747 pc_handler_->OnAddStream(remote_stream.get());
748 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
749 787
750 { 788 {
751 // Test in a small scope so that |audio_tracks| don't hold on to destroyed 789 // Test in a small scope so that |audio_tracks| don't hold on to destroyed
752 // source later. 790 // source later.
753 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 791 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
754 webkit_stream.audioTracks(audio_tracks); 792 webkit_stream.audioTracks(audio_tracks);
755 EXPECT_EQ(1u, audio_tracks.size()); 793 EXPECT_EQ(1u, audio_tracks.size());
756 } 794 }
757 795
758 // Remove the Webrtc audio track from the Webrtc MediaStream. 796 // Remove the Webrtc audio track from the Webrtc MediaStream.
759 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = 797 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
760 remote_stream->GetAudioTracks()[0].get(); 798 remote_stream->GetAudioTracks()[0].get();
761 remote_stream->RemoveTrack(webrtc_track.get()); 799 remote_stream->RemoveTrack(webrtc_track.get());
800 base::RunLoop().RunUntilIdle();
762 801
763 { 802 {
764 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1; 803 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1;
765 webkit_stream.audioTracks(modified_audio_tracks1); 804 webkit_stream.audioTracks(modified_audio_tracks1);
766 EXPECT_EQ(0u, modified_audio_tracks1.size()); 805 EXPECT_EQ(0u, modified_audio_tracks1.size());
767 } 806 }
768 807
769 blink::WebHeap::collectGarbageForTesting(); 808 blink::WebHeap::collectGarbageForTesting();
770 809
771 // Add the WebRtc audio track again. 810 // Add the WebRtc audio track again.
772 remote_stream->AddTrack(webrtc_track.get()); 811 remote_stream->AddTrack(webrtc_track.get());
812 base::RunLoop().RunUntilIdle();
773 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2; 813 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2;
774 webkit_stream.audioTracks(modified_audio_tracks2); 814 webkit_stream.audioTracks(modified_audio_tracks2);
775 EXPECT_EQ(1u, modified_audio_tracks2.size()); 815 EXPECT_EQ(1u, modified_audio_tracks2.size());
776 } 816 }
777 817
778 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { 818 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
779 std::string remote_stream_label("remote_stream"); 819 std::string remote_stream_label("remote_stream");
780 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 820 base::RunLoop run_loop;
781 AddRemoteMockMediaStream(remote_stream_label, "video", "video"));
782 821
822 // Grab the added media stream when it's been successfully added to the PC.
823 blink::WebMediaStream webkit_stream;
783 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 824 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
784 testing::Property(&blink::WebMediaStream::id, 825 testing::Property(&blink::WebMediaStream::id,
785 base::UTF8ToUTF16(remote_stream_label)))); 826 base::UTF8ToUTF16(remote_stream_label))))
786 pc_handler_->OnAddStream(remote_stream.get()); 827 .WillOnce(
787 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 828 DoAll(SaveArg<0>(&webkit_stream),
829 ExitMessageLoop(&message_loop_, run_loop.QuitClosure())));
830
831 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
832 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
833 pc_handler_->observer()->OnAddStream(remote_stream.get());
834 run_loop.Run();
788 835
789 { 836 {
790 // Test in a small scope so that |video_tracks| don't hold on to destroyed 837 // Test in a small scope so that |video_tracks| don't hold on to destroyed
791 // source later. 838 // source later.
792 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 839 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
793 webkit_stream.videoTracks(video_tracks); 840 webkit_stream.videoTracks(video_tracks);
794 EXPECT_EQ(1u, video_tracks.size()); 841 EXPECT_EQ(1u, video_tracks.size());
795 } 842 }
796 843
797 // Remove the Webrtc video track from the Webrtc MediaStream. 844 // Remove the Webrtc video track from the Webrtc MediaStream.
798 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = 845 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
799 remote_stream->GetVideoTracks()[0].get(); 846 remote_stream->GetVideoTracks()[0].get();
800 remote_stream->RemoveTrack(webrtc_track.get()); 847 remote_stream->RemoveTrack(webrtc_track.get());
848 base::RunLoop().RunUntilIdle();
801 { 849 {
802 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1; 850 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1;
803 webkit_stream.videoTracks(modified_video_tracks1); 851 webkit_stream.videoTracks(modified_video_tracks1);
804 EXPECT_EQ(0u, modified_video_tracks1.size()); 852 EXPECT_EQ(0u, modified_video_tracks1.size());
805 } 853 }
806 854
807 blink::WebHeap::collectGarbageForTesting(); 855 blink::WebHeap::collectGarbageForTesting();
808 856
809 // Add the WebRtc video track again. 857 // Add the WebRtc video track again.
810 remote_stream->AddTrack(webrtc_track.get()); 858 remote_stream->AddTrack(webrtc_track.get());
859 base::RunLoop().RunUntilIdle();
811 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2; 860 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2;
812 webkit_stream.videoTracks(modified_video_tracks2); 861 webkit_stream.videoTracks(modified_video_tracks2);
813 EXPECT_EQ(1u, modified_video_tracks2.size()); 862 EXPECT_EQ(1u, modified_video_tracks2.size());
814 } 863 }
815 864
865 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddTracksFromRemoteStream) {
866 std::string remote_stream_label("remote_stream");
867 base::RunLoop run_loop;
868
869 // Grab the added media stream when it's been successfully added to the PC.
870 blink::WebMediaStream webkit_stream;
871 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
872 testing::Property(&blink::WebMediaStream::id,
873 base::UTF8ToUTF16(remote_stream_label))))
874 .WillOnce(
875 DoAll(SaveArg<0>(&webkit_stream),
876 ExitMessageLoop(&message_loop_, run_loop.QuitClosure())));
877
878 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
879 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
880 pc_handler_->observer()->OnAddStream(remote_stream.get());
881 run_loop.Run();
882
883 {
884 // Test in a small scope so that |audio_tracks| don't hold on to destroyed
885 // source later.
886 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
887 webkit_stream.audioTracks(audio_tracks);
888 EXPECT_EQ(1u, audio_tracks.size());
889 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
890 webkit_stream.videoTracks(video_tracks);
891 EXPECT_EQ(1u, video_tracks.size());
892 }
893
894 // Remove the Webrtc tracks from the MediaStream.
895 auto audio_track = remote_stream->GetAudioTracks()[0];
896 EXPECT_TRUE(remote_stream->RemoveTrack(audio_track.get()));
897 auto video_track = remote_stream->GetVideoTracks()[0];
898 EXPECT_TRUE(remote_stream->RemoveTrack(video_track.get()));
899 base::RunLoop().RunUntilIdle();
900
901 {
902 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks;
903 webkit_stream.audioTracks(modified_audio_tracks);
904 EXPECT_EQ(0u, modified_audio_tracks.size());
905 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks;
906 webkit_stream.videoTracks(modified_video_tracks);
907 EXPECT_EQ(0u, modified_video_tracks.size());
908 }
909
910 blink::WebHeap::collectGarbageForTesting();
911
912 // Add the tracks again.
913 remote_stream->AddTrack(audio_track.get());
914 base::RunLoop().RunUntilIdle();
915 remote_stream->AddTrack(video_track.get());
916 base::RunLoop().RunUntilIdle();
917
918 blink::WebHeap::collectGarbageForTesting();
919
920 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
921 webkit_stream.audioTracks(audio_tracks);
922 EXPECT_EQ(1u, audio_tracks.size());
923 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
924 webkit_stream.videoTracks(video_tracks);
925 EXPECT_EQ(1u, video_tracks.size());
926 }
927
816 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { 928 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
817 testing::InSequence sequence; 929 testing::InSequence sequence;
818 EXPECT_CALL(*mock_tracker_.get(), 930 EXPECT_CALL(*mock_tracker_.get(),
819 TrackAddIceCandidate(pc_handler_.get(), _, 931 TrackAddIceCandidate(pc_handler_.get(), _,
820 PeerConnectionTracker::SOURCE_LOCAL, true)); 932 PeerConnectionTracker::SOURCE_LOCAL, true));
821 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); 933 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_));
822 934
823 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( 935 scoped_ptr<webrtc::IceCandidateInterface> native_candidate(
824 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp)); 936 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp));
825 pc_handler_->OnIceCandidate(native_candidate.get()); 937 pc_handler_->observer()->OnIceCandidate(native_candidate.get());
938 base::RunLoop().RunUntilIdle();
826 EXPECT_EQ("sdpMid", mock_client_->candidate_mid()); 939 EXPECT_EQ("sdpMid", mock_client_->candidate_mid());
827 EXPECT_EQ(1, mock_client_->candidate_mlineindex()); 940 EXPECT_EQ(1, mock_client_->candidate_mlineindex());
828 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp()); 941 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp());
829 } 942 }
830 943
831 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) { 944 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) {
832 testing::InSequence sequence; 945 testing::InSequence sequence;
833 EXPECT_CALL(*mock_tracker_.get(), 946 EXPECT_CALL(*mock_tracker_.get(),
834 TrackOnRenegotiationNeeded(pc_handler_.get())); 947 TrackOnRenegotiationNeeded(pc_handler_.get()));
835 EXPECT_CALL(*mock_client_.get(), negotiationNeeded()); 948 EXPECT_CALL(*mock_client_.get(), negotiationNeeded());
836 pc_handler_->OnRenegotiationNeeded(); 949 pc_handler_->observer()->OnRenegotiationNeeded();
837 } 950 }
838 951
839 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) { 952 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) {
840 blink::WebString label = "d1"; 953 blink::WebString label = "d1";
841 EXPECT_CALL(*mock_tracker_.get(), 954 EXPECT_CALL(*mock_tracker_.get(),
842 TrackCreateDataChannel(pc_handler_.get(), 955 TrackCreateDataChannel(pc_handler_.get(),
843 testing::NotNull(), 956 testing::NotNull(),
844 PeerConnectionTracker::SOURCE_LOCAL)); 957 PeerConnectionTracker::SOURCE_LOCAL));
845 scoped_ptr<blink::WebRTCDataChannelHandler> channel( 958 scoped_ptr<blink::WebRTCDataChannelHandler> channel(
846 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit())); 959 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit()));
(...skipping 19 matching lines...) Expand all
866 EXPECT_CALL(*mock_tracker_.get(), 979 EXPECT_CALL(*mock_tracker_.get(),
867 TrackCreateDTMFSender(pc_handler_.get(), 980 TrackCreateDTMFSender(pc_handler_.get(),
868 testing::Ref(tracks[0]))); 981 testing::Ref(tracks[0])));
869 982
870 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender( 983 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender(
871 pc_handler_->createDTMFSender(tracks[0])); 984 pc_handler_->createDTMFSender(tracks[0]));
872 EXPECT_TRUE(sender.get()); 985 EXPECT_TRUE(sender.get());
873 } 986 }
874 987
875 } // namespace content 988 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698