| 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 |