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

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
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
17 bool Equals(const SkRegion& region1, const SkRegion& region2) { 34 bool Equals(const SkRegion& region1, const SkRegion& region2) {
18 SkRegion::Iterator iter1(region1); 35 SkRegion::Iterator iter1(region1);
19 SkRegion::Iterator iter2(region2); 36 SkRegion::Iterator iter2(region2);
20 while (!iter1.done()) { 37 while (!iter1.done() && !iter2.done()) {
21 SkIRect rect1 = iter1.rect(); 38 if (iter1.rect() != iter2.rect()) {
22 iter1.next();
23 if (iter2.done()) {
24 return false; 39 return false;
25 } 40 }
26 SkIRect rect2 = iter2.rect(); 41 iter1.next();
27 iter2.next(); 42 iter2.next();
28 if (rect1 != rect2) {
29 return false;
30 }
31 } 43 }
32 if (!iter2.done()) { 44 return iter1.done() && iter2.done();
33 return false; 45 }
34 } 46
35 return true; 47 DesktopRegion RectToRegion(const DesktopRect& rect) {
48 webrtc::DesktopRegion result;
49 result.SetRect(rect);
50 return result;
36 } 51 }
37 52
38 TEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) { 53 TEST_F(ScreenCapturerHelperTest, ClearInvalidRegion) {
39 SkRegion region; 54 DesktopRegion region;
40 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); 55 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4));
56 capturer_helper_.InvalidateRegion(region);
41 capturer_helper_.ClearInvalidRegion(); 57 capturer_helper_.ClearInvalidRegion();
42 capturer_helper_.SwapInvalidRegion(&region); 58 capturer_helper_.TakeInvalidRegion(&region);
43 ASSERT_TRUE(region.isEmpty()); 59 ASSERT_TRUE(region.is_empty());
44 } 60 }
45 61
46 TEST_F(ScreenCapturerHelperTest, InvalidateRegion) { 62 TEST_F(ScreenCapturerHelperTest, InvalidateRegion) {
47 SkRegion region; 63 DesktopRegion region;
48 capturer_helper_.SwapInvalidRegion(&region); 64 capturer_helper_.TakeInvalidRegion(&region);
49 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeEmpty()), region)); 65 ASSERT_TRUE(region.is_empty());
50 66
51 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); 67 region.SetRect(DesktopRect::MakeXYWH(1, 2, 3, 4));
52 region.setEmpty(); 68 capturer_helper_.InvalidateRegion(region);
53 capturer_helper_.SwapInvalidRegion(&region); 69 capturer_helper_.TakeInvalidRegion(&region);
54 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4)), region)); 70 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)), region));
55 71
56 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(1, 2, 3, 4))); 72 capturer_helper_.InvalidateRegion(
57 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(4, 2, 3, 4))); 73 RectToRegion(DesktopRect::MakeXYWH(1, 2, 3, 4)));
58 region.setEmpty(); 74 capturer_helper_.InvalidateRegion(
59 capturer_helper_.SwapInvalidRegion(&region); 75 RectToRegion(DesktopRect::MakeXYWH(4, 2, 3, 4)));
60 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(1, 2, 6, 4)), region)); 76 capturer_helper_.TakeInvalidRegion(&region);
77 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(1, 2, 6, 4)), region));
61 } 78 }
62 79
63 TEST_F(ScreenCapturerHelperTest, InvalidateScreen) { 80 TEST_F(ScreenCapturerHelperTest, InvalidateScreen) {
64 SkRegion region; 81 DesktopRegion region;
65 capturer_helper_.InvalidateScreen(SkISize::Make(12, 34)); 82 capturer_helper_.InvalidateScreen(DesktopSize(12, 34));
66 capturer_helper_.SwapInvalidRegion(&region); 83 capturer_helper_.TakeInvalidRegion(&region);
67 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeWH(12, 34)), region)); 84 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 } 85 }
77 86
78 TEST_F(ScreenCapturerHelperTest, SizeMostRecent) { 87 TEST_F(ScreenCapturerHelperTest, SizeMostRecent) {
79 ASSERT_EQ(SkISize::Make(0, 0), capturer_helper_.size_most_recent()); 88 ASSERT_TRUE(capturer_helper_.size_most_recent().is_empty());
80 capturer_helper_.set_size_most_recent(SkISize::Make(12, 34)); 89 capturer_helper_.set_size_most_recent(DesktopSize(12, 34));
81 ASSERT_EQ(SkISize::Make(12, 34), capturer_helper_.size_most_recent()); 90 ASSERT_TRUE(
91 DesktopSize(12, 34).equals(capturer_helper_.size_most_recent()));
82 } 92 }
83 93
84 TEST_F(ScreenCapturerHelperTest, SetLogGridSize) { 94 TEST_F(ScreenCapturerHelperTest, SetLogGridSize) {
85 capturer_helper_.set_size_most_recent(SkISize::Make(10, 10)); 95 capturer_helper_.set_size_most_recent(DesktopSize(10, 10));
86 96
87 SkRegion region; 97 DesktopRegion region;
88 capturer_helper_.SwapInvalidRegion(&region); 98 capturer_helper_.TakeInvalidRegion(&region);
89 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeEmpty()), region)); 99 ASSERT_TRUE(Equals(RectToRegion(DesktopRect()), region));
90 100
91 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 101 capturer_helper_.InvalidateRegion(
92 region.setEmpty(); 102 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
93 capturer_helper_.SwapInvalidRegion(&region); 103 capturer_helper_.TakeInvalidRegion(&region);
94 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); 104 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
95 105
96 capturer_helper_.SetLogGridSize(-1); 106 capturer_helper_.SetLogGridSize(-1);
97 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 107 capturer_helper_.InvalidateRegion(
98 region.setEmpty(); 108 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
99 capturer_helper_.SwapInvalidRegion(&region); 109 capturer_helper_.TakeInvalidRegion(&region);
100 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); 110 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
101 111
102 capturer_helper_.SetLogGridSize(0); 112 capturer_helper_.SetLogGridSize(0);
103 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 113 capturer_helper_.InvalidateRegion(
104 region.setEmpty(); 114 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
105 capturer_helper_.SwapInvalidRegion(&region); 115 capturer_helper_.TakeInvalidRegion(&region);
106 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); 116 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
107 117
108 capturer_helper_.SetLogGridSize(1); 118 capturer_helper_.SetLogGridSize(1);
109 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 119 capturer_helper_.InvalidateRegion(
110 region.setEmpty(); 120 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
111 capturer_helper_.SwapInvalidRegion(&region); 121 capturer_helper_.TakeInvalidRegion(&region);
112 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(6, 6, 2, 2)), region)); 122 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(6, 6, 2, 2)), region));
113 123
114 capturer_helper_.SetLogGridSize(2); 124 capturer_helper_.SetLogGridSize(2);
115 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 125 capturer_helper_.InvalidateRegion(
116 region.setEmpty(); 126 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
117 capturer_helper_.SwapInvalidRegion(&region); 127 capturer_helper_.TakeInvalidRegion(&region);
118 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(4, 4, 4, 4)), region)); 128 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(4, 4, 4, 4)), region));
119 129
120 capturer_helper_.SetLogGridSize(0); 130 capturer_helper_.SetLogGridSize(0);
121 capturer_helper_.InvalidateRegion(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1))); 131 capturer_helper_.InvalidateRegion(
122 region.setEmpty(); 132 RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)));
123 capturer_helper_.SwapInvalidRegion(&region); 133 capturer_helper_.TakeInvalidRegion(&region);
124 ASSERT_TRUE(Equals(SkRegion(SkIRect::MakeXYWH(7, 7, 1, 1)), region)); 134 ASSERT_TRUE(Equals(RectToRegion(DesktopRect::MakeXYWH(7, 7, 1, 1)), region));
125 } 135 }
126 136
127 void TestExpandRegionToGrid(const SkRegion& region, int log_grid_size, 137 void TestExpandRegionToGrid(const SkRegion& region, int log_grid_size,
128 const SkRegion& expandedRegionExpected) { 138 const SkRegion& expandedRegionExpected) {
129 scoped_ptr<SkRegion> expandedRegion1( 139 scoped_ptr<SkRegion> expandedRegion1(
130 ScreenCapturerHelper::ExpandToGrid(region, log_grid_size)); 140 ScreenCapturerHelper::ExpandToGrid(region, log_grid_size));
131 ASSERT_TRUE(Equals(expandedRegionExpected, *expandedRegion1)); 141 ASSERT_TRUE(Equals(expandedRegionExpected, *expandedRegion1));
132 scoped_ptr<SkRegion> expandedRegion2( 142 scoped_ptr<SkRegion> expandedRegion2(
133 ScreenCapturerHelper::ExpandToGrid(*expandedRegion1, log_grid_size)); 143 ScreenCapturerHelper::ExpandToGrid(*expandedRegion1, log_grid_size));
134 ASSERT_TRUE(Equals(*expandedRegion1, *expandedRegion2)); 144 ASSERT_TRUE(Equals(*expandedRegion1, *expandedRegion2));
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE)); 216 x - GRID_SIZE, y - GRID_SIZE, x + GRID_SIZE, y + GRID_SIZE));
207 expandedRegionExpected.op( 217 expandedRegionExpected.op(
208 SkIRect::MakeLTRB(x + 0, y - GRID_SIZE, x + GRID_SIZE, y + 0), 218 SkIRect::MakeLTRB(x + 0, y - GRID_SIZE, x + GRID_SIZE, y + 0),
209 SkRegion::kDifference_Op); 219 SkRegion::kDifference_Op);
210 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected); 220 TestExpandRegionToGrid(region, LOG_GRID_SIZE, expandedRegionExpected);
211 } 221 }
212 } 222 }
213 } 223 }
214 224
215 } // namespace media 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