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

Side by Side Diff: media/video/capture/screen/screen_capturer_helper_unittest.cc

Issue 15692018: Remove screen capturers from media/video/capture/screen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/video/capture/screen/screen_capturer_helper.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 using webrtc::DesktopRect;
11 using webrtc::DesktopRegion;
12 using webrtc::DesktopSize;
13
14 namespace media {
15
16 class ScreenCapturerHelperTest : public testing::Test {
17 protected:
18 ScreenCapturerHelper capturer_helper_;
19 };
20
21 bool Equals(const DesktopRegion& region1, const DesktopRegion& region2) {
22 DesktopRegion::Iterator iter1(region1);
23 DesktopRegion::Iterator iter2(region2);
24 while (!iter1.IsAtEnd() && !iter1.IsAtEnd()) {
25 if (!iter1.rect().equals(iter2.rect())) {
26 return false;
27 }
28 iter1.Advance();
29 iter2.Advance();
30 }
31 return iter1.IsAtEnd() && iter2.IsAtEnd();
32 }
33
34 bool Equals(const SkRegion& region1, const SkRegion& region2) {
35 SkRegion::Iterator iter1(region1);
36 SkRegion::Iterator iter2(region2);
37 while (!iter1.done() && !iter2.done()) {
38 if (iter1.rect() != iter2.rect()) {
39 return false;
40 }
41 iter1.next();
42 iter2.next();
43 }
44 return iter1.done() && iter2.done();
45 }
46
47 DesktopRegion RectToRegion(const DesktopRect& rect) {
48 webrtc::DesktopRegion result;
49 result.SetRect(rect);
50 return result;
51 }
52
53 TEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) {
54 DesktopRegion region;
55 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4));
56 capturer_helper_.InvalidateRegion(region);
57 capturer_helper_.ClearInvalidRegion();
58 capturer_helper_.TakeInvalidRegion(&region);
59 ASSERT_TRUE(region.is_empty());
60 }
61
62 TEST_F(ScreenCapturerHelperTest, InvalidateRegion) {
63 DesktopRegion region;
64 capturer_helper_.TakeInvalidRegion(&region);
65 ASSERT_TRUE(region.is_empty());
66
67 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4));
68 capturer_helper_.InvalidateRegion(region);
69 capturer_helper_.TakeInvalidRegion(&region);
70 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)), region));
71
72 capturer_helper_.InvalidateRegion(
73 RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)));
74 capturer_helper_.InvalidateRegion(
75 RectToRegion(DesktopRect::MakeXYWH(4, 2, 3, 4)));
76 capturer_helper_.TakeInvalidRegion(&region);
77 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 6, 4)), region));
78 }
79
80 TEST_F(ScreenCapturerHelperTest, InvalidateScreen) {
81 DesktopRegion region;
82 capturer_helper_.InvalidateScreen(DesktopSize(12, 34));
83 capturer_helper_.TakeInvalidRegion(&region);
84 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeWH(12, 34)), region));
85 }
86
87 TEST_F(ScreenCapturerHelperTest, SizeMostRecent) {
88 ASSERT_TRUE(capturer_helper_.size_most_recent().is_empty());
89 capturer_helper_.set_size_most_recent(DesktopSize(12, 34));
90 ASSERT_TRUE(
91 DesktopSize(12, 34).equals(capturer_helper_.size_most_recent()));
92 }
93
94 TEST_F(ScreenCapturerHelperTest, SetLogGridSize) {
95 capturer_helper_.set_size_most_recent(DesktopSize(10, 10));
96
97 DesktopRegion region;
98 capturer_helper_.TakeInvalidRegion(&region);
99 ASSERT_TRUE(Equals(RectToRegion(DesktopRect()), region));
100
101 capturer_helper_.InvalidateRegion(
102 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
103 capturer_helper_.TakeInvalidRegion(&region);
104 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
105
106 capturer_helper_.SetLogGridSize(-1);
107 capturer_helper_.InvalidateRegion(
108 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
109 capturer_helper_.TakeInvalidRegion(&region);
110 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
111
112 capturer_helper_.SetLogGridSize(0);
113 capturer_helper_.InvalidateRegion(
114 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
115 capturer_helper_.TakeInvalidRegion(&region);
116 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
117
118 capturer_helper_.SetLogGridSize(1);
119 capturer_helper_.InvalidateRegion(
120 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
121 capturer_helper_.TakeInvalidRegion(&region);
122 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(6, 6, 2, 2)), region));
123
124 capturer_helper_.SetLogGridSize(2);
125 capturer_helper_.InvalidateRegion(
126 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
127 capturer_helper_.TakeInvalidRegion(&region);
128 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(4, 4, 4, 4)), region));
129
130 capturer_helper_.SetLogGridSize(0);
131 capturer_helper_.InvalidateRegion(
132 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
133 capturer_helper_.TakeInvalidRegion(&region);
134 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
135 }
136
137 void TestExpandRegionToGrid(const SkRegion& region, int log_grid_size,
138 const SkRegion& expandedRegionExpected) {
139 scoped_ptr<SkRegion> expandedRegion1(
140 ScreenCapturerHelper::ExpandToGrid(region, log_grid_size));
141 ASSERT_TRUE(Equals(expandedRegionExpected, *expandedRegion1));
142 scoped_ptr<SkRegion> expandedRegion2(
143 ScreenCapturerHelper::ExpandToGrid(*expandedRegion1, log_grid_size));
144 ASSERT_TRUE(Equals(*expandedRegion1, *expandedRegion2));
145 }
146
147 void TestExpandRectToGrid(int l, int t, int r, int b, int log_grid_size,
148 int lExpanded, int tExpanded,
149 int rExpanded, int bExpanded) {
150 TestExpandRegionToGrid(SkRegion(SkIRect::MakeLTRB(l, t, r, b)), log_grid_size,
151 SkRegion(SkIRect::MakeLTRB(lExpanded, tExpanded,
152 rExpanded, bExpanded)));
153 }
154
155 TEST_F(ScreenCapturerHelperTest, ExpandToGrid) {
156 const int LOG_GRID_SIZE = 4;
157 const int GRID_SIZE = 1 << LOG_GRID_SIZE;
158 for (int i = -2; i <= 2; i++) {
159 int x = i * GRID_SIZE;
160 for (int j = -2; j <= 2; j++) {
161 int y = j * GRID_SIZE;
162 TestExpandRectToGrid(x + 0, y + 0, x + 1, y + 1, LOG_GRID_SIZE,
163 x + 0, y + 0, x + GRID_SIZE, y + GRID_SIZE);
164 TestExpandRectToGrid(x + 0, y + GRID_SIZE - 1, x + 1, y + GRID_SIZE,
165 LOG_GRID_SIZE,
166 x + 0, y + 0, x + GRID_SIZE, y + GRID_SIZE);
167 TestExpandRectToGrid(x + GRID_SIZE - 1, y + GRID_SIZE - 1,
168 x + GRID_SIZE, y + GRID_SIZE, LOG_GRID_SIZE,
169 x + 0, y + 0, x + GRID_SIZE, y + GRID_SIZE);
170 TestExpandRectToGrid(x + GRID_SIZE - 1, y + 0,
171 x + GRID_SIZE, y + 1, LOG_GRID_SIZE,
172 x + 0, y + 0, x + GRID_SIZE, y + GRID_SIZE);
173 TestExpandRectToGrid(x - 1, y + 0, x + 1, y + 1, LOG_GRID_SIZE,
174 x - GRID_SIZE, y + 0, x + GRID_SIZE, y + GRID_SIZE);
175 TestExpandRectToGrid(x - 1, y - 1, x + 1, y + 0, LOG_GRID_SIZE,
176 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y);
177 TestExpandRectToGrid(x + 0, y - 1, x + 1, y + 1, LOG_GRID_SIZE,
178 x, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE);
179 TestExpandRectToGrid(x - 1, y - 1, x + 0, y + 1, LOG_GRID_SIZE,
180 x - GRID_SIZE, y - GRID_SIZE, x, y + GRID_SIZE);
181
182 SkRegion region(SkIRect::MakeLTRB(x - 1, y - 1, x + 1, y + 1));
183 region.op(SkIRect::MakeLTRB(x - 1, y - 1, x + 0, y + 0),
184 SkRegion::kDifference_Op);
185 SkRegion expandedRegionExpected(SkIRect::MakeLTRB(
186 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE));
187 expandedRegionExpected.op(
188 SkIRect::MakeLTRB(x - GRID_SIZE, y - GRID_SIZE, x + 0, y + 0),
189 SkRegion::kDifference_Op);
190 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected);
191
192 region.setRect(SkIRect::MakeLTRB(x - 1, y - 1, x + 1, y + 1));
193 region.op(SkIRect::MakeLTRB(x - 1, y + 0, x + 0, y + 1),
194 SkRegion::kDifference_Op);
195 expandedRegionExpected.setRect(SkIRect::MakeLTRB(
196 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE));
197 expandedRegionExpected.op(
198 SkIRect::MakeLTRB(x - GRID_SIZE, y + 0, x + 0, y + GRID_SIZE),
199 SkRegion::kDifference_Op);
200 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected);
201
202 region.setRect(SkIRect::MakeLTRB(x - 1, y - 1, x + 1, y + 1));
203 region.op(SkIRect::MakeLTRB(x + 0, y + 0, x + 1, y + 1),
204 SkRegion::kDifference_Op);
205 expandedRegionExpected.setRect(SkIRect::MakeLTRB(
206 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE));
207 expandedRegionExpected.op(
208 SkIRect::MakeLTRB(x + 0, y + 0, x + GRID_SIZE, y + GRID_SIZE),
209 SkRegion::kDifference_Op);
210 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected);
211
212 region.setRect(SkIRect::MakeLTRB(x - 1, y - 1, x + 1, y + 1));
213 region.op(SkIRect::MakeLTRB(x + 0, y - 1, x + 1, y + 0),
214 SkRegion::kDifference_Op);
215 expandedRegionExpected.setRect(SkIRect::MakeLTRB(
216 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE));
217 expandedRegionExpected.op(
218 SkIRect::MakeLTRB(x + 0, y - GRID_SIZE, x + GRID_SIZE, y + 0),
219 SkRegion::kDifference_Op);
220 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected);
221 }
222 }
223 }
224
225 } // namespace media
OLDNEW
« no previous file with comments | « media/video/capture/screen/screen_capturer_helper.cc ('k') | media/video/capture/screen/screen_capturer_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698