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

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: Broken changes for review 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 public: 127 public:
126 MOCK_METHOD1(UnregisterPeerConnection, 128 MOCK_METHOD1(UnregisterPeerConnection,
127 void(RTCPeerConnectionHandler* pc_handler)); 129 void(RTCPeerConnectionHandler* pc_handler));
128 // TODO(jiayl): add coverage for the following methods 130 // TODO(jiayl): add coverage for the following methods
129 MOCK_METHOD2(TrackCreateOffer, 131 MOCK_METHOD2(TrackCreateOffer,
130 void(RTCPeerConnectionHandler* pc_handler, 132 void(RTCPeerConnectionHandler* pc_handler,
131 const RTCMediaConstraints& constraints)); 133 const RTCMediaConstraints& constraints));
132 MOCK_METHOD2(TrackCreateAnswer, 134 MOCK_METHOD2(TrackCreateAnswer,
133 void(RTCPeerConnectionHandler* pc_handler, 135 void(RTCPeerConnectionHandler* pc_handler,
134 const RTCMediaConstraints& constraints)); 136 const RTCMediaConstraints& constraints));
135 MOCK_METHOD3(TrackSetSessionDescription, 137 MOCK_METHOD4(TrackSetSessionDescription,
136 void(RTCPeerConnectionHandler* pc_handler, 138 void(RTCPeerConnectionHandler* pc_handler,
137 const blink::WebRTCSessionDescription& desc, 139 const std::string& sdp, const std::string& type,
138 Source source)); 140 Source source));
139 MOCK_METHOD3( 141 MOCK_METHOD3(
140 TrackUpdateIce, 142 TrackUpdateIce,
141 void(RTCPeerConnectionHandler* pc_handler, 143 void(RTCPeerConnectionHandler* pc_handler,
142 const webrtc::PeerConnectionInterface::RTCConfiguration& config, 144 const webrtc::PeerConnectionInterface::RTCConfiguration& config,
143 const RTCMediaConstraints& options)); 145 const RTCMediaConstraints& options));
144 MOCK_METHOD4(TrackAddIceCandidate, 146 MOCK_METHOD4(TrackAddIceCandidate,
145 void(RTCPeerConnectionHandler* pc_handler, 147 void(RTCPeerConnectionHandler* pc_handler,
146 const blink::WebRTCICECandidate& candidate, 148 const blink::WebRTCICECandidate& candidate,
147 Source source, 149 Source source,
(...skipping 28 matching lines...) Expand all
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 } 349 }
335 350
336 TEST_F(RTCPeerConnectionHandlerTest, setLocalDescription) { 351 TEST_F(RTCPeerConnectionHandlerTest, setLocalDescription) {
337 blink::WebRTCVoidRequest request; 352 blink::WebRTCVoidRequest request;
338 blink::WebRTCSessionDescription description; 353 blink::WebRTCSessionDescription description;
339 description.initialize(kDummySdpType, kDummySdp); 354 description.initialize(kDummySdpType, kDummySdp);
340 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 355 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
341 // before |mock_peer_connection| is called. 356 // before |mock_peer_connection| is called.
342 testing::InSequence sequence; 357 testing::InSequence sequence;
343 EXPECT_CALL(*mock_tracker_.get(), 358 EXPECT_CALL(*mock_tracker_.get(),
344 TrackSetSessionDescription(pc_handler_.get(), Ref(description), 359 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
360 kDummySdpType,
345 PeerConnectionTracker::SOURCE_LOCAL)); 361 PeerConnectionTracker::SOURCE_LOCAL));
346 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _)); 362 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _));
347 363
348 pc_handler_->setLocalDescription(request, description); 364 pc_handler_->setLocalDescription(request, description);
349 EXPECT_EQ(description.type(), pc_handler_->localDescription().type()); 365 EXPECT_EQ(description.type(), pc_handler_->localDescription().type());
350 EXPECT_EQ(description.sdp(), pc_handler_->localDescription().sdp()); 366 EXPECT_EQ(description.sdp(), pc_handler_->localDescription().sdp());
351 367
352 std::string sdp_string; 368 std::string sdp_string;
353 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL); 369 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL);
354 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type()); 370 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type());
355 mock_peer_connection_->local_description()->ToString(&sdp_string); 371 mock_peer_connection_->local_description()->ToString(&sdp_string);
356 EXPECT_EQ(kDummySdp, sdp_string); 372 EXPECT_EQ(kDummySdp, sdp_string);
357 } 373 }
358 374
359 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) { 375 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) {
360 blink::WebRTCVoidRequest request; 376 blink::WebRTCVoidRequest request;
361 blink::WebRTCSessionDescription description; 377 blink::WebRTCSessionDescription description;
362 description.initialize(kDummySdpType, kDummySdp); 378 description.initialize(kDummySdpType, kDummySdp);
363 379
364 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 380 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
365 // before |mock_peer_connection| is called. 381 // before |mock_peer_connection| is called.
366 testing::InSequence sequence; 382 testing::InSequence sequence;
367 EXPECT_CALL(*mock_tracker_.get(), 383 EXPECT_CALL(*mock_tracker_.get(),
368 TrackSetSessionDescription(pc_handler_.get(), Ref(description), 384 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
385 kDummySdpType,
369 PeerConnectionTracker::SOURCE_REMOTE)); 386 PeerConnectionTracker::SOURCE_REMOTE));
370 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _)); 387 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _));
371 388
372 pc_handler_->setRemoteDescription(request, description); 389 pc_handler_->setRemoteDescription(request, description);
373 EXPECT_EQ(description.type(), pc_handler_->remoteDescription().type()); 390 EXPECT_EQ(description.type(), pc_handler_->remoteDescription().type());
374 EXPECT_EQ(description.sdp(), pc_handler_->remoteDescription().sdp()); 391 EXPECT_EQ(description.sdp(), pc_handler_->remoteDescription().sdp());
375 392
376 std::string sdp_string; 393 std::string sdp_string;
377 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL); 394 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL);
378 EXPECT_EQ(kDummySdpType, mock_peer_connection_->remote_description()->type()); 395 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()); 477 mock_peer_connection_->local_streams()->at(0)->GetAudioTracks().size());
461 EXPECT_EQ( 478 EXPECT_EQ(
462 1u, 479 1u,
463 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size()); 480 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size());
464 } 481 }
465 482
466 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) { 483 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) {
467 scoped_refptr<MockRTCStatsRequest> request( 484 scoped_refptr<MockRTCStatsRequest> request(
468 new rtc::RefCountedObject<MockRTCStatsRequest>()); 485 new rtc::RefCountedObject<MockRTCStatsRequest>());
469 pc_handler_->getStats(request.get()); 486 pc_handler_->getStats(request.get());
470 // Note that callback gets executed synchronously by mock. 487 base::RunLoop().RunUntilIdle();
471 ASSERT_TRUE(request->result()); 488 ASSERT_TRUE(request->result());
472 EXPECT_LT(1, request->result()->report_count()); 489 EXPECT_LT(1, request->result()->report_count());
473 } 490 }
474 491
475 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) { 492 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
476 scoped_refptr<MockRTCStatsRequest> request( 493 scoped_refptr<MockRTCStatsRequest> request(
477 new rtc::RefCountedObject<MockRTCStatsRequest>()); 494 new rtc::RefCountedObject<MockRTCStatsRequest>());
478 pc_handler_->stop(); 495 pc_handler_->stop();
479 pc_handler_->getStats(request.get()); 496 pc_handler_->getStats(request.get());
480 // Note that callback gets executed synchronously by mock. 497 base::RunLoop().RunUntilIdle();
481 ASSERT_TRUE(request->result()); 498 ASSERT_TRUE(request->result());
482 EXPECT_LT(1, request->result()->report_count()); 499 EXPECT_LT(1, request->result()->report_count());
483 } 500 }
484 501
485 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { 502 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
486 blink::WebMediaStream local_stream( 503 blink::WebMediaStream local_stream(
487 CreateLocalMediaStream("local_stream")); 504 CreateLocalMediaStream("local_stream"));
488 blink::WebMediaConstraints constraints; 505 blink::WebMediaConstraints constraints;
489 pc_handler_->addStream(local_stream, constraints); 506 pc_handler_->addStream(local_stream, constraints);
490 blink::WebVector<blink::WebMediaStreamTrack> tracks; 507 blink::WebVector<blink::WebMediaStreamTrack> tracks;
491 local_stream.audioTracks(tracks); 508 local_stream.audioTracks(tracks);
492 ASSERT_LE(1ul, tracks.size()); 509 ASSERT_LE(1ul, tracks.size());
493 510
494 scoped_refptr<MockRTCStatsRequest> request( 511 scoped_refptr<MockRTCStatsRequest> request(
495 new rtc::RefCountedObject<MockRTCStatsRequest>()); 512 new rtc::RefCountedObject<MockRTCStatsRequest>());
496 request->setSelector(tracks[0]); 513 request->setSelector(tracks[0]);
497 pc_handler_->getStats(request.get()); 514 pc_handler_->getStats(request.get());
515 base::RunLoop().RunUntilIdle();
498 EXPECT_EQ(1, request->result()->report_count()); 516 EXPECT_EQ(1, request->result()->report_count());
499 } 517 }
500 518
501 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { 519 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
502 scoped_refptr<webrtc::MediaStreamInterface> stream( 520 scoped_refptr<webrtc::MediaStreamInterface> stream(
503 AddRemoteMockMediaStream("remote_stream", "video", "audio")); 521 AddRemoteMockMediaStream("remote_stream", "video", "audio"));
504 pc_handler_->OnAddStream(stream.get()); 522 pc_handler_->observer()->OnAddStream(stream.get());
523 base::RunLoop().RunUntilIdle();
505 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream(); 524 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream();
506 525
507 blink::WebVector<blink::WebMediaStreamTrack> tracks; 526 blink::WebVector<blink::WebMediaStreamTrack> tracks;
508 remote_stream.audioTracks(tracks); 527 remote_stream.audioTracks(tracks);
509 ASSERT_LE(1ul, tracks.size()); 528 ASSERT_LE(1ul, tracks.size());
510 529
511 scoped_refptr<MockRTCStatsRequest> request( 530 scoped_refptr<MockRTCStatsRequest> request(
512 new rtc::RefCountedObject<MockRTCStatsRequest>()); 531 new rtc::RefCountedObject<MockRTCStatsRequest>());
513 request->setSelector(tracks[0]); 532 request->setSelector(tracks[0]);
514 pc_handler_->getStats(request.get()); 533 pc_handler_->getStats(request.get());
534 base::RunLoop().RunUntilIdle();
515 EXPECT_EQ(1, request->result()->report_count()); 535 EXPECT_EQ(1, request->result()->report_count());
516 } 536 }
517 537
518 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) { 538 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
519 // The setup is the same as GetStatsWithLocalSelector, but the stream is not 539 // The setup is the same as GetStatsWithLocalSelector, but the stream is not
520 // added to the PeerConnection. 540 // added to the PeerConnection.
521 blink::WebMediaStream local_stream( 541 blink::WebMediaStream local_stream(
522 CreateLocalMediaStream("local_stream_2")); 542 CreateLocalMediaStream("local_stream_2"));
523 blink::WebMediaConstraints constraints; 543 blink::WebMediaConstraints constraints;
524 blink::WebVector<blink::WebMediaStreamTrack> tracks; 544 blink::WebVector<blink::WebMediaStreamTrack> tracks;
525 545
526 local_stream.audioTracks(tracks); 546 local_stream.audioTracks(tracks);
527 blink::WebMediaStreamTrack component = tracks[0]; 547 blink::WebMediaStreamTrack component = tracks[0];
528 mock_peer_connection_->SetGetStatsResult(false); 548 mock_peer_connection_->SetGetStatsResult(false);
529 549
530 scoped_refptr<MockRTCStatsRequest> request( 550 scoped_refptr<MockRTCStatsRequest> request(
531 new rtc::RefCountedObject<MockRTCStatsRequest>()); 551 new rtc::RefCountedObject<MockRTCStatsRequest>());
532 request->setSelector(component); 552 request->setSelector(component);
533 pc_handler_->getStats(request.get()); 553 pc_handler_->getStats(request.get());
554 base::RunLoop().RunUntilIdle();
534 EXPECT_EQ(0, request->result()->report_count()); 555 EXPECT_EQ(0, request->result()->report_count());
535 } 556 }
536 557
537 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) { 558 TEST_F(RTCPeerConnectionHandlerTest, OnSignalingChange) {
538 testing::InSequence sequence; 559 testing::InSequence sequence;
539 560
540 webrtc::PeerConnectionInterface::SignalingState new_state = 561 webrtc::PeerConnectionInterface::SignalingState new_state =
541 webrtc::PeerConnectionInterface::kHaveRemoteOffer; 562 webrtc::PeerConnectionInterface::kHaveRemoteOffer;
542 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 563 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
543 pc_handler_.get(), 564 pc_handler_.get(),
544 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 565 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
545 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 566 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
546 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer)); 567 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemoteOffer));
547 pc_handler_->OnSignalingChange(new_state); 568 pc_handler_->observer()->OnSignalingChange(new_state);
548 569
549 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer; 570 new_state = webrtc::PeerConnectionInterface::kHaveLocalPrAnswer;
550 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 571 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
551 pc_handler_.get(), 572 pc_handler_.get(),
552 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 573 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
553 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 574 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
554 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer)); 575 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalPrAnswer));
555 pc_handler_->OnSignalingChange(new_state); 576 pc_handler_->observer()->OnSignalingChange(new_state);
556 577
557 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer; 578 new_state = webrtc::PeerConnectionInterface::kHaveLocalOffer;
558 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 579 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
559 pc_handler_.get(), 580 pc_handler_.get(),
560 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 581 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
561 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 582 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
562 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer)); 583 WebRTCPeerConnectionHandlerClient::SignalingStateHaveLocalOffer));
563 pc_handler_->OnSignalingChange(new_state); 584 pc_handler_->observer()->OnSignalingChange(new_state);
564 585
565 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer; 586 new_state = webrtc::PeerConnectionInterface::kHaveRemotePrAnswer;
566 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 587 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
567 pc_handler_.get(), 588 pc_handler_.get(),
568 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 589 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
569 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 590 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
570 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer)); 591 WebRTCPeerConnectionHandlerClient::SignalingStateHaveRemotePrAnswer));
571 pc_handler_->OnSignalingChange(new_state); 592 pc_handler_->observer()->OnSignalingChange(new_state);
572 593
573 new_state = webrtc::PeerConnectionInterface::kClosed; 594 new_state = webrtc::PeerConnectionInterface::kClosed;
574 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange( 595 EXPECT_CALL(*mock_tracker_.get(), TrackSignalingStateChange(
575 pc_handler_.get(), 596 pc_handler_.get(),
576 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 597 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
577 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState( 598 EXPECT_CALL(*mock_client_.get(), didChangeSignalingState(
578 WebRTCPeerConnectionHandlerClient::SignalingStateClosed)); 599 WebRTCPeerConnectionHandlerClient::SignalingStateClosed));
579 pc_handler_->OnSignalingChange(new_state); 600 pc_handler_->observer()->OnSignalingChange(new_state);
580 } 601 }
581 602
582 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) { 603 TEST_F(RTCPeerConnectionHandlerTest, OnIceConnectionChange) {
583 testing::InSequence sequence; 604 testing::InSequence sequence;
584 605
585 webrtc::PeerConnectionInterface::IceConnectionState new_state = 606 webrtc::PeerConnectionInterface::IceConnectionState new_state =
586 webrtc::PeerConnectionInterface::kIceConnectionNew; 607 webrtc::PeerConnectionInterface::kIceConnectionNew;
587 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 608 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
588 pc_handler_.get(), 609 pc_handler_.get(),
589 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 610 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
590 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 611 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
591 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting)); 612 WebRTCPeerConnectionHandlerClient::ICEConnectionStateStarting));
592 pc_handler_->OnIceConnectionChange(new_state); 613 pc_handler_->observer()->OnIceConnectionChange(new_state);
593 614
594 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking; 615 new_state = webrtc::PeerConnectionInterface::kIceConnectionChecking;
595 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 616 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
596 pc_handler_.get(), 617 pc_handler_.get(),
597 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 618 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
598 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 619 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
599 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking)); 620 WebRTCPeerConnectionHandlerClient::ICEConnectionStateChecking));
600 pc_handler_->OnIceConnectionChange(new_state); 621 pc_handler_->observer()->OnIceConnectionChange(new_state);
601 622
602 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected; 623 new_state = webrtc::PeerConnectionInterface::kIceConnectionConnected;
603 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 624 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
604 pc_handler_.get(), 625 pc_handler_.get(),
605 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 626 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
606 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 627 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
607 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected)); 628 WebRTCPeerConnectionHandlerClient::ICEConnectionStateConnected));
608 pc_handler_->OnIceConnectionChange(new_state); 629 pc_handler_->observer()->OnIceConnectionChange(new_state);
609 630
610 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted; 631 new_state = webrtc::PeerConnectionInterface::kIceConnectionCompleted;
611 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 632 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
612 pc_handler_.get(), 633 pc_handler_.get(),
613 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 634 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
614 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 635 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
615 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted)); 636 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted));
616 pc_handler_->OnIceConnectionChange(new_state); 637 pc_handler_->observer()->OnIceConnectionChange(new_state);
617 638
618 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed; 639 new_state = webrtc::PeerConnectionInterface::kIceConnectionFailed;
619 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 640 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
620 pc_handler_.get(), 641 pc_handler_.get(),
621 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 642 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
622 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 643 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
623 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed)); 644 WebRTCPeerConnectionHandlerClient::ICEConnectionStateFailed));
624 pc_handler_->OnIceConnectionChange(new_state); 645 pc_handler_->observer()->OnIceConnectionChange(new_state);
625 646
626 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected; 647 new_state = webrtc::PeerConnectionInterface::kIceConnectionDisconnected;
627 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 648 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
628 pc_handler_.get(), 649 pc_handler_.get(),
629 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 650 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
630 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 651 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
631 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected)); 652 WebRTCPeerConnectionHandlerClient::ICEConnectionStateDisconnected));
632 pc_handler_->OnIceConnectionChange(new_state); 653 pc_handler_->observer()->OnIceConnectionChange(new_state);
633 654
634 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed; 655 new_state = webrtc::PeerConnectionInterface::kIceConnectionClosed;
635 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange( 656 EXPECT_CALL(*mock_tracker_.get(), TrackIceConnectionStateChange(
636 pc_handler_.get(), 657 pc_handler_.get(),
637 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 658 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
638 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState( 659 EXPECT_CALL(*mock_client_.get(), didChangeICEConnectionState(
639 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed)); 660 WebRTCPeerConnectionHandlerClient::ICEConnectionStateClosed));
640 pc_handler_->OnIceConnectionChange(new_state); 661 pc_handler_->observer()->OnIceConnectionChange(new_state);
641 } 662 }
642 663
643 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) { 664 TEST_F(RTCPeerConnectionHandlerTest, OnIceGatheringChange) {
644 testing::InSequence sequence; 665 testing::InSequence sequence;
645 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 666 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
646 pc_handler_.get(), 667 pc_handler_.get(),
647 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 668 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
648 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 669 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
649 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew)); 670 WebRTCPeerConnectionHandlerClient::ICEGatheringStateNew));
650 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 671 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
651 pc_handler_.get(), 672 pc_handler_.get(),
652 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 673 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
653 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 674 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
654 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering)); 675 WebRTCPeerConnectionHandlerClient::ICEGatheringStateGathering));
655 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange( 676 EXPECT_CALL(*mock_tracker_.get(), TrackIceGatheringStateChange(
656 pc_handler_.get(), 677 pc_handler_.get(),
657 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 678 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
658 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState( 679 EXPECT_CALL(*mock_client_.get(), didChangeICEGatheringState(
659 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete)); 680 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
660 681
661 webrtc::PeerConnectionInterface::IceGatheringState new_state = 682 webrtc::PeerConnectionInterface::IceGatheringState new_state =
662 webrtc::PeerConnectionInterface::kIceGatheringNew; 683 webrtc::PeerConnectionInterface::kIceGatheringNew;
663 pc_handler_->OnIceGatheringChange(new_state); 684 pc_handler_->observer()->OnIceGatheringChange(new_state);
664 685
665 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering; 686 new_state = webrtc::PeerConnectionInterface::kIceGatheringGathering;
666 pc_handler_->OnIceGatheringChange(new_state); 687 pc_handler_->observer()->OnIceGatheringChange(new_state);
667 688
668 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete; 689 new_state = webrtc::PeerConnectionInterface::kIceGatheringComplete;
669 pc_handler_->OnIceGatheringChange(new_state); 690 pc_handler_->observer()->OnIceGatheringChange(new_state);
670 691
671 // Check NULL candidate after ice gathering is completed. 692 // Check NULL candidate after ice gathering is completed.
672 EXPECT_EQ("", mock_client_->candidate_mid()); 693 EXPECT_EQ("", mock_client_->candidate_mid());
673 EXPECT_EQ(-1, mock_client_->candidate_mlineindex()); 694 EXPECT_EQ(-1, mock_client_->candidate_mlineindex());
674 EXPECT_EQ("", mock_client_->candidate_sdp()); 695 EXPECT_EQ("", mock_client_->candidate_sdp());
675 } 696 }
676 697
677 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) { 698 TEST_F(RTCPeerConnectionHandlerTest, OnAddAndOnRemoveStream) {
678 std::string remote_stream_label("remote_stream"); 699 std::string remote_stream_label("remote_stream");
679 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 700 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
(...skipping 11 matching lines...) Expand all
691 712
692 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream( 713 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream(
693 pc_handler_.get(), 714 pc_handler_.get(),
694 testing::Property(&blink::WebMediaStream::id, 715 testing::Property(&blink::WebMediaStream::id,
695 base::UTF8ToUTF16(remote_stream_label)), 716 base::UTF8ToUTF16(remote_stream_label)),
696 PeerConnectionTracker::SOURCE_REMOTE)); 717 PeerConnectionTracker::SOURCE_REMOTE));
697 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( 718 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream(
698 testing::Property(&blink::WebMediaStream::id, 719 testing::Property(&blink::WebMediaStream::id,
699 base::UTF8ToUTF16(remote_stream_label)))); 720 base::UTF8ToUTF16(remote_stream_label))));
700 721
701 pc_handler_->OnAddStream(remote_stream.get()); 722 pc_handler_->observer()->OnAddStream(remote_stream.get());
702 pc_handler_->OnRemoveStream(remote_stream.get()); 723 base::RunLoop().RunUntilIdle();
724 pc_handler_->observer()->OnRemoveStream(remote_stream.get());
725 base::RunLoop().RunUntilIdle();
703 } 726 }
704 727
705 // This test that WebKit is notified about remote track state changes. 728 // This test that WebKit is notified about remote track state changes.
706 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { 729 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
707 std::string remote_stream_label("remote_stream"); 730 std::string remote_stream_label("remote_stream");
708 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 731 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
709 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 732 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
710 733
711 testing::InSequence sequence; 734 testing::InSequence sequence;
712 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 735 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
713 testing::Property(&blink::WebMediaStream::id, 736 testing::Property(&blink::WebMediaStream::id,
714 base::UTF8ToUTF16(remote_stream_label)))); 737 base::UTF8ToUTF16(remote_stream_label))));
715 pc_handler_->OnAddStream(remote_stream.get()); 738 pc_handler_->observer()->OnAddStream(remote_stream.get());
739 base::RunLoop().RunUntilIdle();
716 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 740 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
717 741
718 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 742 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
719 webkit_stream.audioTracks(audio_tracks); 743 webkit_stream.audioTracks(audio_tracks);
720 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 744 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
721 audio_tracks[0].source().readyState()); 745 audio_tracks[0].source().readyState());
722 746
723 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 747 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
724 webkit_stream.videoTracks(video_tracks); 748 webkit_stream.videoTracks(video_tracks);
725 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive, 749 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
726 video_tracks[0].source().readyState()); 750 video_tracks[0].source().readyState());
727 751
728 remote_stream->GetAudioTracks()[0]->set_state( 752 remote_stream->GetAudioTracks()[0]->set_state(
729 webrtc::MediaStreamTrackInterface::kEnded); 753 webrtc::MediaStreamTrackInterface::kEnded);
754 base::RunLoop().RunUntilIdle();
730 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 755 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
731 audio_tracks[0].source().readyState()); 756 audio_tracks[0].source().readyState());
732 757
733 remote_stream->GetVideoTracks()[0]->set_state( 758 remote_stream->GetVideoTracks()[0]->set_state(
734 webrtc::MediaStreamTrackInterface::kEnded); 759 webrtc::MediaStreamTrackInterface::kEnded);
760 base::RunLoop().RunUntilIdle();
735 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded, 761 EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
736 video_tracks[0].source().readyState()); 762 video_tracks[0].source().readyState());
737 } 763 }
738 764
739 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { 765 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
740 std::string remote_stream_label("remote_stream"); 766 std::string remote_stream_label("remote_stream");
741 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 767 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
742 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 768 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
743 769
744 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 770 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
745 testing::Property(&blink::WebMediaStream::id, 771 testing::Property(&blink::WebMediaStream::id,
746 base::UTF8ToUTF16(remote_stream_label)))); 772 base::UTF8ToUTF16(remote_stream_label))));
747 pc_handler_->OnAddStream(remote_stream.get()); 773 pc_handler_->observer()->OnAddStream(remote_stream.get());
774 base::RunLoop().RunUntilIdle();
748 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 775 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
749 776
750 { 777 {
751 // Test in a small scope so that |audio_tracks| don't hold on to destroyed 778 // Test in a small scope so that |audio_tracks| don't hold on to destroyed
752 // source later. 779 // source later.
753 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 780 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
754 webkit_stream.audioTracks(audio_tracks); 781 webkit_stream.audioTracks(audio_tracks);
755 EXPECT_EQ(1u, audio_tracks.size()); 782 EXPECT_EQ(1u, audio_tracks.size());
756 } 783 }
757 784
758 // Remove the Webrtc audio track from the Webrtc MediaStream. 785 // Remove the Webrtc audio track from the Webrtc MediaStream.
759 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = 786 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
760 remote_stream->GetAudioTracks()[0].get(); 787 remote_stream->GetAudioTracks()[0].get();
761 remote_stream->RemoveTrack(webrtc_track.get()); 788 remote_stream->RemoveTrack(webrtc_track.get());
789 base::RunLoop().RunUntilIdle();
762 790
763 { 791 {
764 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1; 792 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1;
765 webkit_stream.audioTracks(modified_audio_tracks1); 793 webkit_stream.audioTracks(modified_audio_tracks1);
766 EXPECT_EQ(0u, modified_audio_tracks1.size()); 794 EXPECT_EQ(0u, modified_audio_tracks1.size());
767 } 795 }
768 796
769 blink::WebHeap::collectGarbageForTesting(); 797 blink::WebHeap::collectGarbageForTesting();
770 798
771 // Add the WebRtc audio track again. 799 // Add the WebRtc audio track again.
772 remote_stream->AddTrack(webrtc_track.get()); 800 remote_stream->AddTrack(webrtc_track.get());
801 base::RunLoop().RunUntilIdle();
773 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2; 802 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2;
774 webkit_stream.audioTracks(modified_audio_tracks2); 803 webkit_stream.audioTracks(modified_audio_tracks2);
775 EXPECT_EQ(1u, modified_audio_tracks2.size()); 804 EXPECT_EQ(1u, modified_audio_tracks2.size());
776 } 805 }
777 806
778 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { 807 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
779 std::string remote_stream_label("remote_stream"); 808 std::string remote_stream_label("remote_stream");
780 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 809 scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
781 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); 810 AddRemoteMockMediaStream(remote_stream_label, "video", "video"));
782 811
783 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( 812 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream(
784 testing::Property(&blink::WebMediaStream::id, 813 testing::Property(&blink::WebMediaStream::id,
785 base::UTF8ToUTF16(remote_stream_label)))); 814 base::UTF8ToUTF16(remote_stream_label))));
786 pc_handler_->OnAddStream(remote_stream.get()); 815 pc_handler_->observer()->OnAddStream(remote_stream.get());
816 base::RunLoop().RunUntilIdle();
787 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 817 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
788 818
789 { 819 {
790 // Test in a small scope so that |video_tracks| don't hold on to destroyed 820 // Test in a small scope so that |video_tracks| don't hold on to destroyed
791 // source later. 821 // source later.
792 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 822 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
793 webkit_stream.videoTracks(video_tracks); 823 webkit_stream.videoTracks(video_tracks);
794 EXPECT_EQ(1u, video_tracks.size()); 824 EXPECT_EQ(1u, video_tracks.size());
795 } 825 }
796 826
797 // Remove the Webrtc video track from the Webrtc MediaStream. 827 // Remove the Webrtc video track from the Webrtc MediaStream.
798 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = 828 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
799 remote_stream->GetVideoTracks()[0].get(); 829 remote_stream->GetVideoTracks()[0].get();
800 remote_stream->RemoveTrack(webrtc_track.get()); 830 remote_stream->RemoveTrack(webrtc_track.get());
831 base::RunLoop().RunUntilIdle();
801 { 832 {
802 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1; 833 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1;
803 webkit_stream.videoTracks(modified_video_tracks1); 834 webkit_stream.videoTracks(modified_video_tracks1);
804 EXPECT_EQ(0u, modified_video_tracks1.size()); 835 EXPECT_EQ(0u, modified_video_tracks1.size());
805 } 836 }
806 837
807 blink::WebHeap::collectGarbageForTesting(); 838 blink::WebHeap::collectGarbageForTesting();
808 839
809 // Add the WebRtc video track again. 840 // Add the WebRtc video track again.
810 remote_stream->AddTrack(webrtc_track.get()); 841 remote_stream->AddTrack(webrtc_track.get());
842 base::RunLoop().RunUntilIdle();
811 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2; 843 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2;
812 webkit_stream.videoTracks(modified_video_tracks2); 844 webkit_stream.videoTracks(modified_video_tracks2);
813 EXPECT_EQ(1u, modified_video_tracks2.size()); 845 EXPECT_EQ(1u, modified_video_tracks2.size());
814 } 846 }
815 847
816 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { 848 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
817 testing::InSequence sequence; 849 testing::InSequence sequence;
818 EXPECT_CALL(*mock_tracker_.get(), 850 EXPECT_CALL(*mock_tracker_.get(),
819 TrackAddIceCandidate(pc_handler_.get(), _, 851 TrackAddIceCandidate(pc_handler_.get(), _,
820 PeerConnectionTracker::SOURCE_LOCAL, true)); 852 PeerConnectionTracker::SOURCE_LOCAL, true));
821 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); 853 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_));
822 854
823 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( 855 scoped_ptr<webrtc::IceCandidateInterface> native_candidate(
824 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp)); 856 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp));
825 pc_handler_->OnIceCandidate(native_candidate.get()); 857 pc_handler_->observer()->OnIceCandidate(native_candidate.get());
858 base::RunLoop().RunUntilIdle();
826 EXPECT_EQ("sdpMid", mock_client_->candidate_mid()); 859 EXPECT_EQ("sdpMid", mock_client_->candidate_mid());
827 EXPECT_EQ(1, mock_client_->candidate_mlineindex()); 860 EXPECT_EQ(1, mock_client_->candidate_mlineindex());
828 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp()); 861 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp());
829 } 862 }
830 863
831 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) { 864 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) {
832 testing::InSequence sequence; 865 testing::InSequence sequence;
833 EXPECT_CALL(*mock_tracker_.get(), 866 EXPECT_CALL(*mock_tracker_.get(),
834 TrackOnRenegotiationNeeded(pc_handler_.get())); 867 TrackOnRenegotiationNeeded(pc_handler_.get()));
835 EXPECT_CALL(*mock_client_.get(), negotiationNeeded()); 868 EXPECT_CALL(*mock_client_.get(), negotiationNeeded());
836 pc_handler_->OnRenegotiationNeeded(); 869 pc_handler_->observer()->OnRenegotiationNeeded();
837 } 870 }
838 871
839 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) { 872 TEST_F(RTCPeerConnectionHandlerTest, CreateDataChannel) {
840 blink::WebString label = "d1"; 873 blink::WebString label = "d1";
841 EXPECT_CALL(*mock_tracker_.get(), 874 EXPECT_CALL(*mock_tracker_.get(),
842 TrackCreateDataChannel(pc_handler_.get(), 875 TrackCreateDataChannel(pc_handler_.get(),
843 testing::NotNull(), 876 testing::NotNull(),
844 PeerConnectionTracker::SOURCE_LOCAL)); 877 PeerConnectionTracker::SOURCE_LOCAL));
845 scoped_ptr<blink::WebRTCDataChannelHandler> channel( 878 scoped_ptr<blink::WebRTCDataChannelHandler> channel(
846 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit())); 879 pc_handler_->createDataChannel("d1", blink::WebRTCDataChannelInit()));
(...skipping 19 matching lines...) Expand all
866 EXPECT_CALL(*mock_tracker_.get(), 899 EXPECT_CALL(*mock_tracker_.get(),
867 TrackCreateDTMFSender(pc_handler_.get(), 900 TrackCreateDTMFSender(pc_handler_.get(),
868 testing::Ref(tracks[0]))); 901 testing::Ref(tracks[0])));
869 902
870 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender( 903 scoped_ptr<blink::WebRTCDTMFSenderHandler> sender(
871 pc_handler_->createDTMFSender(tracks[0])); 904 pc_handler_->createDTMFSender(tracks[0]));
872 EXPECT_TRUE(sender.get()); 905 EXPECT_TRUE(sender.get());
873 } 906 }
874 907
875 } // namespace content 908 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698