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

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

Issue 10168008: Show camera and microphone status indicators. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updated the media_stream_dispatcher_unittest Created 8 years, 8 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
« no previous file with comments | « chrome/chrome_browser.gypi ('k') | content/browser/renderer_host/media/media_stream_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 83a503eb98c23138cd6488936b16198c92f48c13..d8b98b640a71ce108473ff24f70f3f7f773a611f 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
@@ -7,12 +7,15 @@
#include "base/bind.h"
#include "base/message_loop.h"
#include "content/browser/browser_thread_impl.h"
+#include "content/browser/mock_content_browser_client.h"
#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/mock_media_observer.h"
#include "content/browser/renderer_host/media/video_capture_manager.h"
#include "content/common/media/media_stream_messages.h"
#include "content/common/media/media_stream_options.h"
#include "content/test/mock_resource_context.h"
+#include "content/test/test_content_client.h"
#include "ipc/ipc_message_macros.h"
#include "media/audio/audio_manager.h"
#include "net/url_request/url_request_context.h"
@@ -23,8 +26,8 @@ using ::testing::_;
using ::testing::DeleteArg;
using ::testing::DoAll;
using ::testing::Return;
-using content::BrowserThread;
+using content::BrowserThread;
using content::BrowserThreadImpl;
const int kProcessId = 5;
@@ -33,7 +36,8 @@ const int kPageRequestId = 7;
namespace media_stream {
-class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost {
+class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost,
+ public content::MockContentBrowserClient {
public:
MockMediaStreamDispatcherHost(content::ResourceContext* resource_context,
MessageLoop* message_loop,
@@ -48,6 +52,7 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost {
MOCK_METHOD2(OnStreamGenerationFailed, void(int routing_id, int request_id));
MOCK_METHOD2(OnAudioDeviceFailed, void(int routing_id, int index));
MOCK_METHOD2(OnVideoDeviceFailed, void(int routing_id, int index));
+ MOCK_METHOD0(GetMediaObserver, content::MediaObserver*());
// Accessor to private functions.
void OnGenerateStream(int page_request_id, const StreamOptions& components) {
@@ -140,6 +145,9 @@ class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost {
class MediaStreamDispatcherHostTest : public testing::Test {
public:
+ MediaStreamDispatcherHostTest() : old_client_(NULL),
+ old_browser_client_(NULL) {}
+
void WaitForResult() {
message_loop_->Run();
}
@@ -156,17 +164,32 @@ class MediaStreamDispatcherHostTest : public testing::Test {
audio_manager_.reset(media::AudioManager::Create());
+ // Create our own media observer.
+ media_observer_.reset(new MockMediaObserver());
+
// Make sure we use fake devices to avoid long delays.
MediaStreamManager::GetForResourceContext(
&resource_context_, audio_manager_.get())->UseFakeDevice();
host_ = new MockMediaStreamDispatcherHost(
&resource_context_, message_loop_.get(), audio_manager_.get());
+
+ // Use the fake content client and browser.
+ old_client_ = content::GetContentClient();
+ old_browser_client_ = content::GetContentClient()->browser();
+ content_client_.reset(new TestContentClient);
+ content::SetContentClient(content_client_.get());
+ content_client_->set_browser(host_);
}
virtual void TearDown() {
// Needed to make sure the manager finishes all tasks on its own thread.
SyncWithVideoCaptureManagerThread();
+
+ // Recover the old browser client and content client.
+ content::GetContentClient()->set_browser(old_browser_client_);
+ content::SetContentClient(old_client_);
+ content_client_.reset();
}
// Called on the VideoCaptureManager thread.
@@ -204,14 +227,23 @@ class MediaStreamDispatcherHostTest : public testing::Test {
scoped_ptr<BrowserThreadImpl> io_thread_;
scoped_ptr<media::AudioManager> audio_manager_;
content::MockResourceContext resource_context_;
+ content::ContentClient* old_client_;
+ content::ContentBrowserClient* old_browser_client_;
+ scoped_ptr<content::ContentClient> content_client_;
+ scoped_ptr<MockMediaObserver> media_observer_;
};
TEST_F(MediaStreamDispatcherHostTest, GenerateStream) {
StreamOptions options(false, true);
+ EXPECT_CALL(*host_, GetMediaObserver())
+ .WillRepeatedly(Return(media_observer_.get()));
EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
host_->OnGenerateStream(kPageRequestId, options);
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _));
+
WaitForResult();
std::string label = host_->label_;
@@ -231,9 +263,13 @@ TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) {
StreamOptions options(false, true);
// Generate first stream.
+ EXPECT_CALL(*host_, GetMediaObserver())
+ .WillRepeatedly(Return(media_observer_.get()));
EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
host_->OnGenerateStream(kPageRequestId, options);
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
+
WaitForResult();
// Check the latest generated stream.
@@ -249,6 +285,8 @@ TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) {
EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId + 1, 0, 1));
host_->OnGenerateStream(kPageRequestId+1, options);
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
+
WaitForResult();
// Check the latest generated stream.
@@ -266,6 +304,10 @@ TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) {
EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId + 2, 0, 1));
host_->OnGenerateStream(kPageRequestId+2, options);
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesClosed(_, _, _))
+ .Times(3);
+
WaitForResult();
// Check the latest generated stream.
@@ -290,8 +332,11 @@ TEST_F(MediaStreamDispatcherHostTest, GenerateThreeStreams) {
TEST_F(MediaStreamDispatcherHostTest, FailDevice) {
StreamOptions options(false, true);
+ EXPECT_CALL(*host_, GetMediaObserver())
+ .WillRepeatedly(Return(media_observer_.get()));
EXPECT_CALL(*host_, OnStreamGenerated(kRenderId, kPageRequestId, 0, 1));
host_->OnGenerateStream(kPageRequestId, options);
+ EXPECT_CALL(*media_observer_.get(), OnCaptureDevicesOpened(_, _, _));
WaitForResult();
std::string label = host_->label_;
« no previous file with comments | « chrome/chrome_browser.gypi ('k') | content/browser/renderer_host/media/media_stream_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698