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

Side by Side Diff: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc

Issue 10912004: Begin adding support for tab mirroring via the MediaStream audio/video capturing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: AudioManager injection into MediaStreamManager, consistent enum naming; per wjia@ comments. Also, … Created 8 years, 3 months 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 | Annotate | Revision Log
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 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "content/browser/browser_thread_impl.h" 9 #include "content/browser/browser_thread_impl.h"
10 #include "content/browser/renderer_host/media/audio_input_device_manager.h"
11 #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h" 10 #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h"
12 #include "content/browser/renderer_host/media/media_stream_manager.h" 11 #include "content/browser/renderer_host/media/media_stream_manager.h"
13 #include "content/browser/renderer_host/media/mock_media_observer.h" 12 #include "content/browser/renderer_host/media/mock_media_observer.h"
14 #include "content/browser/renderer_host/media/video_capture_manager.h" 13 #include "content/browser/renderer_host/media/video_capture_manager.h"
15 #include "content/common/media/media_stream_messages.h" 14 #include "content/common/media/media_stream_messages.h"
16 #include "content/common/media/media_stream_options.h" 15 #include "content/common/media/media_stream_options.h"
17 #include "content/public/test/mock_resource_context.h" 16 #include "content/public/test/mock_resource_context.h"
18 #include "content/test/test_content_browser_client.h" 17 #include "content/test/test_content_browser_client.h"
19 #include "content/test/test_content_client.h" 18 #include "content/test/test_content_client.h"
20 #include "ipc/ipc_message_macros.h" 19 #include "ipc/ipc_message_macros.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index)); 54 MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index));
56 MOCK_METHOD0(GetMediaObserver, content::MediaObserver*()); 55 MOCK_METHOD0(GetMediaObserver, content::MediaObserver*());
57 56
58 // Accessor to private functions. 57 // Accessor to private functions.
59 void OnGenerateStream(int page_request_id, const StreamOptions& components) { 58 void OnGenerateStream(int page_request_id, const StreamOptions& components) {
60 MediaStreamDispatcherHost::OnGenerateStream(kRenderId, 59 MediaStreamDispatcherHost::OnGenerateStream(kRenderId,
61 page_request_id, 60 page_request_id,
62 components, 61 components,
63 GURL()); 62 GURL());
64 } 63 }
64 void OnGenerateStreamForDevice(int page_request_id,
65 const StreamOptions& components,
66 const std::string& device_id) {
67 MediaStreamDispatcherHost::OnGenerateStreamForDevice(kRenderId,
68 page_request_id,
69 components,
70 device_id,
71 GURL());
72 }
65 void OnStopGeneratedStream(const std::string& label) { 73 void OnStopGeneratedStream(const std::string& label) {
66 MediaStreamDispatcherHost::OnStopGeneratedStream(kRenderId, label); 74 MediaStreamDispatcherHost::OnStopGeneratedStream(kRenderId, label);
67 } 75 }
68 76
69 // Return the number of streams that have been opened or is being open. 77 // Return the number of streams that have been opened or is being open.
70 size_t NumberOfStreams() { 78 size_t NumberOfStreams() {
71 return streams_.size(); 79 return streams_.size();
72 } 80 }
73 81
74 std::string label_; 82 std::string label_;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 // MediaStreamManager must be created and called on IO thread. 173 // MediaStreamManager must be created and called on IO thread.
166 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); 174 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
167 io_thread_.reset(new BrowserThreadImpl(BrowserThread::IO, 175 io_thread_.reset(new BrowserThreadImpl(BrowserThread::IO,
168 message_loop_.get())); 176 message_loop_.get()));
169 177
170 // Create our own media observer. 178 // Create our own media observer.
171 media_observer_.reset(new MockMediaObserver()); 179 media_observer_.reset(new MockMediaObserver());
172 180
173 // Create our own MediaStreamManager. 181 // Create our own MediaStreamManager.
174 audio_manager_.reset(media::AudioManager::Create()); 182 audio_manager_.reset(media::AudioManager::Create());
175 scoped_refptr<media_stream::AudioInputDeviceManager> 183 media_stream_manager_.reset(
176 audio_input_device_manager( 184 new media_stream::MediaStreamManager(audio_manager_.get()));
177 new media_stream::AudioInputDeviceManager(audio_manager_.get()));
178 scoped_refptr<media_stream::VideoCaptureManager> video_capture_manager(
179 new media_stream::VideoCaptureManager());
180 media_stream_manager_.reset(new media_stream::MediaStreamManager(
181 audio_input_device_manager, video_capture_manager));
182 // Make sure we use fake devices to avoid long delays. 185 // Make sure we use fake devices to avoid long delays.
183 media_stream_manager_->UseFakeDevice(); 186 media_stream_manager_->UseFakeDevice();
184 187
185 host_ = new MockMediaStreamDispatcherHost(message_loop_.get(), 188 host_ = new MockMediaStreamDispatcherHost(message_loop_.get(),
186 media_stream_manager_.get()); 189 media_stream_manager_.get());
187 190
188 // Use the fake content client and browser. 191 // Use the fake content client and browser.
189 old_client_ = content::GetContentClient(); 192 old_client_ = content::GetContentClient();
190 old_browser_client_ = content::GetContentClient()->browser(); 193 old_browser_client_ = content::GetContentClient()->browser();
191 content_client_.reset(new TestContentClient); 194 content_client_.reset(new TestContentClient);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 std::string label = host_->label_; 236 std::string label = host_->label_;
234 237
235 EXPECT_EQ(host_->audio_devices_.size(), 0u); 238 EXPECT_EQ(host_->audio_devices_.size(), 0u);
236 EXPECT_EQ(host_->video_devices_.size(), 1u); 239 EXPECT_EQ(host_->video_devices_.size(), 1u);
237 EXPECT_EQ(host_->NumberOfStreams(), 1u); 240 EXPECT_EQ(host_->NumberOfStreams(), 1u);
238 241
239 host_->OnStopGeneratedStream(label); 242 host_->OnStopGeneratedStream(label);
240 EXPECT_EQ(host_->NumberOfStreams(), 0u); 243 EXPECT_EQ(host_->NumberOfStreams(), 0u);
241 } 244 }
242 245
246 TEST_F(MediaStreamDispatcherHostTest, GenerateStreamForDevice) {
no longer working on chromium 2012/09/10 09:11:04 +1, thanks for adding the unittest
247 static const char kDeviceId[] = "/dev/video0";
248
249 StreamOptions options(content::MEDIA_NO_SERVICE,
250 content::MEDIA_DEVICE_VIDEO_CAPTURE);
251
252 EXPECT_CALL(*host_, GetMediaObserver())
253 .WillRepeatedly(Return(media_observer_.get()));
254 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
255 host_->OnGenerateStreamForDevice(kPageRequestId, options, kDeviceId);
256
257 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
258 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _));
259
260 WaitForResult();
261
262 std::string label = host_->label_;
no longer working on chromium 2012/09/10 09:11:04 nit, fix the indentation.
miu 2012/09/10 21:24:38 Done.
263
264 EXPECT_EQ(0u, host_->audio_devices_.size());
265 EXPECT_EQ(1u, host_->video_devices_.size());
266 EXPECT_EQ(1u, host_->NumberOfStreams());
267
268 host_->OnStopGeneratedStream(label);
269 EXPECT_EQ(0u, host_->NumberOfStreams());
270 }
271
243 TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) { 272 TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) {
244 // This test opens three video capture devices. Two fake devices exists and it 273 // This test opens three video capture devices. Two fake devices exists and it
245 // is expected the last call to |Open()| will open the first device again, but 274 // is expected the last call to |Open()| will open the first device again, but
246 // with a different label. 275 // with a different label.
247 StreamOptions options(false, true); 276 StreamOptions options(false, true);
248 277
249 // Generate first stream. 278 // Generate first stream.
250 EXPECT_CALL(*host_, GetMediaObserver()) 279 EXPECT_CALL(*host_, GetMediaObserver())
251 .WillRepeatedly(Return(media_observer_.get())); 280 .WillRepeatedly(Return(media_observer_.get()));
252 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1)); 281 EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _)); 352 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
324 WaitForResult(); 353 WaitForResult();
325 std::string label = host_->label_; 354 std::string label = host_->label_;
326 355
327 EXPECT_EQ(host_->audio_devices_.size(), 0u); 356 EXPECT_EQ(host_->audio_devices_.size(), 0u);
328 EXPECT_EQ(host_->video_devices_.size(), 1u); 357 EXPECT_EQ(host_->video_devices_.size(), 1u);
329 EXPECT_EQ(host_->NumberOfStreams(), 1u); 358 EXPECT_EQ(host_->NumberOfStreams(), 1u);
330 359
331 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0)); 360 EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0));
332 int session_id = host_->video_devices_[0].session_id; 361 int session_id = host_->video_devices_[0].session_id;
333 media_stream_manager_->video_capture_manager()->Error(session_id); 362 media_stream_manager_->GetVideoCaptureManager(
363 content::MEDIA_DEVICE_VIDEO_CAPTURE)->Error(session_id);
334 WaitForResult(); 364 WaitForResult();
335 EXPECT_EQ(host_->video_devices_.size(), 0u); 365 EXPECT_EQ(host_->video_devices_.size(), 0u);
336 EXPECT_EQ(host_->NumberOfStreams(), 1u); 366 EXPECT_EQ(host_->NumberOfStreams(), 1u);
337 367
338 // TODO(perkj): test audio device failure? 368 // TODO(perkj): test audio device failure?
339 369
340 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _)); 370 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _));
341 host_->OnStopGeneratedStream(label); 371 host_->OnStopGeneratedStream(label);
342 EXPECT_EQ(host_->NumberOfStreams(), 0u); 372 EXPECT_EQ(host_->NumberOfStreams(), 0u);
343 } 373 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 // Calling OnChannelClosing() to cancel all the pending/generated streams. 413 // Calling OnChannelClosing() to cancel all the pending/generated streams.
384 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _)) 414 EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _))
385 .Times(3); 415 .Times(3);
386 host_->OnChannelClosing(); 416 host_->OnChannelClosing();
387 417
388 // Streams should have been cleaned up. 418 // Streams should have been cleaned up.
389 EXPECT_EQ(host_->NumberOfStreams(), 0u); 419 EXPECT_EQ(host_->NumberOfStreams(), 0u);
390 } 420 }
391 421
392 }; // namespace media_stream 422 }; // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698