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..b1153637a8070df76ea0aeb2eb518dca77a4ce2a 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 { |
+ 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_ = media_stream_manager; |
+ } |
+ |
+ private: |
+ // Pure virtual in ResourceContext. |
+ virtual void EnsureInitialized() const {} |
+ |
+ scoped_refptr<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); |
}; |