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

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: rebase 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"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 void(RTCPeerConnectionHandler* pc_handler)); 178 void(RTCPeerConnectionHandler* pc_handler));
177 MOCK_METHOD2(TrackCreateDTMFSender, 179 MOCK_METHOD2(TrackCreateDTMFSender,
178 void(RTCPeerConnectionHandler* pc_handler, 180 void(RTCPeerConnectionHandler* pc_handler,
179 const blink::WebMediaStreamTrack& track)); 181 const blink::WebMediaStreamTrack& track));
180 }; 182 };
181 183
182 class RTCPeerConnectionHandlerUnderTest : public RTCPeerConnectionHandler { 184 class RTCPeerConnectionHandlerUnderTest : public RTCPeerConnectionHandler {
183 public: 185 public:
184 RTCPeerConnectionHandlerUnderTest( 186 RTCPeerConnectionHandlerUnderTest(
185 WebRTCPeerConnectionHandlerClient* client, 187 WebRTCPeerConnectionHandlerClient* client,
186 PeerConnectionDependencyFactory* dependency_factory) 188 PeerConnectionDependencyFactory* dependency_factory,
187 : RTCPeerConnectionHandler(client, dependency_factory) { 189 const scoped_refptr<base::SingleThreadTaskRunner>& signaling_thread)
190 : RTCPeerConnectionHandler(client, dependency_factory, signaling_thread) {
188 } 191 }
189 192
190 MockPeerConnectionImpl* native_peer_connection() { 193 MockPeerConnectionImpl* native_peer_connection() {
191 return static_cast<MockPeerConnectionImpl*>( 194 return static_cast<MockPeerConnectionImpl*>(
192 RTCPeerConnectionHandler::native_peer_connection()); 195 RTCPeerConnectionHandler::native_peer_connection());
193 } 196 }
197
198 webrtc::PeerConnectionObserver* observer() {
199 return native_peer_connection()->observer();
200 }
194 }; 201 };
195 202
196 class RTCPeerConnectionHandlerTest : public ::testing::Test { 203 class RTCPeerConnectionHandlerTest : public ::testing::Test {
197 public: 204 public:
198 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) { 205 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) {
199 child_process_.reset(new ChildProcess()); 206 child_process_.reset(new ChildProcess());
200 } 207 }
201 208
202 void SetUp() override { 209 void SetUp() override {
203 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>()); 210 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>());
204 mock_dependency_factory_.reset(new MockPeerConnectionDependencyFactory()); 211 mock_dependency_factory_.reset(new MockPeerConnectionDependencyFactory());
205 pc_handler_.reset( 212 pc_handler_.reset(
206 new RTCPeerConnectionHandlerUnderTest(mock_client_.get(), 213 new RTCPeerConnectionHandlerUnderTest(
207 mock_dependency_factory_.get())); 214 mock_client_.get(), mock_dependency_factory_.get(),
215 message_loop_.message_loop_proxy()));
208 mock_tracker_.reset(new NiceMock<MockPeerConnectionTracker>()); 216 mock_tracker_.reset(new NiceMock<MockPeerConnectionTracker>());
209 blink::WebRTCConfiguration config; 217 blink::WebRTCConfiguration config;
210 blink::WebMediaConstraints constraints; 218 blink::WebMediaConstraints constraints;
211 EXPECT_TRUE(pc_handler_->InitializeForTest(config, constraints, 219 EXPECT_TRUE(pc_handler_->InitializeForTest(config, constraints,
212 mock_tracker_.get())); 220 mock_tracker_.get()));
213 221
214 mock_peer_connection_ = pc_handler_->native_peer_connection(); 222 mock_peer_connection_ = pc_handler_->native_peer_connection();
215 ASSERT_TRUE(mock_peer_connection_); 223 ASSERT_TRUE(mock_peer_connection_);
216 } 224 }
217 225
(...skipping 20 matching lines...) Expand all
238 video_source.initialize(blink::WebString::fromUTF8(video_track_label), 246 video_source.initialize(blink::WebString::fromUTF8(video_track_label),
239 blink::WebMediaStreamSource::TypeVideo, 247 blink::WebMediaStreamSource::TypeVideo,
240 blink::WebString::fromUTF8("video_track")); 248 blink::WebString::fromUTF8("video_track"));
241 MockMediaStreamVideoSource* native_video_source = 249 MockMediaStreamVideoSource* native_video_source =
242 new MockMediaStreamVideoSource(false); 250 new MockMediaStreamVideoSource(false);
243 video_source.setExtraData(native_video_source); 251 video_source.setExtraData(native_video_source);
244 252
245 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks( 253 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks(
246 static_cast<size_t>(1)); 254 static_cast<size_t>(1));
247 audio_tracks[0].initialize(audio_source.id(), audio_source); 255 audio_tracks[0].initialize(audio_source.id(), audio_source);
248 audio_tracks[0].setExtraData( 256 StreamDeviceInfo device_info(MEDIA_DEVICE_AUDIO_CAPTURE, "Mock device",
249 new MediaStreamTrack( 257 "mock_device_id");
250 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, 258 MockMediaConstraintFactory constraint_factory;
251 NULL), 259 const blink::WebMediaConstraints constraints =
252 true)); 260 constraint_factory.CreateWebMediaConstraints();
261 scoped_refptr<WebRtcAudioCapturer> capturer(
262 WebRtcAudioCapturer::CreateCapturer(
263 -1, device_info, constraints, nullptr, nullptr));
264 scoped_refptr<WebRtcLocalAudioTrackAdapter> adapter(
265 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, nullptr));
266 scoped_ptr<WebRtcLocalAudioTrack> native_track(
267 new WebRtcLocalAudioTrack(adapter.get(), capturer, nullptr));
268 audio_tracks[0].setExtraData(native_track.release());
253 blink::WebVector<blink::WebMediaStreamTrack> video_tracks( 269 blink::WebVector<blink::WebMediaStreamTrack> video_tracks(
254 static_cast<size_t>(1)); 270 static_cast<size_t>(1));
255 blink::WebMediaConstraints constraints; 271 blink::WebMediaConstraints video_constraints;
256 constraints.initialize(); 272 video_constraints.initialize();
257 video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack( 273 video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack(
258 native_video_source, constraints, 274 native_video_source, video_constraints,
259 MediaStreamVideoSource::ConstraintsCallback(), true); 275 MediaStreamVideoSource::ConstraintsCallback(), true);
260 276
261 blink::WebMediaStream local_stream; 277 blink::WebMediaStream local_stream;
262 local_stream.initialize(base::UTF8ToUTF16(stream_label), audio_tracks, 278 local_stream.initialize(base::UTF8ToUTF16(stream_label), audio_tracks,
263 video_tracks); 279 video_tracks);
264 local_stream.setExtraData( 280 local_stream.setExtraData(
265 new MediaStream(local_stream)); 281 new MediaStream(local_stream));
266 return local_stream; 282 return local_stream;
267 } 283 }
268 284
269 // Creates a remote MediaStream and adds it to the mocked native 285 // Creates a remote MediaStream and adds it to the mocked native
270 // peer connection. 286 // peer connection.
271 scoped_refptr<webrtc::MediaStreamInterface> 287 scoped_refptr<webrtc::MediaStreamInterface>
272 AddRemoteMockMediaStream(const std::string& stream_label, 288 AddRemoteMockMediaStream(const std::string& stream_label,
273 const std::string& video_track_label, 289 const std::string& video_track_label,
274 const std::string& audio_track_label) { 290 const std::string& audio_track_label) {
275 scoped_refptr<webrtc::MediaStreamInterface> stream( 291 scoped_refptr<webrtc::MediaStreamInterface> stream(
276 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); 292 mock_dependency_factory_->CreateLocalMediaStream(stream_label));
277 if (!video_track_label.empty()) { 293 if (!video_track_label.empty()) {
278 webrtc::VideoSourceInterface* source = NULL; 294 webrtc::VideoSourceInterface* source = NULL;
279 scoped_refptr<webrtc::VideoTrackInterface> video_track( 295 scoped_refptr<webrtc::VideoTrackInterface> video_track(
280 mock_dependency_factory_->CreateLocalVideoTrack( 296 mock_dependency_factory_->CreateLocalVideoTrack(
281 video_track_label, source)); 297 video_track_label, source));
282 stream->AddTrack(video_track.get()); 298 stream->AddTrack(video_track.get());
283 } 299 }
284 if (!audio_track_label.empty()) { 300 if (!audio_track_label.empty()) {
285 scoped_refptr<WebRtcAudioCapturer> capturer;
286 scoped_refptr<webrtc::AudioTrackInterface> audio_track( 301 scoped_refptr<webrtc::AudioTrackInterface> audio_track(
287 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, NULL)); 302 WebRtcLocalAudioTrackAdapter::Create(audio_track_label, NULL));
288 stream->AddTrack(audio_track.get()); 303 stream->AddTrack(audio_track.get());
289 } 304 }
290 mock_peer_connection_->AddRemoteStream(stream.get()); 305 mock_peer_connection_->AddRemoteStream(stream.get());
291 return stream; 306 return stream;
292 } 307 }
293 308
294 base::MessageLoop message_loop_; 309 base::MessageLoop message_loop_;
295 scoped_ptr<ChildProcess> child_process_; 310 scoped_ptr<ChildProcess> child_process_;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 mock_peer_connection_->local_streams()->at(0)->GetAudioTracks().size()); 475 mock_peer_connection_->local_streams()->at(0)->GetAudioTracks().size());
461 EXPECT_EQ( 476 EXPECT_EQ(
462 1u, 477 1u,
463 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size()); 478 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size());
464 } 479 }
465 480
466 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) { 481 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) {
467 scoped_refptr<MockRTCStatsRequest> request( 482 scoped_refptr<MockRTCStatsRequest> request(
468 new rtc::RefCountedObject<MockRTCStatsRequest>()); 483 new rtc::RefCountedObject<MockRTCStatsRequest>());
469 pc_handler_->getStats(request.get()); 484 pc_handler_->getStats(request.get());
470 // Note that callback gets executed synchronously by mock. 485 base::RunLoop().RunUntilIdle();
471 ASSERT_TRUE(request->result()); 486 ASSERT_TRUE(request->result());
472 EXPECT_LT(1, request->result()->report_count()); 487 EXPECT_LT(1, request->result()->report_count());
473 } 488 }
474 489
475 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) { 490 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
476 scoped_refptr<MockRTCStatsRequest> request( 491 scoped_refptr<MockRTCStatsRequest> request(
477 new rtc::RefCountedObject<MockRTCStatsRequest>()); 492 new rtc::RefCountedObject<MockRTCStatsRequest>());
478 pc_handler_->stop(); 493 pc_handler_->stop();
479 pc_handler_->getStats(request.get()); 494 pc_handler_->getStats(request.get());
480 // Note that callback gets executed synchronously by mock. 495 base::RunLoop().RunUntilIdle();
481 ASSERT_TRUE(request->result()); 496 ASSERT_TRUE(request->result());
482 EXPECT_LT(1, request->result()->report_count()); 497 EXPECT_LT(1, request->result()->report_count());
483 } 498 }
484 499
485 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { 500 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
486 blink::WebMediaStream local_stream( 501 blink::WebMediaStream local_stream(
487 CreateLocalMediaStream("local_stream")); 502 CreateLocalMediaStream("local_stream"));
488 blink::WebMediaConstraints constraints; 503 blink::WebMediaConstraints constraints;
489 pc_handler_->addStream(local_stream, constraints); 504 pc_handler_->addStream(local_stream, constraints);
490 blink::WebVector<blink::WebMediaStreamTrack> tracks; 505 blink::WebVector<blink::WebMediaStreamTrack> tracks;
491 local_stream.audioTracks(tracks); 506 local_stream.audioTracks(tracks);
492 ASSERT_LE(1ul, tracks.size()); 507 ASSERT_LE(1ul, tracks.size());
493 508
494 scoped_refptr<MockRTCStatsRequest> request( 509 scoped_refptr<MockRTCStatsRequest> request(
495 new rtc::RefCountedObject<MockRTCStatsRequest>()); 510 new rtc::RefCountedObject<MockRTCStatsRequest>());
496 request->setSelector(tracks[0]); 511 request->setSelector(tracks[0]);
497 pc_handler_->getStats(request.get()); 512 pc_handler_->getStats(request.get());
513 base::RunLoop().RunUntilIdle();
498 EXPECT_EQ(1, request->result()->report_count()); 514 EXPECT_EQ(1, request->result()->report_count());
499 } 515 }
500 516
501 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { 517 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
502 scoped_refptr<webrtc::MediaStreamInterface> stream( 518 scoped_refptr<webrtc::MediaStreamInterface> stream(
503 AddRemoteMockMediaStream("remote_stream", "video", "audio")); 519 AddRemoteMockMediaStream("remote_stream", "video", "audio"));
504 pc_handler_->OnAddStream(stream.get()); 520 pc_handler_->observer()->OnAddStream(stream.get());
521 base::RunLoop().RunUntilIdle();
505 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream(); 522 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream();
506 523
507 blink::WebVector<blink::WebMediaStreamTrack> tracks; 524 blink::WebVector<blink::WebMediaStreamTrack> tracks;
508 remote_stream.audioTracks(tracks); 525 remote_stream.audioTracks(tracks);
509 ASSERT_LE(1ul, tracks.size()); 526 ASSERT_LE(1ul, tracks.size());
510 527
511 scoped_refptr<MockRTCStatsRequest> request( 528 scoped_refptr<MockRTCStatsRequest> request(
512 new rtc::RefCountedObject<MockRTCStatsRequest>()); 529 new rtc::RefCountedObject<MockRTCStatsRequest>());
513 request->setSelector(tracks[0]); 530 request->setSelector(tracks[0]);
514 pc_handler_->getStats(request.get()); 531 pc_handler_->getStats(request.get());
532 base::RunLoop().RunUntilIdle();
515 EXPECT_EQ(1, request->result()->report_count()); 533 EXPECT_EQ(1, request->result()->report_count());
516 } 534 }
517 535
518 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) { 536 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
519 // The setup is the same as GetStatsWithLocalSelector, but the stream is not 537 // The setup is the same as GetStatsWithLocalSelector, but the stream is not
520 // added to the PeerConnection. 538 // added to the PeerConnection.
521 blink::WebMediaStream local_stream( 539 blink::WebMediaStream local_stream(
522 CreateLocalMediaStream("local_stream_2")); 540 CreateLocalMediaStream("local_stream_2"));
523 blink::WebMediaConstraints constraints; 541 blink::WebMediaConstraints constraints;
524 blink::WebVector<blink::WebMediaStreamTrack> tracks; 542 blink::WebVector<blink::WebMediaStreamTrack> tracks;
525 543
526 local_stream.audioTracks(tracks); 544 local_stream.audioTracks(tracks);
527 blink::WebMediaStreamTrack component = tracks[0]; 545 blink::WebMediaStreamTrack component = tracks[0];
528 mock_peer_connection_->SetGetStatsResult(false); 546 mock_peer_connection_->SetGetStatsResult(false);
529 547
530 scoped_refptr<MockRTCStatsRequest> request( 548 scoped_refptr<MockRTCStatsRequest> request(
531 new rtc::RefCountedObject<MockRTCStatsRequest>()); 549 new rtc::RefCountedObject<MockRTCStatsRequest>());
532 request->setSelector(component); 550 request->setSelector(component);
533 pc_handler_->getStats(request.get()); 551 pc_handler_->getStats(request.get());
552 base::RunLoop().RunUntilIdle();
534 EXPECT_EQ(0, request->result()->report_count()); 553 EXPECT_EQ(0, request->result()->report_count());
535 } 554 }
536 555
537 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) { 556 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
538 testing::InSequence sequence; 557 testing::InSequence sequence;
539 558
540 webrtc::PeerConnectionInterface::SignalingState new_state = 559 webrtc::PeerConnectionInterface::SignalingState new_state =
541 webrtc::PeerConnectionInterface::kHaveRemoteOffer; 560 webrtc::PeerConnectionInterface::kHaveRemoteOffer;
542 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 561 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
543 pc_handler_.get(), 562 pc_handler_.get(),
544 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 563 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
545 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 564 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
546 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 565 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
547 pc_handler_->OnSignalingChange(new_state); 566 pc_handler_->observer()->OnSignalingChange(new_state);
548 567
549 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer; 568 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer;
550 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 569 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
551 pc_handler_.get(), 570 pc_handler_.get(),
552 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 571 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
553 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 572 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
554 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 573 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
555 pc_handler_->OnSignalingChange(new_state); 574 pc_handler_->observer()->OnSignalingChange(new_state);
556 575
557 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer; 576 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer;
558 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 577 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
559 pc_handler_.get(), 578 pc_handler_.get(),
560 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 579 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
561 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 580 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
562 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 581 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
563 pc_handler_->OnSignalingChange(new_state); 582 pc_handler_->observer()->OnSignalingChange(new_state);
564 583
565 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer; 584 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer;
566 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 585 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
567 pc_handler_.get(), 586 pc_handler_.get(),
568 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 587 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
569 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 588 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
570 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 589 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
571 pc_handler_->OnSignalingChange(new_state); 590 pc_handler_->observer()->OnSignalingChange(new_state);
572 591
573 new_state = webrtc::PeerConnectionInterface::kClosed; 592 new_state = webrtc::PeerConnectionInterface::kClosed;
574 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 593 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
575 pc_handler_.get(), 594 pc_handler_.get(),
576 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 595 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
577 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 596 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
578 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 597 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
579 pc_handler_->OnSignalingChange(new_state); 598 pc_handler_->observer()->OnSignalingChange(new_state);
580 } 599 }
581 600
582 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) { 601 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
583 testing::InSequence sequence; 602 testing::InSequence sequence;
584 603
585 webrtc::PeerConnectionInterface::IceConnectionState new_state = 604 webrtc::PeerConnectionInterface::IceConnectionState new_state =
586 webrtc::PeerConnectionInterface::kIceConnectionNew; 605 webrtc::PeerConnectionInterface::kIceConnectionNew;
587 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 606 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
588 pc_handler_.get(), 607 pc_handler_.get(),
589 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 608 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
590 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 609 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
591 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 610 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
592 pc_handler_->OnIceConnectionChange(new_state); 611 pc_handler_->observer()->OnIceConnectionChange(new_state);
593 612
594 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking; 613 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking;
595 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 614 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
596 pc_handler_.get(), 615 pc_handler_.get(),
597 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 616 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
598 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 617 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
599 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 618 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
600 pc_handler_->OnIceConnectionChange(new_state); 619 pc_handler_->observer()->OnIceConnectionChange(new_state);
601 620
602 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected; 621 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected;
603 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 622 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
604 pc_handler_.get(), 623 pc_handler_.get(),
605 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 624 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
606 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 625 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
607 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 626 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
608 pc_handler_->OnIceConnectionChange(new_state); 627 pc_handler_->observer()->OnIceConnectionChange(new_state);
609 628
610 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted; 629 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted;
611 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 630 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
612 pc_handler_.get(), 631 pc_handler_.get(),
613 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 632 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
614 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 633 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
615 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 634 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
616 pc_handler_->OnIceConnectionChange(new_state); 635 pc_handler_->observer()->OnIceConnectionChange(new_state);
617 636
618 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed; 637 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed;
619 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 638 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
620 pc_handler_.get(), 639 pc_handler_.get(),
621 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 640 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
622 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 641 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
623 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 642 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
624 pc_handler_->OnIceConnectionChange(new_state); 643 pc_handler_->observer()->OnIceConnectionChange(new_state);
625 644
626 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected; 645 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected;
627 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 646 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
628 pc_handler_.get(), 647 pc_handler_.get(),
629 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 648 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
630 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 649 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
631 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 650 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
632 pc_handler_->OnIceConnectionChange(new_state); 651 pc_handler_->observer()->OnIceConnectionChange(new_state);
633 652
634 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed; 653 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed;
635 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 654 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
636 pc_handler_.get(), 655 pc_handler_.get(),
637 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 656 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
638 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 657 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
639 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 658 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
640 pc_handler_->OnIceConnectionChange(new_state); 659 pc_handler_->observer()->OnIceConnectionChange(new_state);
641 } 660 }
642 661
643 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) { 662 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) {
644 testing::InSequence sequence; 663 testing::InSequence sequence;
645 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 664 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
646 pc_handler_.get(), 665 pc_handler_.get(),
647 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 666 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
648 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 667 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
649 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 668 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
650 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 669 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
651 pc_handler_.get(), 670 pc_handler_.get(),
652 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 671 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
653 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 672 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
654 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 673 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
655 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 674 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
656 pc_handler_.get(), 675 pc_handler_.get(),
657 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 676 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
658 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 677 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
659 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 678 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
660 679
661 webrtc::PeerConnectionInterface::IceGatheringState new_state = 680 webrtc::PeerConnectionInterface::IceGatheringState new_state =
662 webrtc::PeerConnectionInterface::kIceGatheringNew; 681 webrtc::PeerConnectionInterface::kIceGatheringNew;
663 pc_handler_->OnIceGatheringChange(new_state); 682 pc_handler_->observer()->OnIceGatheringChange(new_state);
664 683
665 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering; 684 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering;
666 pc_handler_->OnIceGatheringChange(new_state); 685 pc_handler_->observer()->OnIceGatheringChange(new_state);
667 686
668 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete; 687 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete;
669 pc_handler_->OnIceGatheringChange(new_state); 688 pc_handler_->observer()->OnIceGatheringChange(new_state);
670 689
671 // Check NULL candidate after ice gathering is completed. 690 // Check NULL candidate after ice gathering is completed.
672 EXPECT_EQ("", mock_client_->candidate_mid()); 691 EXPECT_EQ("", mock_client_->candidate_mid());
673 EXPECT_EQ(-1, mock_client_->candidate_mlineindex()); 692 EXPECT_EQ(-1, mock_client_->candidate_mlineindex());
674 EXPECT_EQ("", mock_client_->candidate_sdp()); 693 EXPECT_EQ("", mock_client_->candidate_sdp());
675 } 694 }
676 695
677 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) { 696 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) {
678 std::string remote_stream_label("remote_stream"); 697 std::string remote_stream_label("remote_stream");
679 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 698 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
(...skipping 11 matching lines...) Expand all
691 710
692 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream( 711 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream(
693 pc_handler_.get(), 712 pc_handler_.get(),
694 testing::Property(&blink::WebMediaStream::id, 713 testing::Property(&blink::WebMediaStream::id,
695 base::UTF8ToUTF16(remote_stream_label)), 714 base::UTF8ToUTF16(remote_stream_label)),
696 PeerConnectionTracker::SOURCE_REMOTE)); 715 PeerConnectionTracker::SOURCE_REMOTE));
697 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( 716 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream(
698 testing::Property(&blink::WebMediaStream::id, 717 testing::Property(&blink::WebMediaStream::id,
699 base::UTF8ToUTF16(remote_stream_label)))); 718 base::UTF8ToUTF16(remote_stream_label))));
700 719
701 pc_handler_->OnAddStream(remote_stream.get()); 720 pc_handler_->observer()->OnAddStream(remote_stream.get());
702 pc_handler_->OnRemoveStream(remote_stream.get()); 721 base::RunLoop().RunUntilIdle();
722 pc_handler_->observer()->OnRemoveStream(remote_stream.get());
723 base::RunLoop().RunUntilIdle();
703 } 724 }
704 725
705 // This test that WebKit is notified about remote track state changes. 726 // This test that WebKit is notified about remote track state changes.
706 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { 727 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
707 std::string remote_stream_label("remote_stream"); 728 std::string remote_stream_label("remote_stream");
708 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 729 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
709 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 730 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
710 731
711 testing::InSequence sequence; 732 testing::InSequence sequence;
712 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 733 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
713 testing::Property(&blink::WebMediaStream::id, 734 testing::Property(&blink::WebMediaStream::id,
714 base::UTF8ToUTF16(remote_stream_label)))); 735 base::UTF8ToUTF16(remote_stream_label))));
715 pc_handler_->OnAddStream(remote_stream.get()); 736 pc_handler_->observer()->OnAddStream(remote_stream.get());
737 base::RunLoop().RunUntilIdle();
716 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 738 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
717 739
718 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 740 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
719 webkit_stream.audioTracks(audio_tracks); 741 webkit_stream.audioTracks(audio_tracks);
720 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 742 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
721 audio_tracks[0].source().readyState()); 743 audio_tracks[0].source().readyState());
722 744
723 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 745 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
724 webkit_stream.videoTracks(video_tracks); 746 webkit_stream.videoTracks(video_tracks);
725 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 747 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
726 video_tracks[0].source().readyState()); 748 video_tracks[0].source().readyState());
727 749
728 remote_stream->GetAudioTracks()[0]->set_state( 750 remote_stream->GetAudioTracks()[0]->set_state(
729 webrtc::MediaStreamTrackInterface::kEnded); 751 webrtc::MediaStreamTrackInterface::kEnded);
752 base::RunLoop().RunUntilIdle();
730 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 753 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
731 audio_tracks[0].source().readyState()); 754 audio_tracks[0].source().readyState());
732 755
733 remote_stream->GetVideoTracks()[0]->set_state( 756 remote_stream->GetVideoTracks()[0]->set_state(
734 webrtc::MediaStreamTrackInterface::kEnded); 757 webrtc::MediaStreamTrackInterface::kEnded);
758 base::RunLoop().RunUntilIdle();
735 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 759 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
736 video_tracks[0].source().readyState()); 760 video_tracks[0].source().readyState());
737 } 761 }
738 762
739 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { 763 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
740 std::string remote_stream_label("remote_stream"); 764 std::string remote_stream_label("remote_stream");
741 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 765 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
742 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 766 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
743 767
744 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 768 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
745 testing::Property(&blink::WebMediaStream::id, 769 testing::Property(&blink::WebMediaStream::id,
746 base::UTF8ToUTF16(remote_stream_label)))); 770 base::UTF8ToUTF16(remote_stream_label))));
747 pc_handler_->OnAddStream(remote_stream.get()); 771 pc_handler_->observer()->OnAddStream(remote_stream.get());
772 base::RunLoop().RunUntilIdle();
748 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 773 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
749 774
750 { 775 {
751 // Test in a small scope so that |audio_tracks| don't hold on to destroyed 776 // Test in a small scope so that |audio_tracks| don't hold on to destroyed
752 // source later. 777 // source later.
753 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 778 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
754 webkit_stream.audioTracks(audio_tracks); 779 webkit_stream.audioTracks(audio_tracks);
755 EXPECT_EQ(1u, audio_tracks.size()); 780 EXPECT_EQ(1u, audio_tracks.size());
756 } 781 }
757 782
758 // Remove the Webrtc audio track from the Webrtc MediaStream. 783 // Remove the Webrtc audio track from the Webrtc MediaStream.
759 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = 784 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
760 remote_stream->GetAudioTracks()[0].get(); 785 remote_stream->GetAudioTracks()[0].get();
761 remote_stream->RemoveTrack(webrtc_track.get()); 786 remote_stream->RemoveTrack(webrtc_track.get());
787 base::RunLoop().RunUntilIdle();
762 788
763 { 789 {
764 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1; 790 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1;
765 webkit_stream.audioTracks(modified_audio_tracks1); 791 webkit_stream.audioTracks(modified_audio_tracks1);
766 EXPECT_EQ(0u, modified_audio_tracks1.size()); 792 EXPECT_EQ(0u, modified_audio_tracks1.size());
767 } 793 }
768 794
769 blink::WebHeap::collectGarbageForTesting(); 795 blink::WebHeap::collectGarbageForTesting();
770 796
771 // Add the WebRtc audio track again. 797 // Add the WebRtc audio track again.
772 remote_stream->AddTrack(webrtc_track.get()); 798 remote_stream->AddTrack(webrtc_track.get());
799 base::RunLoop().RunUntilIdle();
773 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2; 800 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2;
774 webkit_stream.audioTracks(modified_audio_tracks2); 801 webkit_stream.audioTracks(modified_audio_tracks2);
775 EXPECT_EQ(1u, modified_audio_tracks2.size()); 802 EXPECT_EQ(1u, modified_audio_tracks2.size());
776 } 803 }
777 804
778 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { 805 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
779 std::string remote_stream_label("remote_stream"); 806 std::string remote_stream_label("remote_stream");
780 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 807 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
781 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); 808 AddRemoteMockMediaStream(remote_stream_label, "video", "video"));
782 809
783 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 810 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
784 testing::Property(&blink::WebMediaStream::id, 811 testing::Property(&blink::WebMediaStream::id,
785 base::UTF8ToUTF16(remote_stream_label)))); 812 base::UTF8ToUTF16(remote_stream_label))));
786 pc_handler_->OnAddStream(remote_stream.get()); 813 pc_handler_->observer()->OnAddStream(remote_stream.get());
814 base::RunLoop().RunUntilIdle();
787 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 815 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
788 816
789 { 817 {
790 // Test in a small scope so that |video_tracks| don't hold on to destroyed 818 // Test in a small scope so that |video_tracks| don't hold on to destroyed
791 // source later. 819 // source later.
792 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 820 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
793 webkit_stream.videoTracks(video_tracks); 821 webkit_stream.videoTracks(video_tracks);
794 EXPECT_EQ(1u, video_tracks.size()); 822 EXPECT_EQ(1u, video_tracks.size());
795 } 823 }
796 824
797 // Remove the Webrtc video track from the Webrtc MediaStream. 825 // Remove the Webrtc video track from the Webrtc MediaStream.
798 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = 826 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
799 remote_stream->GetVideoTracks()[0].get(); 827 remote_stream->GetVideoTracks()[0].get();
800 remote_stream->RemoveTrack(webrtc_track.get()); 828 remote_stream->RemoveTrack(webrtc_track.get());
829 base::RunLoop().RunUntilIdle();
801 { 830 {
802 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1; 831 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1;
803 webkit_stream.videoTracks(modified_video_tracks1); 832 webkit_stream.videoTracks(modified_video_tracks1);
804 EXPECT_EQ(0u, modified_video_tracks1.size()); 833 EXPECT_EQ(0u, modified_video_tracks1.size());
805 } 834 }
806 835
807 blink::WebHeap::collectGarbageForTesting(); 836 blink::WebHeap::collectGarbageForTesting();
808 837
809 // Add the WebRtc video track again. 838 // Add the WebRtc video track again.
810 remote_stream->AddTrack(webrtc_track.get()); 839 remote_stream->AddTrack(webrtc_track.get());
840 base::RunLoop().RunUntilIdle();
811 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2; 841 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2;
812 webkit_stream.videoTracks(modified_video_tracks2); 842 webkit_stream.videoTracks(modified_video_tracks2);
813 EXPECT_EQ(1u, modified_video_tracks2.size()); 843 EXPECT_EQ(1u, modified_video_tracks2.size());
814 } 844 }
815 845
816 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { 846 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
817 testing::InSequence sequence; 847 testing::InSequence sequence;
818 EXPECT_CALL(*mock_tracker_.get(), 848 EXPECT_CALL(*mock_tracker_.get(),
819 TrackAddIceCandidate(pc_handler_.get(), _, 849 TrackAddIceCandidate(pc_handler_.get(), _,
820 PeerConnectionTracker::SOURCE_LOCAL, true)); 850 PeerConnectionTracker::SOURCE_LOCAL, true));
821 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); 851 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_));
822 852
823 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( 853 scoped_ptr<webrtc::IceCandidateInterface> native_candidate(
824 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp)); 854 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp));
825 pc_handler_->OnIceCandidate(native_candidate.get()); 855 pc_handler_->observer()->OnIceCandidate(native_candidate.get());
856 base::RunLoop().RunUntilIdle();
826 EXPECT_EQ("sdpMid", mock_client_->candidate_mid()); 857 EXPECT_EQ("sdpMid", mock_client_->candidate_mid());
827 EXPECT_EQ(1, mock_client_->candidate_mlineindex()); 858 EXPECT_EQ(1, mock_client_->candidate_mlineindex());
828 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp()); 859 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp());
829 } 860 }
830 861
831 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) { 862 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) {
832 testing::InSequence sequence; 863 testing::InSequence sequence;
833 EXPECT_CALL(*mock_tracker_.get(), 864 EXPECT_CALL(*mock_tracker_.get(),
834 TrackOnRenegotiationNeeded(pc_handler_.get())); 865 TrackOnRenegotiationNeeded(pc_handler_.get()));
835 EXPECT_CALL(*mock_client_.get(), negotiationNeeded()); 866 EXPECT_CALL(*mock_client_.get(), negotiationNeeded());
836 pc_handler_->OnRenegotiationNeeded(); 867 pc_handler_->observer()->OnRenegotiationNeeded();
837 } 868 }
838 869
839 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) { 870 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) {
840 blink::WebString label = "d1"; 871 blink::WebString label = "d1";
841 EXPECT_CALL(*mock_tracker_.get(), 872 EXPECT_CALL(*mock_tracker_.get(),
842 TrackCreateDataChannel(pc_handler_.get(), 873 TrackCreateDataChannel(pc_handler_.get(),
843 testing::NotNull(), 874 testing::NotNull(),
844 PeerConnectionTracker::SOURCE_LOCAL)); 875 PeerConnectionTracker::SOURCE_LOCAL));
845 scoped_ptr<blink::WebRTCDataChannelHandler> channel( 876 scoped_ptr<blink::WebRTCDataChannelHandler> channel(
846 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit())); 877 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit()));
(...skipping 19 matching lines...) Expand all
866 EXPECT_CALL(*mock_tracker_.get(), 897 EXPECT_CALL(*mock_tracker_.get(),
867 TrackCreateDTMFSender(pc_handler_.get(), 898 TrackCreateDTMFSender(pc_handler_.get(),
868 testing::Ref(tracks[0]))); 899 testing::Ref(tracks[0])));
869 900
870 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender( 901 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender(
871 pc_handler_->createDTMFSender(tracks[0])); 902 pc_handler_->createDTMFSender(tracks[0]));
872 EXPECT_TRUE(sender.get()); 903 EXPECT_TRUE(sender.get());
873 } 904 }
874 905
875 } // namespace content 906 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698