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

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

Issue 13983010: Use webrtc::DesktopCapturer for screen capturer implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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
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(&region); 74 capturer_helper_.TakeInvalidRegion(&region);
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(&region); 80 capturer_helper_.TakeInvalidRegion(&region);
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(&region); 85 capturer_helper_.TakeInvalidRegion(&region);
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(&region); 91 RectToRegion(DesktopRect::MakeXYWH(4, 2, 3, 4)));
60 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(1, 2, 6, 4)), region)); 92 capturer_helper_.TakeInvalidRegion(&region);
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(&region); 99 capturer_helper_.TakeInvalidRegion(&region);
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(&region);
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(&region); 114 capturer_helper_.TakeInvalidRegion(&region);
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(&region);
93 capturer_helper_.SwapInvalidRegion(&region); 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(&region);
99 capturer_helper_.SwapInvalidRegion(&region); 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(&region);
105 capturer_helper_.SwapInvalidRegion(&region); 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(&region);
111 capturer_helper_.SwapInvalidRegion(&region); 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(&region);
117 capturer_helper_.SwapInvalidRegion(&region); 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(&region);
123 capturer_helper_.SwapInvalidRegion(&region); 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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698