OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "cc/playback/pixel_ref_map.h" | 5 #include "cc/playback/pixel_ref_map.h" |
6 | 6 |
7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "cc/playback/picture.h" | 10 #include "cc/playback/picture.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 PixelRefMap::Iterator iterator; | 58 PixelRefMap::Iterator iterator; |
59 EXPECT_FALSE(iterator); | 59 EXPECT_FALSE(iterator); |
60 } | 60 } |
61 | 61 |
62 for (int y = 0; y < 4; ++y) { | 62 for (int y = 0; y < 4; ++y) { |
63 for (int x = 0; x < 4; ++x) { | 63 for (int x = 0; x < 4; ++x) { |
64 PixelRefMap::Iterator iterator(gfx::Rect(x * 512, y * 512, 500, 500), | 64 PixelRefMap::Iterator iterator(gfx::Rect(x * 512, y * 512, 500, 500), |
65 picture.get()); | 65 picture.get()); |
66 if ((x + y) & 1) { | 66 if ((x + y) & 1) { |
67 EXPECT_TRUE(iterator) << x << " " << y; | 67 EXPECT_TRUE(iterator) << x << " " << y; |
68 EXPECT_TRUE(*iterator == discardable_bitmap[y][x].pixelRef()) | 68 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[y][x].pixelRef()) |
69 << x << " " << y; | 69 << x << " " << y; |
| 70 EXPECT_EQ(gfx::RectF(x * 512 + 6, y * 512 + 6, 500, 500).ToString(), |
| 71 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
70 EXPECT_FALSE(++iterator) << x << " " << y; | 72 EXPECT_FALSE(++iterator) << x << " " << y; |
71 } else { | 73 } else { |
72 EXPECT_FALSE(iterator) << x << " " << y; | 74 EXPECT_FALSE(iterator) << x << " " << y; |
73 } | 75 } |
74 } | 76 } |
75 } | 77 } |
76 // Capture 4 pixel refs. | 78 // Capture 4 pixel refs. |
77 { | 79 { |
78 PixelRefMap::Iterator iterator(gfx::Rect(512, 512, 2048, 2048), | 80 PixelRefMap::Iterator iterator(gfx::Rect(512, 512, 2048, 2048), |
79 picture.get()); | 81 picture.get()); |
80 EXPECT_TRUE(iterator); | 82 EXPECT_TRUE(iterator); |
81 EXPECT_TRUE(*iterator == discardable_bitmap[1][2].pixelRef()); | 83 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][2].pixelRef()); |
| 84 EXPECT_EQ(gfx::RectF(2 * 512 + 6, 512 + 6, 500, 500).ToString(), |
| 85 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
82 EXPECT_TRUE(++iterator); | 86 EXPECT_TRUE(++iterator); |
83 EXPECT_TRUE(*iterator == discardable_bitmap[2][1].pixelRef()); | 87 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
| 88 EXPECT_EQ(gfx::RectF(512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 89 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
84 EXPECT_TRUE(++iterator); | 90 EXPECT_TRUE(++iterator); |
85 EXPECT_TRUE(*iterator == discardable_bitmap[2][3].pixelRef()); | 91 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
| 92 EXPECT_EQ(gfx::RectF(3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 93 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
86 EXPECT_TRUE(++iterator); | 94 EXPECT_TRUE(++iterator); |
87 EXPECT_TRUE(*iterator == discardable_bitmap[3][2].pixelRef()); | 95 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 96 EXPECT_EQ(gfx::RectF(2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 97 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
88 EXPECT_FALSE(++iterator); | 98 EXPECT_FALSE(++iterator); |
89 } | 99 } |
90 | 100 |
91 // Copy test. | 101 { |
92 PixelRefMap::Iterator iterator(gfx::Rect(512, 512, 2048, 2048), | 102 // Copy test. |
93 picture.get()); | 103 PixelRefMap::Iterator iterator(gfx::Rect(512, 512, 2048, 2048), |
94 EXPECT_TRUE(iterator); | 104 picture.get()); |
95 EXPECT_TRUE(*iterator == discardable_bitmap[1][2].pixelRef()); | 105 EXPECT_TRUE(iterator); |
96 EXPECT_TRUE(++iterator); | 106 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][2].pixelRef()); |
97 EXPECT_TRUE(*iterator == discardable_bitmap[2][1].pixelRef()); | 107 EXPECT_EQ(gfx::RectF(2 * 512 + 6, 512 + 6, 500, 500).ToString(), |
| 108 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 109 EXPECT_TRUE(++iterator); |
| 110 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
| 111 EXPECT_EQ(gfx::RectF(512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 112 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
98 | 113 |
99 // copy now points to the same spot as iterator, | 114 // copy now points to the same spot as iterator, |
100 // but both can be incremented independently. | 115 // but both can be incremented independently. |
101 PixelRefMap::Iterator copy = iterator; | 116 PixelRefMap::Iterator copy = iterator; |
102 EXPECT_TRUE(++iterator); | 117 EXPECT_TRUE(++iterator); |
103 EXPECT_TRUE(*iterator == discardable_bitmap[2][3].pixelRef()); | 118 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
104 EXPECT_TRUE(++iterator); | 119 EXPECT_EQ(gfx::RectF(3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
105 EXPECT_TRUE(*iterator == discardable_bitmap[3][2].pixelRef()); | 120 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
106 EXPECT_FALSE(++iterator); | 121 EXPECT_TRUE(++iterator); |
| 122 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 123 EXPECT_EQ(gfx::RectF(2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 124 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 125 EXPECT_FALSE(++iterator); |
107 | 126 |
108 EXPECT_TRUE(copy); | 127 EXPECT_TRUE(copy); |
109 EXPECT_TRUE(*copy == discardable_bitmap[2][1].pixelRef()); | 128 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
110 EXPECT_TRUE(++copy); | 129 EXPECT_EQ(gfx::RectF(512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
111 EXPECT_TRUE(*copy == discardable_bitmap[2][3].pixelRef()); | 130 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
112 EXPECT_TRUE(++copy); | 131 EXPECT_TRUE(++copy); |
113 EXPECT_TRUE(*copy == discardable_bitmap[3][2].pixelRef()); | 132 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
114 EXPECT_FALSE(++copy); | 133 EXPECT_EQ(gfx::RectF(3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 134 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
| 135 EXPECT_TRUE(++copy); |
| 136 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 137 EXPECT_EQ(gfx::RectF(2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 138 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
| 139 EXPECT_FALSE(++copy); |
| 140 } |
115 } | 141 } |
116 | 142 |
117 TEST(PixelRefMapTest, PixelRefMapIteratorNonZeroLayer) { | 143 TEST(PixelRefMapTest, PixelRefMapIteratorNonZeroLayer) { |
118 gfx::Rect layer_rect(1024, 0, 2048, 2048); | 144 gfx::Rect layer_rect(1024, 0, 2048, 2048); |
119 | 145 |
120 gfx::Size tile_grid_size(512, 512); | 146 gfx::Size tile_grid_size(512, 512); |
121 | 147 |
122 FakeContentLayerClient content_layer_client; | 148 FakeContentLayerClient content_layer_client; |
123 | 149 |
124 // Discardable pixel refs are found in the following grids: | 150 // Discardable pixel refs are found in the following grids: |
(...skipping 29 matching lines...) Expand all Loading... |
154 PixelRefMap::Iterator iterator; | 180 PixelRefMap::Iterator iterator; |
155 EXPECT_FALSE(iterator); | 181 EXPECT_FALSE(iterator); |
156 } | 182 } |
157 | 183 |
158 for (int y = 0; y < 4; ++y) { | 184 for (int y = 0; y < 4; ++y) { |
159 for (int x = 0; x < 4; ++x) { | 185 for (int x = 0; x < 4; ++x) { |
160 PixelRefMap::Iterator iterator( | 186 PixelRefMap::Iterator iterator( |
161 gfx::Rect(1024 + x * 512, y * 512, 500, 500), picture.get()); | 187 gfx::Rect(1024 + x * 512, y * 512, 500, 500), picture.get()); |
162 if ((x + y) & 1) { | 188 if ((x + y) & 1) { |
163 EXPECT_TRUE(iterator) << x << " " << y; | 189 EXPECT_TRUE(iterator) << x << " " << y; |
164 EXPECT_TRUE(*iterator == discardable_bitmap[y][x].pixelRef()); | 190 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[y][x].pixelRef()); |
| 191 EXPECT_EQ( |
| 192 gfx::RectF(1024 + x * 512 + 6, y * 512 + 6, 500, 500).ToString(), |
| 193 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
165 EXPECT_FALSE(++iterator) << x << " " << y; | 194 EXPECT_FALSE(++iterator) << x << " " << y; |
166 } else { | 195 } else { |
167 EXPECT_FALSE(iterator) << x << " " << y; | 196 EXPECT_FALSE(iterator) << x << " " << y; |
168 } | 197 } |
169 } | 198 } |
170 } | 199 } |
171 // Capture 4 pixel refs. | 200 // Capture 4 pixel refs. |
172 { | 201 { |
173 PixelRefMap::Iterator iterator(gfx::Rect(1024 + 512, 512, 2048, 2048), | 202 PixelRefMap::Iterator iterator(gfx::Rect(1024 + 512, 512, 2048, 2048), |
174 picture.get()); | 203 picture.get()); |
175 EXPECT_TRUE(iterator); | 204 EXPECT_TRUE(iterator); |
176 EXPECT_TRUE(*iterator == discardable_bitmap[1][2].pixelRef()); | 205 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][2].pixelRef()); |
| 206 EXPECT_EQ(gfx::RectF(1024 + 2 * 512 + 6, 512 + 6, 500, 500).ToString(), |
| 207 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
177 EXPECT_TRUE(++iterator); | 208 EXPECT_TRUE(++iterator); |
178 EXPECT_TRUE(*iterator == discardable_bitmap[2][1].pixelRef()); | 209 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
| 210 EXPECT_EQ(gfx::RectF(1024 + 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 211 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
179 EXPECT_TRUE(++iterator); | 212 EXPECT_TRUE(++iterator); |
180 EXPECT_TRUE(*iterator == discardable_bitmap[2][3].pixelRef()); | 213 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
| 214 EXPECT_EQ(gfx::RectF(1024 + 3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 215 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
181 EXPECT_TRUE(++iterator); | 216 EXPECT_TRUE(++iterator); |
182 EXPECT_TRUE(*iterator == discardable_bitmap[3][2].pixelRef()); | 217 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 218 EXPECT_EQ(gfx::RectF(1024 + 2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 219 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
183 EXPECT_FALSE(++iterator); | 220 EXPECT_FALSE(++iterator); |
184 } | 221 } |
185 | 222 |
186 // Copy test. | 223 // Copy test. |
187 { | 224 { |
188 PixelRefMap::Iterator iterator(gfx::Rect(1024 + 512, 512, 2048, 2048), | 225 PixelRefMap::Iterator iterator(gfx::Rect(1024 + 512, 512, 2048, 2048), |
189 picture.get()); | 226 picture.get()); |
190 EXPECT_TRUE(iterator); | 227 EXPECT_TRUE(iterator); |
191 EXPECT_TRUE(*iterator == discardable_bitmap[1][2].pixelRef()); | 228 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][2].pixelRef()); |
| 229 EXPECT_EQ(gfx::RectF(1024 + 2 * 512 + 6, 512 + 6, 500, 500).ToString(), |
| 230 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
192 EXPECT_TRUE(++iterator); | 231 EXPECT_TRUE(++iterator); |
193 EXPECT_TRUE(*iterator == discardable_bitmap[2][1].pixelRef()); | 232 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
| 233 EXPECT_EQ(gfx::RectF(1024 + 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 234 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
194 | 235 |
195 // copy now points to the same spot as iterator, | 236 // copy now points to the same spot as iterator, |
196 // but both can be incremented independently. | 237 // but both can be incremented independently. |
197 PixelRefMap::Iterator copy = iterator; | 238 PixelRefMap::Iterator copy = iterator; |
198 EXPECT_TRUE(++iterator); | 239 EXPECT_TRUE(++iterator); |
199 EXPECT_TRUE(*iterator == discardable_bitmap[2][3].pixelRef()); | 240 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
| 241 EXPECT_EQ(gfx::RectF(1024 + 3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 242 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
200 EXPECT_TRUE(++iterator); | 243 EXPECT_TRUE(++iterator); |
201 EXPECT_TRUE(*iterator == discardable_bitmap[3][2].pixelRef()); | 244 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 245 EXPECT_EQ(gfx::RectF(1024 + 2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 246 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
202 EXPECT_FALSE(++iterator); | 247 EXPECT_FALSE(++iterator); |
203 | 248 |
204 EXPECT_TRUE(copy); | 249 EXPECT_TRUE(copy); |
205 EXPECT_TRUE(*copy == discardable_bitmap[2][1].pixelRef()); | 250 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[2][1].pixelRef()); |
| 251 EXPECT_EQ(gfx::RectF(1024 + 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 252 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
206 EXPECT_TRUE(++copy); | 253 EXPECT_TRUE(++copy); |
207 EXPECT_TRUE(*copy == discardable_bitmap[2][3].pixelRef()); | 254 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[2][3].pixelRef()); |
| 255 EXPECT_EQ(gfx::RectF(1024 + 3 * 512 + 6, 2 * 512 + 6, 500, 500).ToString(), |
| 256 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
208 EXPECT_TRUE(++copy); | 257 EXPECT_TRUE(++copy); |
209 EXPECT_TRUE(*copy == discardable_bitmap[3][2].pixelRef()); | 258 EXPECT_TRUE(copy->pixel_ref == discardable_bitmap[3][2].pixelRef()); |
| 259 EXPECT_EQ(gfx::RectF(1024 + 2 * 512 + 6, 3 * 512 + 6, 500, 500).ToString(), |
| 260 gfx::SkRectToRectF(copy->pixel_ref_rect).ToString()); |
210 EXPECT_FALSE(++copy); | 261 EXPECT_FALSE(++copy); |
211 } | 262 } |
212 | 263 |
213 // Non intersecting rects | 264 // Non intersecting rects |
214 { | 265 { |
215 PixelRefMap::Iterator iterator(gfx::Rect(0, 0, 1000, 1000), picture.get()); | 266 PixelRefMap::Iterator iterator(gfx::Rect(0, 0, 1000, 1000), picture.get()); |
216 EXPECT_FALSE(iterator); | 267 EXPECT_FALSE(iterator); |
217 } | 268 } |
218 { | 269 { |
219 PixelRefMap::Iterator iterator(gfx::Rect(3500, 0, 1000, 1000), | 270 PixelRefMap::Iterator iterator(gfx::Rect(3500, 0, 1000, 1000), |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 PixelRefMap::Iterator iterator; | 323 PixelRefMap::Iterator iterator; |
273 EXPECT_FALSE(iterator); | 324 EXPECT_FALSE(iterator); |
274 } | 325 } |
275 | 326 |
276 for (int y = 0; y < 4; ++y) { | 327 for (int y = 0; y < 4; ++y) { |
277 for (int x = 0; x < 4; ++x) { | 328 for (int x = 0; x < 4; ++x) { |
278 PixelRefMap::Iterator iterator(gfx::Rect(x * 512, y * 512 + 256, 1, 1), | 329 PixelRefMap::Iterator iterator(gfx::Rect(x * 512, y * 512 + 256, 1, 1), |
279 picture.get()); | 330 picture.get()); |
280 if ((x + y) & 1) { | 331 if ((x + y) & 1) { |
281 EXPECT_TRUE(iterator) << x << " " << y; | 332 EXPECT_TRUE(iterator) << x << " " << y; |
282 EXPECT_TRUE(*iterator == discardable_bitmap[y][x].pixelRef()); | 333 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[y][x].pixelRef()); |
| 334 EXPECT_EQ(gfx::RectF(x * 512 + 6, y * 512 + 6, 500, 500).ToString(), |
| 335 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
283 EXPECT_FALSE(++iterator) << x << " " << y; | 336 EXPECT_FALSE(++iterator) << x << " " << y; |
284 } else { | 337 } else { |
285 EXPECT_FALSE(iterator) << x << " " << y; | 338 EXPECT_FALSE(iterator) << x << " " << y; |
286 } | 339 } |
287 } | 340 } |
288 } | 341 } |
289 } | 342 } |
290 | 343 |
291 } // namespace | 344 } // namespace |
292 } // namespace cc | 345 } // namespace cc |
OLD | NEW |