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

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

Issue 2430313007: VideoCapture: remove last remnants of IPC (Closed)
Patch Set: rockot@ comment on using ChildThread 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"
16 #include "content/common/video_capture.mojom.h" 15 #include "content/common/video_capture.mojom.h"
17 #include "content/renderer/media/video_capture_impl.h" 16 #include "content/renderer/media/video_capture_impl.h"
18 #include "content/renderer/media/video_capture_impl_manager.h" 17 #include "content/renderer/media/video_capture_impl_manager.h"
19 #include "content/renderer/media/video_capture_message_filter.h"
20 #include "media/base/bind_to_current_loop.h" 18 #include "media/base/bind_to_current_loop.h"
21 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
23 21
24 using ::testing::_; 22 using ::testing::_;
25 using ::testing::DoAll; 23 using ::testing::DoAll;
26 using ::testing::SaveArg; 24 using ::testing::SaveArg;
27 using media::BindToCurrentLoop; 25 using media::BindToCurrentLoop;
28 26
29 namespace content { 27 namespace content {
(...skipping 13 matching lines...) Expand all
43 virtual ~PauseResumeCallback() {} 41 virtual ~PauseResumeCallback() {}
44 42
45 virtual void OnPaused(media::VideoCaptureSessionId session_id) = 0; 43 virtual void OnPaused(media::VideoCaptureSessionId session_id) = 0;
46 virtual void OnResumed(media::VideoCaptureSessionId session_id) = 0; 44 virtual void OnResumed(media::VideoCaptureSessionId session_id) = 0;
47 }; 45 };
48 46
49 class MockVideoCaptureImpl : public VideoCaptureImpl, 47 class MockVideoCaptureImpl : public VideoCaptureImpl,
50 public mojom::VideoCaptureHost { 48 public mojom::VideoCaptureHost {
51 public: 49 public:
52 MockVideoCaptureImpl(media::VideoCaptureSessionId session_id, 50 MockVideoCaptureImpl(media::VideoCaptureSessionId session_id,
53 VideoCaptureMessageFilter* filter,
54 PauseResumeCallback* pause_callback, 51 PauseResumeCallback* pause_callback,
55 base::Closure destruct_callback) 52 base::Closure destruct_callback)
56 : VideoCaptureImpl(session_id, 53 : VideoCaptureImpl(session_id),
57 filter,
58 ChildProcess::current()->io_task_runner()),
59 pause_callback_(pause_callback), 54 pause_callback_(pause_callback),
60 destruct_callback_(destruct_callback) {} 55 destruct_callback_(destruct_callback) {}
61 56
62 ~MockVideoCaptureImpl() override { destruct_callback_.Run(); } 57 ~MockVideoCaptureImpl() override { destruct_callback_.Run(); }
63 58
64 private: 59 private:
65 void Start(int32_t device_id, 60 void Start(int32_t device_id,
66 int32_t session_id, 61 int32_t session_id,
67 const media::VideoCaptureParams& params, 62 const media::VideoCaptureParams& params,
68 mojom::VideoCaptureObserverPtr observer) override { 63 mojom::VideoCaptureObserverPtr observer) override {
(...skipping 23 matching lines...) Expand all
92 87
93 PauseResumeCallback* const pause_callback_; 88 PauseResumeCallback* const pause_callback_;
94 const base::Closure destruct_callback_; 89 const base::Closure destruct_callback_;
95 90
96 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImpl); 91 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImpl);
97 }; 92 };
98 93
99 class MockVideoCaptureImplManager : public VideoCaptureImplManager { 94 class MockVideoCaptureImplManager : public VideoCaptureImplManager {
100 public: 95 public:
101 MockVideoCaptureImplManager(PauseResumeCallback* pause_callback, 96 MockVideoCaptureImplManager(PauseResumeCallback* pause_callback,
102 base::Closure destruct_video_capture_callback) 97 base::Closure stop_capture_callback)
103 : pause_callback_(pause_callback), 98 : pause_callback_(pause_callback),
104 destruct_video_capture_callback_(destruct_video_capture_callback) {} 99 stop_capture_callback_(stop_capture_callback) {}
105 ~MockVideoCaptureImplManager() override {} 100 ~MockVideoCaptureImplManager() override {}
106 101
107 private: 102 private:
108 std::unique_ptr<VideoCaptureImpl> CreateVideoCaptureImplForTesting( 103 std::unique_ptr<VideoCaptureImpl> CreateVideoCaptureImplForTesting(
109 media::VideoCaptureSessionId id, 104 media::VideoCaptureSessionId session_id) const override {
110 VideoCaptureMessageFilter* filter) const override {
111 auto video_capture_impl = base::MakeUnique<MockVideoCaptureImpl>( 105 auto video_capture_impl = base::MakeUnique<MockVideoCaptureImpl>(
112 id, filter, pause_callback_, destruct_video_capture_callback_); 106 session_id, pause_callback_, stop_capture_callback_);
113 video_capture_impl->SetVideoCaptureHostForTesting( 107 video_capture_impl->SetVideoCaptureHostForTesting(video_capture_impl.get());
114 video_capture_impl.get());
115 return std::move(video_capture_impl); 108 return std::move(video_capture_impl);
116 } 109 }
117 110
118 PauseResumeCallback* const pause_callback_; 111 PauseResumeCallback* const pause_callback_;
119 const base::Closure destruct_video_capture_callback_; 112 const base::Closure stop_capture_callback_;
120 113
121 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImplManager); 114 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureImplManager);
122 }; 115 };
123 116
124 } // namespace 117 } // namespace
125 118
126 class VideoCaptureImplManagerTest : public ::testing::Test, 119 class VideoCaptureImplManagerTest : public ::testing::Test,
127 public PauseResumeCallback { 120 public PauseResumeCallback {
128 public: 121 public:
129 VideoCaptureImplManagerTest() 122 VideoCaptureImplManagerTest()
(...skipping 14 matching lines...) Expand all
144 .RetiresOnSaturation(); 137 .RetiresOnSaturation();
145 std::array<base::Closure, kNumClients> stop_callbacks; 138 std::array<base::Closure, kNumClients> stop_callbacks;
146 media::VideoCaptureParams params; 139 media::VideoCaptureParams params;
147 params.requested_format = media::VideoCaptureFormat( 140 params.requested_format = media::VideoCaptureFormat(
148 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420); 141 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420);
149 for (size_t i = 0; i < kNumClients; ++i) { 142 for (size_t i = 0; i < kNumClients; ++i) {
150 stop_callbacks[i] = StartCapture( 143 stop_callbacks[i] = StartCapture(
151 same_session_id ? 0 : static_cast<media::VideoCaptureSessionId>(i), 144 same_session_id ? 0 : static_cast<media::VideoCaptureSessionId>(i),
152 params); 145 params);
153 } 146 }
154 child_process_.io_task_runner()->PostTask(
155 FROM_HERE,
156 base::Bind(&VideoCaptureMessageFilter::OnFilterAdded,
157 base::Unretained(manager_->video_capture_message_filter()),
158 nullptr));
159 run_loop.Run(); 147 run_loop.Run();
160 return stop_callbacks; 148 return stop_callbacks;
161 } 149 }
162 150
163 void StopCaptureForAllClients( 151 void StopCaptureForAllClients(
164 std::array<base::Closure, kNumClients>* stop_callbacks) { 152 std::array<base::Closure, kNumClients>* stop_callbacks) {
165 base::RunLoop run_loop; 153 base::RunLoop run_loop;
166 base::Closure quit_closure = BindToCurrentLoop(run_loop.QuitClosure()); 154 base::Closure quit_closure = BindToCurrentLoop(run_loop.QuitClosure());
167 EXPECT_CALL(*this, OnStopped(_)).Times(kNumClients - 1) 155 EXPECT_CALL(*this, OnStopped(_)).Times(kNumClients - 1)
168 .RetiresOnSaturation(); 156 .RetiresOnSaturation();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 run_loop.Run(); 292 run_loop.Run();
305 } 293 }
306 294
307 StopCaptureForAllClients(&stop_callbacks); 295 StopCaptureForAllClients(&stop_callbacks);
308 for (const auto& release_callback : release_callbacks) 296 for (const auto& release_callback : release_callbacks)
309 release_callback.Run(); 297 release_callback.Run();
310 cleanup_run_loop_.Run(); 298 cleanup_run_loop_.Run();
311 } 299 }
312 300
313 } // namespace content 301 } // 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