| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |