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

Side by Side Diff: webrtc/modules/desktop_capture/desktop_and_cursor_composer_unittest.cc

Issue 2030333003: Revert of Use std::unique_ptr<> to pass frame ownership in DesktopCapturer impls. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 6 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 return frame; 71 return frame;
72 } 72 }
73 73
74 class FakeScreenCapturer : public DesktopCapturer { 74 class FakeScreenCapturer : public DesktopCapturer {
75 public: 75 public:
76 FakeScreenCapturer() {} 76 FakeScreenCapturer() {}
77 77
78 void Start(Callback* callback) override { callback_ = callback; } 78 void Start(Callback* callback) override { callback_ = callback; }
79 79
80 void Capture(const DesktopRegion& region) override { 80 void Capture(const DesktopRegion& region) override {
81 callback_->OnCaptureResult( 81 callback_->OnCaptureCompleted(next_frame_.release());
82 next_frame_ ? Result::SUCCESS : Result::ERROR_TEMPORARY,
83 std::move(next_frame_));
84 } 82 }
85 83
86 void SetNextFrame(std::unique_ptr<DesktopFrame> next_frame) { 84 void SetNextFrame(DesktopFrame* next_frame) {
87 next_frame_ = std::move(next_frame); 85 next_frame_.reset(next_frame);
88 } 86 }
89 87
90 private: 88 private:
91 Callback* callback_ = nullptr; 89 Callback* callback_;
92 90
93 std::unique_ptr<DesktopFrame> next_frame_; 91 std::unique_ptr<DesktopFrame> next_frame_;
94 }; 92 };
95 93
96 class FakeMouseMonitor : public MouseCursorMonitor { 94 class FakeMouseMonitor : public MouseCursorMonitor {
97 public: 95 public:
98 FakeMouseMonitor() : changed_(true) {} 96 FakeMouseMonitor() : changed_(true) {}
99 97
100 void SetState(CursorState state, const DesktopVector& pos) { 98 void SetState(CursorState state, const DesktopVector& pos) {
101 state_ = state; 99 state_ = state;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 } 158 }
161 } 159 }
162 } 160 }
163 161
164 class DesktopAndCursorComposerTest : public testing::Test, 162 class DesktopAndCursorComposerTest : public testing::Test,
165 public DesktopCapturer::Callback { 163 public DesktopCapturer::Callback {
166 public: 164 public:
167 DesktopAndCursorComposerTest() 165 DesktopAndCursorComposerTest()
168 : fake_screen_(new FakeScreenCapturer()), 166 : fake_screen_(new FakeScreenCapturer()),
169 fake_cursor_(new FakeMouseMonitor()), 167 fake_cursor_(new FakeMouseMonitor()),
170 blender_(fake_screen_, fake_cursor_) {} 168 blender_(fake_screen_, fake_cursor_) {
169 }
171 170
172 // DesktopCapturer::Callback interface 171 // DesktopCapturer::Callback interface
173 void OnCaptureResult(DesktopCapturer::Result result, 172 void OnCaptureCompleted(DesktopFrame* frame) override { frame_.reset(frame); }
174 std::unique_ptr<DesktopFrame> frame) override {
175 frame_ = std::move(frame);
176 }
177 173
178 protected: 174 protected:
179 // Owned by |blender_|. 175 // Owned by |blender_|.
180 FakeScreenCapturer* fake_screen_; 176 FakeScreenCapturer* fake_screen_;
181 FakeMouseMonitor* fake_cursor_; 177 FakeMouseMonitor* fake_cursor_;
182 178
183 DesktopAndCursorComposer blender_; 179 DesktopAndCursorComposer blender_;
184 std::unique_ptr<DesktopFrame> frame_; 180 std::unique_ptr<DesktopFrame> frame_;
185 }; 181 };
186 182
187 // Verify DesktopAndCursorComposer can handle the case when the screen capturer 183 // Verify DesktopAndCursorComposer can handle the case when the screen capturer
188 // fails. 184 // fails.
189 TEST_F(DesktopAndCursorComposerTest, Error) { 185 TEST_F(DesktopAndCursorComposerTest, Error) {
190 blender_.Start(this); 186 blender_.Start(this);
191 187
192 fake_cursor_->SetHotspot(DesktopVector()); 188 fake_cursor_->SetHotspot(DesktopVector());
193 fake_cursor_->SetState(MouseCursorMonitor::INSIDE, DesktopVector()); 189 fake_cursor_->SetState(MouseCursorMonitor::INSIDE, DesktopVector());
194 fake_screen_->SetNextFrame(nullptr); 190 fake_screen_->SetNextFrame(NULL);
195 191
196 blender_.Capture(DesktopRegion()); 192 blender_.Capture(DesktopRegion());
197 193
198 EXPECT_FALSE(frame_); 194 EXPECT_FALSE(frame_);
199 } 195 }
200 196
201 TEST_F(DesktopAndCursorComposerTest, Blend) { 197 TEST_F(DesktopAndCursorComposerTest, Blend) {
202 struct { 198 struct {
203 int x, y; 199 int x, y;
204 int hotspot_x, hotspot_y; 200 int hotspot_x, hotspot_y;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 // Verify that the cursor is erased before the frame buffer is returned to 240 // Verify that the cursor is erased before the frame buffer is returned to
245 // the screen capturer. 241 // the screen capturer.
246 frame_.reset(); 242 frame_.reset();
247 VerifyFrame(*frame, MouseCursorMonitor::OUTSIDE, DesktopVector()); 243 VerifyFrame(*frame, MouseCursorMonitor::OUTSIDE, DesktopVector());
248 } 244 }
249 } 245 }
250 246
251 } // namespace 247 } // namespace
252 248
253 } // namespace webrtc 249 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/desktop_capture/desktop_and_cursor_composer.cc ('k') | webrtc/modules/desktop_capture/desktop_capturer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698