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

Unified Diff: content/browser/renderer_host/media/video_capture_host_unittest.cc

Issue 7649016: Removing singleton property of MediaStreamManager and creating thread first when needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use VideoCaptureManager, instead of ResourceContext, in VideoCaptureController. Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698