OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "media/video/capture/screen/screen_capturer_helper.h" | 5 #include "media/video/capture/screen/screen_capturer_helper.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 using webrtc::DesktopRect; | |
11 using webrtc::DesktopRegion; | |
12 using webrtc::DesktopSize; | |
13 | |
10 namespace media { | 14 namespace media { |
11 | 15 |
12 class ScreenCapturerHelperTest : public testing::Test { | 16 class ScreenCapturerHelperTest : public testing::Test { |
13 protected: | 17 protected: |
14 ScreenCapturerHelper capturer_helper_; | 18 ScreenCapturerHelper capturer_helper_; |
15 }; | 19 }; |
16 | 20 |
17 bool Equals(const SkRegion& region1, const SkRegion& region2) { | 21 bool SkRegionEquals(const SkRegion& region1, const SkRegion& region2) { |
18 SkRegion::Iterator iter1(region1); | 22 SkRegion::Iterator iter1(region1); |
19 SkRegion::Iterator iter2(region2); | 23 SkRegion::Iterator iter2(region2); |
20 while (!iter1.done()) { | 24 while (!iter1.done()) { |
21 SkIRect rect1 = iter1.rect(); | 25 SkIRect rect1 = iter1.rect(); |
22 iter1.next(); | 26 iter1.next(); |
23 if (iter2.done()) { | 27 if (iter2.done()) { |
24 return false; | 28 return false; |
25 } | 29 } |
26 SkIRect rect2 = iter2.rect(); | 30 SkIRect rect2 = iter2.rect(); |
27 iter2.next(); | 31 iter2.next(); |
28 if (rect1 != rect2) { | 32 if (rect1 != rect2) { |
29 return false; | 33 return false; |
30 } | 34 } |
31 } | 35 } |
32 if (!iter2.done()) { | 36 if (!iter2.done()) { |
33 return false; | 37 return false; |
34 } | 38 } |
35 return true; | 39 return true; |
36 } | 40 } |
37 | 41 |
42 bool Equals(const DesktopRegion& region1, const DesktopRegion& region2) { | |
alexeypa (please no reviews)
2013/05/08 22:24:59
nit: DesktopRegionEquals?
I guess it is better t
Sergey Ulanov
2013/05/09 18:49:02
Done.
| |
43 DesktopRegion::Iterator iter1(region1); | |
44 DesktopRegion::Iterator iter2(region2); | |
45 while (!iter1.IsAtEnd()) { | |
alexeypa (please no reviews)
2013/05/08 22:24:59
nit: It is easier to follow the logic if the loop
Sergey Ulanov
2013/05/09 18:49:02
Done.
| |
46 DesktopRect rect1 = iter1.rect(); | |
47 iter1.Advance(); | |
48 if (iter2.IsAtEnd()) { | |
49 return false; | |
50 } | |
51 DesktopRect rect2 = iter2.rect(); | |
52 iter2.Advance(); | |
53 if (!rect1.equals(rect2)) { | |
54 return false; | |
55 } | |
56 } | |
57 if (!iter2.IsAtEnd()) { | |
58 return false; | |
59 } | |
60 return true; | |
61 } | |
62 | |
63 DesktopRegion RectToRegion(const DesktopRect& rect) { | |
64 webrtc::DesktopRegion result; | |
65 result.SetRect(rect); | |
66 return result; | |
67 } | |
68 | |
38 TEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) { | 69 TEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) { |
39 SkRegion region; | 70 DesktopRegion region; |
40 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); | 71 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4)); |
72 capturer_helper_.InvalidateRegion(region); | |
41 capturer_helper_.ClearInvalidRegion(); | 73 capturer_helper_.ClearInvalidRegion(); |
42 capturer_helper_.SwapInvalidRegion(®ion); | 74 capturer_helper_.TakeInvalidRegion(®ion); |
43 ASSERT_TRUE(region.isEmpty()); | 75 ASSERT_TRUE(region.is_empty()); |
44 } | 76 } |
45 | 77 |
46 TEST_F(ScreenCapturerHelperTest, InvalidateRegion) { | 78 TEST_F(ScreenCapturerHelperTest, InvalidateRegion) { |
47 SkRegion region; | 79 DesktopRegion region; |
48 capturer_helper_.SwapInvalidRegion(®ion); | 80 capturer_helper_.TakeInvalidRegion(®ion); |
49 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeEmpty()), region)); | 81 ASSERT_TRUE(region.is_empty()); |
50 | 82 |
51 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); | 83 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4)); |
52 region.setEmpty(); | 84 capturer_helper_.InvalidateRegion(region); |
53 capturer_helper_.SwapInvalidRegion(®ion); | 85 capturer_helper_.TakeInvalidRegion(®ion); |
54 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4)), region)); | 86 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)), region)); |
55 | 87 |
56 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); | 88 capturer_helper_.InvalidateRegion( |
57 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(4, 2, 3, 4))); | 89 RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4))); |
58 region.setEmpty(); | 90 capturer_helper_.InvalidateRegion( |
59 capturer_helper_.SwapInvalidRegion(®ion); | 91 RectToRegion(DesktopRect::MakeXYWH(4, 2, 3, 4))); |
60 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(1, 2, 6, 4)), region)); | 92 capturer_helper_.TakeInvalidRegion(®ion); |
93 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 6, 4)), region)); | |
61 } | 94 } |
62 | 95 |
63 TEST_F(ScreenCapturerHelperTest, InvalidateScreen) { | 96 TEST_F(ScreenCapturerHelperTest, InvalidateScreen) { |
64 SkRegion region; | 97 DesktopRegion region; |
65 capturer_helper_.InvalidateScreen(SkISize::Make(12, 34)); | 98 capturer_helper_.InvalidateScreen(DesktopSize(12, 34)); |
66 capturer_helper_.SwapInvalidRegion(®ion); | 99 capturer_helper_.TakeInvalidRegion(®ion); |
67 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeWH(12, 34)), region)); | 100 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeWH(12, 34)), region)); |
68 } | |
69 | |
70 TEST_F(ScreenCapturerHelperTest, InvalidateFullScreen) { | |
71 SkRegion region; | |
72 capturer_helper_.set_size_most_recent(SkISize::Make(12, 34)); | |
73 capturer_helper_.InvalidateFullScreen(); | |
74 capturer_helper_.SwapInvalidRegion(®ion); | |
75 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeWH(12, 34)), region)); | |
76 } | 101 } |
77 | 102 |
78 TEST_F(ScreenCapturerHelperTest, SizeMostRecent) { | 103 TEST_F(ScreenCapturerHelperTest, SizeMostRecent) { |
79 ASSERT_EQ(SkISize::Make(0, 0), capturer_helper_.size_most_recent()); | 104 ASSERT_TRUE(capturer_helper_.size_most_recent().is_empty()); |
80 capturer_helper_.set_size_most_recent(SkISize::Make(12, 34)); | 105 capturer_helper_.set_size_most_recent(DesktopSize(12, 34)); |
81 ASSERT_EQ(SkISize::Make(12, 34), capturer_helper_.size_most_recent()); | 106 ASSERT_TRUE( |
107 DesktopSize(12, 34).equals(capturer_helper_.size_most_recent())); | |
82 } | 108 } |
83 | 109 |
84 TEST_F(ScreenCapturerHelperTest, SetLogGridSize) { | 110 TEST_F(ScreenCapturerHelperTest, SetLogGridSize) { |
85 capturer_helper_.set_size_most_recent(SkISize::Make(10, 10)); | 111 capturer_helper_.set_size_most_recent(DesktopSize(10, 10)); |
86 | 112 |
87 SkRegion region; | 113 DesktopRegion region; |
88 capturer_helper_.SwapInvalidRegion(®ion); | 114 capturer_helper_.TakeInvalidRegion(®ion); |
89 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeEmpty()), region)); | 115 ASSERT_TRUE(Equals(RectToRegion(DesktopRect()), region)); |
90 | 116 |
91 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 117 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
92 region.setEmpty(); | 118 capturer_helper_.TakeInvalidRegion(®ion); |
93 capturer_helper_.SwapInvalidRegion(®ion); | 119 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region)); |
94 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); | |
95 | 120 |
96 capturer_helper_.SetLogGridSize(-1); | 121 capturer_helper_.SetLogGridSize(-1); |
97 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 122 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
98 region.setEmpty(); | 123 capturer_helper_.TakeInvalidRegion(®ion); |
99 capturer_helper_.SwapInvalidRegion(®ion); | 124 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region)); |
100 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); | |
101 | 125 |
102 capturer_helper_.SetLogGridSize(0); | 126 capturer_helper_.SetLogGridSize(0); |
103 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 127 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
104 region.setEmpty(); | 128 capturer_helper_.TakeInvalidRegion(®ion); |
105 capturer_helper_.SwapInvalidRegion(®ion); | 129 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region)); |
106 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); | |
107 | 130 |
108 capturer_helper_.SetLogGridSize(1); | 131 capturer_helper_.SetLogGridSize(1); |
109 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 132 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
110 region.setEmpty(); | 133 capturer_helper_.TakeInvalidRegion(®ion); |
111 capturer_helper_.SwapInvalidRegion(®ion); | 134 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(6, 6, 2, 2)), region)); |
112 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(6, 6, 2, 2)), region)); | |
113 | 135 |
114 capturer_helper_.SetLogGridSize(2); | 136 capturer_helper_.SetLogGridSize(2); |
115 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 137 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
116 region.setEmpty(); | 138 capturer_helper_.TakeInvalidRegion(®ion); |
117 capturer_helper_.SwapInvalidRegion(®ion); | 139 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(4, 4, 4, 4)), region)); |
118 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(4, 4, 4, 4)), region)); | |
119 | 140 |
120 capturer_helper_.SetLogGridSize(0); | 141 capturer_helper_.SetLogGridSize(0); |
121 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); | 142 capturer_helper_.InvalidateRegion(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1))); |
122 region.setEmpty(); | 143 capturer_helper_.TakeInvalidRegion(®ion); |
123 capturer_helper_.SwapInvalidRegion(®ion); | 144 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region)); |
124 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); | |
125 } | 145 } |
126 | 146 |
127 void TestExpandRegionToGrid(const SkRegion& region, int log_grid_size, | 147 void TestExpandRegionToGrid(const SkRegion& region, int log_grid_size, |
128 const SkRegion& expandedRegionExpected) { | 148 const SkRegion& expandedRegionExpected) { |
129 scoped_ptr<SkRegion> expandedRegion1( | 149 scoped_ptr<SkRegion> expandedRegion1( |
130 ScreenCapturerHelper::ExpandToGrid(region, log_grid_size)); | 150 ScreenCapturerHelper::ExpandToGrid(region, log_grid_size)); |
131 ASSERT_TRUE(Equals(expandedRegionExpected, *expandedRegion1)); | 151 ASSERT_TRUE(SkRegionEquals(expandedRegionExpected, *expandedRegion1)); |
132 scoped_ptr<SkRegion> expandedRegion2( | 152 scoped_ptr<SkRegion> expandedRegion2( |
133 ScreenCapturerHelper::ExpandToGrid(*expandedRegion1, log_grid_size)); | 153 ScreenCapturerHelper::ExpandToGrid(*expandedRegion1, log_grid_size)); |
134 ASSERT_TRUE(Equals(*expandedRegion1, *expandedRegion2)); | 154 ASSERT_TRUE(SkRegionEquals(*expandedRegion1, *expandedRegion2)); |
135 } | 155 } |
136 | 156 |
137 void TestExpandRectToGrid(int l, int t, int r, int b, int log_grid_size, | 157 void TestExpandRectToGrid(int l, int t, int r, int b, int log_grid_size, |
138 int lExpanded, int tExpanded, | 158 int lExpanded, int tExpanded, |
139 int rExpanded, int bExpanded) { | 159 int rExpanded, int bExpanded) { |
140 TestExpandRegionToGrid(SkRegion(SkIRect::MakeLTRB(l, t, r, b)), log_grid_size, | 160 TestExpandRegionToGrid(SkRegion(SkIRect::MakeLTRB(l, t, r, b)), log_grid_size, |
141 SkRegion(SkIRect::MakeLTRB(lExpanded, tExpanded, | 161 SkRegion(SkIRect::MakeLTRB(lExpanded, tExpanded, |
142 rExpanded, bExpanded))); | 162 rExpanded, bExpanded))); |
143 } | 163 } |
144 | 164 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
206 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE)); | 226 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE)); |
207 expandedRegionExpected.op( | 227 expandedRegionExpected.op( |
208 SkIRect::MakeLTRB(x + 0, y - GRID_SIZE, x + GRID_SIZE, y + 0), | 228 SkIRect::MakeLTRB(x + 0, y - GRID_SIZE, x + GRID_SIZE, y + 0), |
209 SkRegion::kDifference_Op); | 229 SkRegion::kDifference_Op); |
210 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected); | 230 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected); |
211 } | 231 } |
212 } | 232 } |
213 } | 233 } |
214 | 234 |
215 } // namespace media | 235 } // namespace media |
OLD | NEW |