Chromium Code Reviews| Index: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| index 76eef568dfe5c37cb3d4039358374cfc19302149..a8f88376b2391b0b8ce02b911e740d31c6dc5eaa 100644 |
| --- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc |
| @@ -8,6 +8,7 @@ |
| #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h" |
| #include "content/browser/renderer_host/media/media_stream_manager.h" |
| #include "content/browser/renderer_host/media/video_capture_manager.h" |
| +#include "content/browser/resource_context.h" |
| #include "content/common/media/media_stream_messages.h" |
| #include "content/common/media/media_stream_options.h" |
| #include "ipc/ipc_message_macros.h" |
| @@ -23,12 +24,38 @@ const int kProcessId = 5; |
| const int kRenderId = 6; |
| const int kPageRequestId = 7; |
| +namespace content { |
| +// Test version of ResourceContext |
| +class MockMediaStreamResourceContext : public ResourceContext { |
|
scherkus (not reviewing)
2011/08/16 19:24:09
you might be able to use MockResourceContext
cont
mflodman_chromium_OOO
2011/08/19 11:07:09
This part was removed based on review feedback fro
|
| + public: |
| + MockMediaStreamResourceContext() {} |
| + virtual ~MockMediaStreamResourceContext() {} |
| + |
| + virtual media_stream::MediaStreamManager* media_stream_manger() const { |
| + return media_stream_manager_.get(); |
| + } |
| + |
| + void set_media_stream_manager( |
| + media_stream::MediaStreamManager* media_stream_manager) { |
| + media_stream_manager_ = media_stream_manager; |
| + } |
| + |
| + private: |
| + // Pure virtual in ResourceContext. |
| + virtual void EnsureInitialized() const {} |
| + |
| + scoped_refptr<media_stream::MediaStreamManager> media_stream_manager_; |
| +}; |
| + |
| +} // namespace content |
| + |
| namespace media_stream { |
| class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost { |
| public: |
| - explicit MockMediaStreamDispatcherHost(MessageLoop* message_loop) |
| - : MediaStreamDispatcherHost(kProcessId), |
| + MockMediaStreamDispatcherHost(content::ResourceContext* resource_context, |
| + MessageLoop* message_loop) |
| + : MediaStreamDispatcherHost(resource_context, kProcessId), |
| message_loop_(message_loop) {} |
| virtual ~MockMediaStreamDispatcherHost() {} |
| @@ -41,9 +68,7 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost { |
| MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index)); |
| // Accessor to private functions. |
| - void OnGenerateStream( |
| - int page_request_id, |
| - const StreamOptions& components) { |
| + void OnGenerateStream(int page_request_id, const StreamOptions& components) { |
| MediaStreamDispatcherHost::OnGenerateStream(kRenderId, |
| page_request_id, |
| components, |
| @@ -104,8 +129,7 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost { |
| video_devices_ = video_device_list; |
| } |
| - void OnStreamGenerationFailed(const IPC::Message& msg, |
| - int request_id) { |
| + void OnStreamGenerationFailed(const IPC::Message& msg, int request_id) { |
| OnStreamGenerationFailed(msg.routing_id(), request_id); |
| message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
| label_= ""; |
| @@ -138,23 +162,37 @@ class MediaStreamDispatcherHostTest : public testing::Test { |
| protected: |
| virtual void SetUp() { |
| - // Create message loop so that |
| - // DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)) passes. |
| message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); |
| + // ResourceContext must be created on UI thread. |
| + ui_thread_.reset(new BrowserThread(BrowserThread::UI, message_loop_.get())); |
| + resource_context_.reset(new content::MockMediaStreamResourceContext()); |
| + |
| + // MediaStreamManager must be created and called on IO thread. |
| io_thread_.reset(new BrowserThread(BrowserThread::IO, message_loop_.get())); |
| - // Make sure the MediaStreamManager exist and use |
| - // fake audio / video devices. |
| - MediaStreamManager* manager = MediaStreamManager::Get(); |
| - manager->UseFakeDevice(); |
| + // Create a MediaStreamManager instance and hand over ownership to |
| + // ResourceContext. |
| + MediaStreamManager* media_stream_manager = new MediaStreamManager(); |
| + resource_context_->set_media_stream_manager(media_stream_manager); |
| + |
| + // Make sure we use fake devices to avoid long delays. |
| + resource_context_->media_stream_manager()->UseFakeDevice(); |
| + |
| + host_ = new MockMediaStreamDispatcherHost(resource_context_.get(), |
| + message_loop_.get()); |
| + } |
| - host_ = |
| - new MockMediaStreamDispatcherHost(message_loop_.get()); |
| + virtual void TearDown() { |
| + // Delete the threads in correct order. |
| + io_thread_.reset(); |
| + ui_thread_.reset(); |
| } |
| scoped_refptr<MockMediaStreamDispatcherHost> host_; |
| scoped_ptr<MessageLoop> message_loop_; |
| + scoped_ptr<BrowserThread> ui_thread_; |
| scoped_ptr<BrowserThread> io_thread_; |
| + scoped_ptr<content::ResourceContext> resource_context_; |
| }; |
| TEST_F(MediaStreamDispatcherHostTest, GenerateStream) { |
| @@ -223,7 +261,8 @@ TEST_F(MediaStreamDispatcherHostTest, FailDevice) { |
| EXPECT_CALL(*host_, OnVideoDeviceFailed(kRenderId, 0)); |
| int session_id = host_->video_devices_[0].session_id; |
| - MediaStreamManager::Get()->video_capture_manager()->Error(session_id); |
| + resource_context_->media_stream_manager()->video_capture_manager()-> |
| + Error(session_id); |
| WaitForResult(); |
| EXPECT_EQ(host_->video_devices_.size(), 0u); |
| EXPECT_EQ(host_->NumberOfStreams(), 1u); |