Chromium Code Reviews| Index: content/browser/renderer_host/media/video_capture_host_unittest.cc |
| diff --git a/content/browser/renderer_host/media/video_capture_host_unittest.cc b/content/browser/renderer_host/media/video_capture_host_unittest.cc |
| index 9e5488196d7e76621394c0fa008121aa2026487e..5002dbffbf8207bf06d07358b02ab9fb3db8f4f9 100644 |
| --- a/content/browser/renderer_host/media/video_capture_host_unittest.cc |
| +++ b/content/browser/renderer_host/media/video_capture_host_unittest.cc |
| @@ -15,6 +15,7 @@ |
| #include "content/browser/renderer_host/media/media_stream_manager.h" |
| #include "content/browser/renderer_host/media/video_capture_host.h" |
| #include "content/browser/renderer_host/media/video_capture_manager.h" |
| +#include "content/browser/resource_context.h" |
| #include "content/common/media/video_capture_messages.h" |
| #include "media/video/capture/video_capture_types.h" |
| @@ -67,9 +68,37 @@ class DumpVideo { |
| int expected_size_; |
| }; |
| +namespace content { |
| +// Test version of ResourceContext |
| +class MockVideoCaptureResourceContext : public ResourceContext { |
|
scherkus (not reviewing)
2011/08/23 19:33:26
ditto here -- this can likely be deduped in some w
mflodman_chromium_OOO
2011/08/24 14:27:24
Done.
|
| + public: |
| + MockVideoCaptureResourceContext() {} |
| + virtual ~MockVideoCaptureResourceContext() {} |
| + |
| + 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_.reset(media_stream_manager); |
| + } |
| + |
| + private: |
| + // Pure virtual in ResourceContext. |
| + virtual void EnsureInitialized() const {} |
| + |
| + scoped_ptr<media_stream::MediaStreamManager> media_stream_manager_; |
| +}; |
| + |
| +} // namespace content |
| + |
| class MockVideoCaptureHost : public VideoCaptureHost { |
| public: |
| - MockVideoCaptureHost() : return_buffers_(false), dump_video_(false) {} |
| + explicit MockVideoCaptureHost(content::ResourceContext* resource_context) |
| + : VideoCaptureHost(resource_context), |
| + return_buffers_(false), |
| + dump_video_(false) {} |
| virtual ~MockVideoCaptureHost() { |
| STLDeleteContainerPairSecondPointers(filled_dib_.begin(), |
| filled_dib_.end()); |
| @@ -190,14 +219,25 @@ class VideoCaptureHostTest : public testing::Test { |
| virtual void SetUp() { |
| // Create a message loop so VideoCaptureHostTest can use it. |
| message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); |
| + |
| + // ResourceContext must be created on the UI thread. |
| + ui_thread_.reset(new BrowserThread(BrowserThread::UI, message_loop_.get())); |
| + resource_context_.reset(new content::MockVideoCaptureResourceContext()); |
| + |
| + // MediaStreamManager must be created on the IO thread. |
| io_thread_.reset(new BrowserThread(BrowserThread::IO, message_loop_.get())); |
| + |
| + // Create a MediaStreamManager ad hand over ownership to ResourceContext. |
| + media_stream::MediaStreamManager* media_stream_manager = |
| + new media_stream::MediaStreamManager(); |
| + resource_context_->set_media_stream_manager(media_stream_manager); |
| + |
| // Setup the VideoCaptureManager to use fake video capture device. |
| #ifndef TEST_REAL_CAPTURE_DEVICE |
| - media_stream::VideoCaptureManager* manager = |
| - media_stream::MediaStreamManager::Get()->video_capture_manager(); |
| - manager->UseFakeDevice(); |
| + resource_context_->media_stream_manager()->video_capture_manager()-> |
| + UseFakeDevice(); |
| #endif |
| - host_ = new MockVideoCaptureHost(); |
| + host_ = new MockVideoCaptureHost(resource_context_.get()); |
| // Simulate IPC channel connected. |
| host_->OnChannelConnected(base::GetCurrentProcId()); |
| @@ -223,6 +263,7 @@ class VideoCaptureHostTest : public testing::Test { |
| SyncWithVideoCaptureManagerThread(); |
| io_thread_.reset(); |
| + ui_thread_.reset(); |
| } |
| // Called on the VideoCaptureManager thread. |
| @@ -231,8 +272,9 @@ class VideoCaptureHostTest : public testing::Test { |
| } |
| // Called on the main thread. |
| - static void PostQuitOnVideoCaptureManagerThread(MessageLoop* message_loop) { |
| - media_stream::MediaStreamManager::Get()->video_capture_manager()-> |
| + static void PostQuitOnVideoCaptureManagerThread( |
| + MessageLoop* message_loop, content::ResourceContext* resource_context) { |
| + resource_context->media_stream_manager()->video_capture_manager()-> |
| GetMessageLoop()->PostTask(FROM_HERE, |
| NewRunnableFunction( |
| &PostQuitMessageLoop, message_loop)); |
| @@ -246,7 +288,8 @@ class VideoCaptureHostTest : public testing::Test { |
| void SyncWithVideoCaptureManagerThread() { |
| message_loop_->PostTask( |
| FROM_HERE, NewRunnableFunction(&PostQuitOnVideoCaptureManagerThread, |
| - message_loop_.get())); |
| + message_loop_.get(), |
| + resource_context_.get())); |
| message_loop_->Run(); |
| } |
| @@ -342,7 +385,9 @@ class VideoCaptureHostTest : public testing::Test { |
| scoped_refptr<MockVideoCaptureHost> host_; |
| private: |
| scoped_ptr<MessageLoop> message_loop_; |
| + scoped_ptr<BrowserThread> ui_thread_; |
| scoped_ptr<BrowserThread> io_thread_; |
| + scoped_ptr<content::ResourceContext> resource_context_; |
| DISALLOW_COPY_AND_ASSIGN(VideoCaptureHostTest); |
| }; |