Chromium Code Reviews| 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..e6e8ccceb3e0a2966807e2c62d711269b30317d9 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,44 @@ 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() {} |
| + MockVideoCaptureImplManager(base::Closure destruct_callback) |
| + : destruct_callback_(destruct_callback) {} |
|
Ami GONE FROM CHROMIUM
2014/01/13 22:15:04
explicit
Ami GONE FROM CHROMIUM
2014/01/13 22:15:04
member & arg names fail to connote that this cb is
|
| protected: |
| virtual VideoCaptureImpl* CreateVideoCaptureImpl( |
| media::VideoCaptureSessionId id, |
| VideoCaptureMessageFilter* filter) const OVERRIDE { |
| - return new MockVideoCaptureImpl(id, filter); |
| + return new MockVideoCaptureImpl(id, filter, destruct_callback_); |
| } |
| private: |
| + base::Closure destruct_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 +88,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 +144,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 |