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

Unified Diff: content/renderer/media/video_capture_impl_unittest.cc

Issue 120893002: Eliminate video capture thread in renderer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: upload again Created 6 years, 11 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/renderer/media/video_capture_impl_unittest.cc
diff --git a/content/renderer/media/video_capture_impl_unittest.cc b/content/renderer/media/video_capture_impl_unittest.cc
index 713b3a06d4fba6ac7c0e51812e909fdf7cf2e4f4..2c9c75a9e16a88703f8d95c5b8cf0672c06fb064 100644
--- a/content/renderer/media/video_capture_impl_unittest.cc
+++ b/content/renderer/media/video_capture_impl_unittest.cc
@@ -3,15 +3,18 @@
// found in the LICENSE file.
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "content/child/child_process.h"
#include "content/common/media/video_capture_messages.h"
#include "content/renderer/media/video_capture_impl.h"
+#include "media/base/bind_to_current_loop.h"
+#include "media/video/capture/mock_video_capture_event_handler.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::_;
using ::testing::AtLeast;
-using ::testing::Return;
+using media::MockVideoCaptureEventHandler;
namespace content {
@@ -29,36 +32,13 @@ class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter {
DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureMessageFilter);
};
-class MockVideoCaptureClient : public media::VideoCapture::EventHandler {
- public:
- MockVideoCaptureClient() {}
- virtual ~MockVideoCaptureClient() {}
-
- // EventHandler implementation.
- MOCK_METHOD1(OnStarted, void(media::VideoCapture* capture));
- MOCK_METHOD1(OnStopped, void(media::VideoCapture* capture));
- MOCK_METHOD1(OnPaused, void(media::VideoCapture* capture));
- MOCK_METHOD2(OnError, void(media::VideoCapture* capture, int error_code));
- MOCK_METHOD1(OnRemoved, void(media::VideoCapture* capture));
- MOCK_METHOD2(OnFrameReady,
- void(media::VideoCapture* capture,
- const scoped_refptr<media::VideoFrame>& frame));
- MOCK_METHOD2(OnDeviceInfoReceived,
- void(media::VideoCapture* capture,
- const media::VideoCaptureFormat& device_info));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureClient);
-};
-
class VideoCaptureImplTest : public ::testing::Test {
public:
class MockVideoCaptureImpl : public VideoCaptureImpl {
public:
MockVideoCaptureImpl(const media::VideoCaptureSessionId id,
- scoped_refptr<base::MessageLoopProxy> ml_proxy,
VideoCaptureMessageFilter* filter)
- : VideoCaptureImpl(id, ml_proxy.get(), filter) {}
+ : VideoCaptureImpl(id, filter) {}
virtual ~MockVideoCaptureImpl() {}
// Override Send() to mimic device to send events.
@@ -102,15 +82,13 @@ class VideoCaptureImplTest : public ::testing::Test {
params_large_.requested_format = media::VideoCaptureFormat(
gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
- message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_IO));
- message_loop_proxy_ = base::MessageLoopProxy::current().get();
child_process_.reset(new ChildProcess());
message_filter_ = new MockVideoCaptureMessageFilter;
session_id_ = 1;
video_capture_impl_ = new MockVideoCaptureImpl(
- session_id_, message_loop_proxy_, message_filter_.get());
+ session_id_, message_filter_.get());
video_capture_impl_->device_id_ = 2;
}
@@ -120,8 +98,8 @@ class VideoCaptureImplTest : public ::testing::Test {
}
protected:
- scoped_ptr<base::MessageLoop> message_loop_;
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
+ base::MessageLoop message_loop_;
+ base::RunLoop run_loop_;
scoped_ptr<ChildProcess> child_process_;
scoped_refptr<MockVideoCaptureMessageFilter> message_filter_;
media::VideoCaptureSessionId session_id_;
@@ -135,141 +113,89 @@ class VideoCaptureImplTest : public ::testing::Test {
TEST_F(VideoCaptureImplTest, Simple) {
// Execute SetCapture() and StopCapture() for one client.
- scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient);
+ scoped_ptr<MockVideoCaptureEventHandler> client(
+ new MockVideoCaptureEventHandler);
- EXPECT_CALL(*client, OnStarted(_))
- .WillOnce(Return());
+ EXPECT_CALL(*client, OnStarted(_));
+ EXPECT_CALL(*client, OnStopped(_));
+ EXPECT_CALL(*client, OnRemoved(_));
video_capture_impl_->StartCapture(client.get(), params_small_);
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client, OnRemoved(_))
- .WillOnce(Return());
-
video_capture_impl_->StopCapture(client.get());
- message_loop_->RunUntilIdle();
+ video_capture_impl_->DeInit(
+ media::BindToCurrentLoop(run_loop_.QuitClosure()));
+ run_loop_.Run();
}
TEST_F(VideoCaptureImplTest, TwoClientsInSequence) {
// Execute SetCapture() and StopCapture() for 2 clients in sequence.
- scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient);
-
- EXPECT_CALL(*client, OnStarted(_))
- .WillOnce(Return());
-
- video_capture_impl_->StartCapture(client.get(), params_small_);
- message_loop_->RunUntilIdle();
+ scoped_ptr<MockVideoCaptureEventHandler> client1(
+ new MockVideoCaptureEventHandler);
+ scoped_ptr<MockVideoCaptureEventHandler> client2(
+ new MockVideoCaptureEventHandler);
+
+ EXPECT_CALL(*client1, OnStarted(_));
+ EXPECT_CALL(*client1, OnStopped(_));
+ EXPECT_CALL(*client1, OnRemoved(_));
+ EXPECT_CALL(*client2, OnStarted(_));
+ EXPECT_CALL(*client2, OnStopped(_));
+ EXPECT_CALL(*client2, OnRemoved(_));
- EXPECT_CALL(*client, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client, OnRemoved(_))
- .WillOnce(Return());
-
- video_capture_impl_->StopCapture(client.get());
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client, OnStarted(_))
- .WillOnce(Return());
-
- video_capture_impl_->StartCapture(client.get(), params_small_);
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client, OnRemoved(_))
- .WillOnce(Return());
-
- video_capture_impl_->StopCapture(client.get());
- message_loop_->RunUntilIdle();
+ video_capture_impl_->StartCapture(client1.get(), params_small_);
+ video_capture_impl_->StopCapture(client1.get());
+ video_capture_impl_->StartCapture(client2.get(), params_small_);
+ video_capture_impl_->StopCapture(client2.get());
+ video_capture_impl_->DeInit(
+ media::BindToCurrentLoop(run_loop_.QuitClosure()));
+ run_loop_.Run();
}
TEST_F(VideoCaptureImplTest, LargeAndSmall) {
// Execute SetCapture() and StopCapture() for 2 clients simultaneously.
// The large client starts first and stops first.
- scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient);
- scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient);
-
- EXPECT_CALL(*client_large, OnStarted(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnStarted(_))
- .WillOnce(Return());
+ scoped_ptr<MockVideoCaptureEventHandler> client_small(
+ new MockVideoCaptureEventHandler);
+ scoped_ptr<MockVideoCaptureEventHandler> client_large(
+ new MockVideoCaptureEventHandler);
+
+ EXPECT_CALL(*client_large, OnStarted(_));
+ EXPECT_CALL(*client_small, OnStarted(_));
+ EXPECT_CALL(*client_large, OnStopped(_));
+ EXPECT_CALL(*client_large, OnRemoved(_));
+ EXPECT_CALL(*client_small, OnStopped(_));
+ EXPECT_CALL(*client_small, OnRemoved(_));
video_capture_impl_->StartCapture(client_large.get(), params_large_);
video_capture_impl_->StartCapture(client_small.get(), params_small_);
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client_large, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_large, OnRemoved(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnRemoved(_))
- .WillOnce(Return());
-
video_capture_impl_->StopCapture(client_large.get());
video_capture_impl_->StopCapture(client_small.get());
- message_loop_->RunUntilIdle();
+ video_capture_impl_->DeInit(
+ media::BindToCurrentLoop(run_loop_.QuitClosure()));
+ run_loop_.Run();
}
TEST_F(VideoCaptureImplTest, SmallAndLarge) {
// Execute SetCapture() and StopCapture() for 2 clients simultaneously.
// The small client starts first and stops first.
- scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient);
- scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient);
-
- EXPECT_CALL(*client_large, OnStarted(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnStarted(_))
- .WillOnce(Return());
+ scoped_ptr<MockVideoCaptureEventHandler> client_small(
+ new MockVideoCaptureEventHandler);
+ scoped_ptr<MockVideoCaptureEventHandler> client_large(
+ new MockVideoCaptureEventHandler);
+
+ EXPECT_CALL(*client_small, OnStarted(_));
+ EXPECT_CALL(*client_large, OnStarted(_));
+ EXPECT_CALL(*client_small, OnStopped(_));
+ EXPECT_CALL(*client_small, OnRemoved(_));
+ EXPECT_CALL(*client_large, OnStopped(_));
+ EXPECT_CALL(*client_large, OnRemoved(_));
video_capture_impl_->StartCapture(client_small.get(), params_small_);
video_capture_impl_->StartCapture(client_large.get(), params_large_);
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client_large, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_large, OnRemoved(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client_small, OnRemoved(_))
- .WillOnce(Return());
-
video_capture_impl_->StopCapture(client_small.get());
video_capture_impl_->StopCapture(client_large.get());
- message_loop_->RunUntilIdle();
-}
-
-TEST_F(VideoCaptureImplTest, TwoClientsWithSameSize) {
- // Execute SetCapture() and StopCapture() for 2 clients simultaneously.
- // The client1 starts first and stops first.
- scoped_ptr<MockVideoCaptureClient> client1(new MockVideoCaptureClient);
- scoped_ptr<MockVideoCaptureClient> client2(new MockVideoCaptureClient);
-
- EXPECT_CALL(*client1, OnStarted(_))
- .WillOnce(Return());
- EXPECT_CALL(*client2, OnStarted(_))
- .WillOnce(Return());
-
- video_capture_impl_->StartCapture(client1.get(), params_small_);
- video_capture_impl_->StartCapture(client2.get(), params_small_);
- message_loop_->RunUntilIdle();
-
- EXPECT_CALL(*client1, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client1, OnRemoved(_))
- .WillOnce(Return());
- EXPECT_CALL(*client2, OnStopped(_))
- .WillOnce(Return());
- EXPECT_CALL(*client2, OnRemoved(_))
- .WillOnce(Return());
-
- video_capture_impl_->StopCapture(client1.get());
- video_capture_impl_->StopCapture(client2.get());
- message_loop_->RunUntilIdle();
+ video_capture_impl_->DeInit(
+ media::BindToCurrentLoop(run_loop_.QuitClosure()));
+ run_loop_.Run();
}
} // namespace content
« no previous file with comments | « content/renderer/media/video_capture_impl_manager_unittest.cc ('k') | content/renderer/pepper/pepper_platform_video_capture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698