| Index: content/renderer/media/video_capture_impl_manager_unittest.cc
|
| diff --git a/content/renderer/media/video_capture_impl_manager_unittest.cc b/content/renderer/media/video_capture_impl_manager_unittest.cc
|
| index 33b9935d8c5ffe4c7ad24fe5530d5f1c972f452b..98f2b5645e773fa0c6263384c6189343d6062156 100644
|
| --- a/content/renderer/media/video_capture_impl_manager_unittest.cc
|
| +++ b/content/renderer/media/video_capture_impl_manager_unittest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/bind.h"
|
| +#include "base/callback.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| @@ -30,38 +31,48 @@ ACTION_P(RunClosure, closure) {
|
| class MockVideoCaptureImpl : public VideoCaptureImpl {
|
| public:
|
| MockVideoCaptureImpl(media::VideoCaptureSessionId session_id,
|
| - VideoCaptureMessageFilter* filter)
|
| - : VideoCaptureImpl(session_id, filter) {
|
| + VideoCaptureMessageFilter* filter,
|
| + base::Closure destruct_callback)
|
| + : VideoCaptureImpl(session_id, filter),
|
| + destruct_callback_(destruct_callback) {
|
| }
|
|
|
| virtual ~MockVideoCaptureImpl() {
|
| - Destruct();
|
| + destruct_callback_.Run();
|
| }
|
|
|
| - MOCK_METHOD0(Destruct, void());
|
| -
|
| private:
|
| + base::Closure destruct_callback_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImpl);
|
| };
|
|
|
| class MockVideoCaptureImplManager : public VideoCaptureImplManager {
|
| public:
|
| - MockVideoCaptureImplManager() {}
|
| + explicit MockVideoCaptureImplManager(
|
| + base::Closure destruct_video_capture_callback)
|
| + : destruct_video_capture_callback_(
|
| + destruct_video_capture_callback) {}
|
|
|
| protected:
|
| virtual VideoCaptureImpl* CreateVideoCaptureImpl(
|
| media::VideoCaptureSessionId id,
|
| VideoCaptureMessageFilter* filter) const OVERRIDE {
|
| - return new MockVideoCaptureImpl(id, filter);
|
| + return new MockVideoCaptureImpl(id,
|
| + filter,
|
| + destruct_video_capture_callback_);
|
| }
|
|
|
| private:
|
| + base::Closure destruct_video_capture_callback_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImplManager);
|
| };
|
|
|
| class VideoCaptureImplManagerTest : public ::testing::Test {
|
| public:
|
| - VideoCaptureImplManagerTest() {
|
| + VideoCaptureImplManagerTest()
|
| + : manager_(BindToCurrentLoop(cleanup_run_loop_.QuitClosure())) {
|
| params_.requested_format = media::VideoCaptureFormat(
|
| gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420);
|
| child_process_.reset(new ChildProcess());
|
| @@ -81,14 +92,11 @@ class VideoCaptureImplManagerTest : public ::testing::Test {
|
| manager_.video_capture_message_filter()->OnFilterAdded(NULL);
|
| }
|
|
|
| - void Quit(base::RunLoop* run_loop) {
|
| - message_loop_.PostTask(FROM_HERE, run_loop->QuitClosure());
|
| - }
|
| -
|
| protected:
|
| base::MessageLoop message_loop_;
|
| scoped_ptr<ChildProcess> child_process_;
|
| media::VideoCaptureParams params_;
|
| + base::RunLoop cleanup_run_loop_;
|
| MockVideoCaptureImplManager manager_;
|
|
|
| private:
|
| @@ -140,9 +148,11 @@ TEST_F(VideoCaptureImplManagerTest, MultipleClients) {
|
| handle2->StopCapture(client2.get());
|
| run_loop.Run();
|
| }
|
| -
|
| EXPECT_TRUE(device1 == device2);
|
| - EXPECT_CALL(*static_cast<MockVideoCaptureImpl*>(device1), Destruct());
|
| +
|
| + handle1.reset();
|
| + handle2.reset();
|
| + cleanup_run_loop_.Run();
|
| }
|
|
|
| } // namespace content
|
|
|