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

Side by Side Diff: content/renderer/media/video_capture_impl_manager_unittest.cc

Issue 2390103002: Reland: VideoCapture: migrate VideoCapture renderer-->host messages to mojo, part 1 (Closed)
Patch Set: Sorted out tests after linker collision. Rebase Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <array> 5 #include <array>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "content/child/child_process.h" 14 #include "content/child/child_process.h"
15 #include "content/common/media/video_capture_messages.h" 15 #include "content/common/media/video_capture_messages.h"
16 #include "content/common/video_capture.mojom.h"
16 #include "content/renderer/media/video_capture_impl.h" 17 #include "content/renderer/media/video_capture_impl.h"
17 #include "content/renderer/media/video_capture_impl_manager.h" 18 #include "content/renderer/media/video_capture_impl_manager.h"
18 #include "content/renderer/media/video_capture_message_filter.h" 19 #include "content/renderer/media/video_capture_message_filter.h"
19 #include "media/base/bind_to_current_loop.h" 20 #include "media/base/bind_to_current_loop.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 23
23 using ::testing::_; 24 using ::testing::_;
24 using ::testing::DoAll; 25 using ::testing::DoAll;
25 using ::testing::SaveArg; 26 using ::testing::SaveArg;
26 using media::BindToCurrentLoop; 27 using media::BindToCurrentLoop;
27 28
28 namespace content { 29 namespace content {
29 30
30 ACTION_P(RunClosure, closure) { 31 ACTION_P(RunClosure, closure) {
31 closure.Run(); 32 closure.Run();
32 } 33 }
33 34
34 namespace { 35 namespace {
35 36
36 // Callback interface to be implemented by 37 // Callback interface to be implemented by VideoCaptureImplManagerTest.
37 // VideoCaptureImplManagerTest. MockVideoCaptureImpl intercepts IPC messages and 38 // MockVideoCaptureImpl intercepts IPC messages and calls these methods to
38 // calls these methods to simulate what the VideoCaptureHost would do. 39 // simulate what the VideoCaptureHost would do.
39 class PauseResumeCallback { 40 class PauseResumeCallback {
40 public: 41 public:
41 PauseResumeCallback() {} 42 PauseResumeCallback() {}
42 virtual ~PauseResumeCallback() {} 43 virtual ~PauseResumeCallback() {}
43 44
44 virtual void OnPaused(media::VideoCaptureSessionId session_id) = 0; 45 virtual void OnPaused(media::VideoCaptureSessionId session_id) = 0;
45 virtual void OnResumed(media::VideoCaptureSessionId session_id) = 0; 46 virtual void OnResumed(media::VideoCaptureSessionId session_id) = 0;
46 }; 47 };
47 48
48 class MockVideoCaptureImpl : public VideoCaptureImpl { 49 class MockVideoCaptureImpl : public VideoCaptureImpl,
50 public mojom::VideoCaptureHost {
49 public: 51 public:
50 MockVideoCaptureImpl(media::VideoCaptureSessionId session_id, 52 MockVideoCaptureImpl(media::VideoCaptureSessionId session_id,
51 VideoCaptureMessageFilter* filter, 53 VideoCaptureMessageFilter* filter,
52 PauseResumeCallback* pause_callback, 54 PauseResumeCallback* pause_callback,
53 base::Closure destruct_callback) 55 base::Closure destruct_callback)
54 : VideoCaptureImpl(session_id, 56 : VideoCaptureImpl(session_id,
55 filter, 57 filter,
56 ChildProcess::current()->io_task_runner()), 58 ChildProcess::current()->io_task_runner()),
57 pause_callback_(pause_callback), 59 pause_callback_(pause_callback),
58 destruct_callback_(destruct_callback) {} 60 destruct_callback_(destruct_callback) {}
59 61
60 ~MockVideoCaptureImpl() override { destruct_callback_.Run(); } 62 ~MockVideoCaptureImpl() override { destruct_callback_.Run(); }
61 63
62 void Send(IPC::Message* message) override { 64 void Send(IPC::Message* message) override {
63 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message) 65 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message)
64 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Pause, DevicePauseCapture) 66 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Start, Start)
65 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Resume, DeviceResumeCapture) 67 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Resume, Resume)
66 default: 68 default:
67 VideoCaptureImpl::Send(message); 69 VideoCaptureImpl::Send(message);
68 return; 70 return;
69 IPC_END_MESSAGE_MAP() 71 IPC_END_MESSAGE_MAP()
70 delete message; 72 delete message;
71 } 73 }
72 74
73 private: 75 private:
74 void DevicePauseCapture(int device_id) { 76 MOCK_METHOD1(Stop, void(int32_t));
77 MOCK_METHOD1(RequestRefreshFrame, void(int32_t));
78
79 void Start(int device_id,
80 media::VideoCaptureSessionId session_id,
81 const media::VideoCaptureParams& params) {
82 EXPECT_CALL(*this, Stop(_));
83 }
84
85 void Pause(int device_id) {
75 pause_callback_->OnPaused(session_id()); 86 pause_callback_->OnPaused(session_id());
76 } 87 }
77 88
78 void DeviceResumeCapture(int device_id, 89 void Resume(int device_id,
79 media::VideoCaptureSessionId session_id, 90 media::VideoCaptureSessionId session_id,
80 const media::VideoCaptureParams& params) { 91 const media::VideoCaptureParams& params) {
81 pause_callback_->OnResumed(session_id); 92 pause_callback_->OnResumed(session_id);
82 } 93 }
83 94
84 PauseResumeCallback* const pause_callback_; 95 PauseResumeCallback* const pause_callback_;
85 const base::Closure destruct_callback_; 96 const base::Closure destruct_callback_;
86 97
87 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImpl); 98 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImpl);
88 }; 99 };
89 100
90 class MockVideoCaptureImplManager : public VideoCaptureImplManager { 101 class MockVideoCaptureImplManager : public VideoCaptureImplManager {
91 public: 102 public:
92 MockVideoCaptureImplManager(PauseResumeCallback* pause_callback, 103 MockVideoCaptureImplManager(PauseResumeCallback* pause_callback,
93 base::Closure destruct_video_capture_callback) 104 base::Closure destruct_video_capture_callback)
94 : pause_callback_(pause_callback), 105 : pause_callback_(pause_callback),
95 destruct_video_capture_callback_(destruct_video_capture_callback) {} 106 destruct_video_capture_callback_(destruct_video_capture_callback) {}
96 ~MockVideoCaptureImplManager() override {} 107 ~MockVideoCaptureImplManager() override {}
97 108
98 protected: 109 private:
99 std::unique_ptr<VideoCaptureImpl> CreateVideoCaptureImplForTesting( 110 std::unique_ptr<VideoCaptureImpl> CreateVideoCaptureImplForTesting(
100 media::VideoCaptureSessionId id, 111 media::VideoCaptureSessionId id,
101 VideoCaptureMessageFilter* filter) const override { 112 VideoCaptureMessageFilter* filter) const override {
102 return base::MakeUnique<MockVideoCaptureImpl>( 113 auto video_capture_impl = base::MakeUnique<MockVideoCaptureImpl>(
103 id, filter, pause_callback_, destruct_video_capture_callback_); 114 id, filter, pause_callback_, destruct_video_capture_callback_);
115 video_capture_impl->SetVideoCaptureHostForTesting(
116 video_capture_impl.get());
117 return std::move(video_capture_impl);
104 } 118 }
105 119
106 private:
107 PauseResumeCallback* const pause_callback_; 120 PauseResumeCallback* const pause_callback_;
108 const base::Closure destruct_video_capture_callback_; 121 const base::Closure destruct_video_capture_callback_;
109 122
110 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImplManager); 123 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImplManager);
111 }; 124 };
112 125
113 } // namespace 126 } // namespace
114 127
115 class VideoCaptureImplManagerTest : public ::testing::Test, 128 class VideoCaptureImplManagerTest : public ::testing::Test,
116 public PauseResumeCallback { 129 public PauseResumeCallback {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 run_loop.Run(); 307 run_loop.Run();
295 } 308 }
296 309
297 StopCaptureForAllClients(&stop_callbacks); 310 StopCaptureForAllClients(&stop_callbacks);
298 for (size_t i = 0; i < kNumClients; ++i) 311 for (size_t i = 0; i < kNumClients; ++i)
299 release_callbacks[i].Run(); 312 release_callbacks[i].Run();
300 cleanup_run_loop_.Run(); 313 cleanup_run_loop_.Run();
301 } 314 }
302 315
303 } // namespace content 316 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/video_capture_impl_manager.cc ('k') | content/renderer/media/video_capture_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698