| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "cc/test/fake_picture_pile_impl.h" | 6 #include "cc/test/fake_picture_pile_impl.h" |
| 7 #include "cc/test/skia_common.h" | 7 #include "cc/test/skia_common.h" |
| 8 #include "skia/ext/refptr.h" | 8 #include "skia/ext/refptr.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "third_party/skia/include/core/SkPixelRef.h" | 10 #include "third_party/skia/include/core/SkPixelRef.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 recording_source->add_draw_bitmap(discardable_bitmap[1][1], | 183 recording_source->add_draw_bitmap(discardable_bitmap[1][1], |
| 184 gfx::Point(260, 260)); | 184 gfx::Point(260, 260)); |
| 185 recording_source->SetGatherPixelRefs(true); | 185 recording_source->SetGatherPixelRefs(true); |
| 186 recording_source->Rerecord(); | 186 recording_source->Rerecord(); |
| 187 | 187 |
| 188 scoped_refptr<FakePicturePileImpl> pile = | 188 scoped_refptr<FakePicturePileImpl> pile = |
| 189 FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); | 189 FakePicturePileImpl::CreateFromPile(recording_source.get(), nullptr); |
| 190 | 190 |
| 191 // Tile sized iterators. These should find only one pixel ref. | 191 // Tile sized iterators. These should find only one pixel ref. |
| 192 { | 192 { |
| 193 PicturePileImpl::PixelRefIterator iterator( | 193 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(0, 0, 256, 256), |
| 194 gfx::Rect(0, 0, 256, 256), 1.0, pile.get()); | 194 pile.get()); |
| 195 EXPECT_TRUE(iterator); | 195 EXPECT_TRUE(iterator); |
| 196 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | 196 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); |
| 197 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | 197 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), |
| 198 gfx::RectF(32, 32).ToString()); | |
| 199 EXPECT_FALSE(++iterator); | |
| 200 } | |
| 201 { | |
| 202 PicturePileImpl::PixelRefIterator iterator( | |
| 203 gfx::Rect(0, 0, 512, 512), 2.0, pile.get()); | |
| 204 EXPECT_TRUE(iterator); | |
| 205 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | |
| 206 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 207 gfx::RectF(32, 32).ToString()); | |
| 208 EXPECT_FALSE(++iterator); | |
| 209 } | |
| 210 { | |
| 211 PicturePileImpl::PixelRefIterator iterator( | |
| 212 gfx::Rect(0, 0, 128, 128), 0.5, pile.get()); | |
| 213 EXPECT_TRUE(iterator); | |
| 214 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | |
| 215 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 216 gfx::RectF(32, 32).ToString()); | 198 gfx::RectF(32, 32).ToString()); |
| 217 EXPECT_FALSE(++iterator); | 199 EXPECT_FALSE(++iterator); |
| 218 } | 200 } |
| 219 // Shifted tile sized iterators. These should find only one pixel ref. | 201 // Shifted tile sized iterators. These should find only one pixel ref. |
| 220 { | 202 { |
| 221 PicturePileImpl::PixelRefIterator iterator( | 203 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(260, 260, 256, 256), |
| 222 gfx::Rect(260, 260, 256, 256), 1.0, pile.get()); | 204 pile.get()); |
| 223 EXPECT_TRUE(iterator); | 205 EXPECT_TRUE(iterator); |
| 224 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | 206 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); |
| 225 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | 207 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), |
| 226 gfx::RectF(260, 260, 32, 32).ToString()); | |
| 227 EXPECT_FALSE(++iterator); | |
| 228 } | |
| 229 { | |
| 230 PicturePileImpl::PixelRefIterator iterator( | |
| 231 gfx::Rect(520, 520, 512, 512), 2.0, pile.get()); | |
| 232 EXPECT_TRUE(iterator); | |
| 233 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | |
| 234 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 235 gfx::RectF(260, 260, 32, 32).ToString()); | |
| 236 EXPECT_FALSE(++iterator); | |
| 237 } | |
| 238 { | |
| 239 PicturePileImpl::PixelRefIterator iterator( | |
| 240 gfx::Rect(130, 130, 128, 128), 0.5, pile.get()); | |
| 241 EXPECT_TRUE(iterator); | |
| 242 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | |
| 243 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 244 gfx::RectF(260, 260, 32, 32).ToString()); | 208 gfx::RectF(260, 260, 32, 32).ToString()); |
| 245 EXPECT_FALSE(++iterator); | 209 EXPECT_FALSE(++iterator); |
| 246 } | 210 } |
| 247 // Ensure there's no discardable pixel refs in the empty cell | 211 // Ensure there's no discardable pixel refs in the empty cell |
| 248 { | 212 { |
| 249 PicturePileImpl::PixelRefIterator iterator( | 213 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(0, 256, 256, 256), |
| 250 gfx::Rect(0, 256, 256, 256), 1.0, pile.get()); | 214 pile.get()); |
| 251 EXPECT_FALSE(iterator); | 215 EXPECT_FALSE(iterator); |
| 252 } | 216 } |
| 253 // Layer sized iterators. These should find three pixel ref. | 217 // Layer sized iterators. These should find three pixel ref. |
| 254 { | 218 { |
| 255 PicturePileImpl::PixelRefIterator iterator( | 219 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(0, 0, 512, 512), |
| 256 gfx::Rect(0, 0, 512, 512), 1.0, pile.get()); | 220 pile.get()); |
| 257 EXPECT_TRUE(iterator); | 221 EXPECT_TRUE(iterator); |
| 258 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | 222 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); |
| 259 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | 223 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), |
| 260 gfx::RectF(32, 32).ToString()); | |
| 261 EXPECT_TRUE(++iterator); | |
| 262 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); | |
| 263 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 264 gfx::RectF(260, 0, 32, 32).ToString()); | |
| 265 EXPECT_TRUE(++iterator); | |
| 266 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | |
| 267 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 268 gfx::RectF(260, 260, 32, 32).ToString()); | |
| 269 EXPECT_FALSE(++iterator); | |
| 270 } | |
| 271 { | |
| 272 PicturePileImpl::PixelRefIterator iterator( | |
| 273 gfx::Rect(0, 0, 1024, 1024), 2.0, pile.get()); | |
| 274 EXPECT_TRUE(iterator); | |
| 275 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | |
| 276 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | |
| 277 gfx::RectF(32, 32).ToString()); | 224 gfx::RectF(32, 32).ToString()); |
| 278 EXPECT_TRUE(++iterator); | 225 EXPECT_TRUE(++iterator); |
| 279 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); | 226 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); |
| 280 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | 227 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), |
| 281 gfx::RectF(260, 0, 32, 32).ToString()); | 228 gfx::RectF(260, 0, 32, 32).ToString()); |
| 282 EXPECT_TRUE(++iterator); | 229 EXPECT_TRUE(++iterator); |
| 283 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | 230 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); |
| 284 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), | 231 EXPECT_EQ(gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString(), |
| 285 gfx::RectF(260, 260, 32, 32).ToString()); | 232 gfx::RectF(260, 260, 32, 32).ToString()); |
| 286 EXPECT_FALSE(++iterator); | 233 EXPECT_FALSE(++iterator); |
| 287 } | 234 } |
| 288 { | |
| 289 PicturePileImpl::PixelRefIterator iterator( | |
| 290 gfx::Rect(0, 0, 256, 256), 0.5, pile.get()); | |
| 291 EXPECT_TRUE(iterator); | |
| 292 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | |
| 293 EXPECT_EQ(gfx::RectF(32, 32).ToString(), | |
| 294 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | |
| 295 EXPECT_TRUE(++iterator); | |
| 296 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); | |
| 297 EXPECT_EQ(gfx::RectF(260, 0, 32, 32).ToString(), | |
| 298 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | |
| 299 EXPECT_TRUE(++iterator); | |
| 300 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1][1].pixelRef()); | |
| 301 EXPECT_EQ(gfx::RectF(260, 260, 32, 32).ToString(), | |
| 302 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | |
| 303 EXPECT_FALSE(++iterator); | |
| 304 } | |
| 305 | 235 |
| 306 { | 236 { |
| 307 // Copy test. | 237 // Copy test. |
| 308 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(0, 0, 512, 512), 1.0, | 238 PicturePileImpl::PixelRefIterator iterator(gfx::Rect(0, 0, 512, 512), |
| 309 pile.get()); | 239 pile.get()); |
| 310 EXPECT_TRUE(iterator); | 240 EXPECT_TRUE(iterator); |
| 311 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); | 241 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][0].pixelRef()); |
| 312 EXPECT_EQ(gfx::RectF(32, 32).ToString(), | 242 EXPECT_EQ(gfx::RectF(32, 32).ToString(), |
| 313 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 243 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 314 EXPECT_TRUE(++iterator); | 244 EXPECT_TRUE(++iterator); |
| 315 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); | 245 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0][1].pixelRef()); |
| 316 EXPECT_EQ(gfx::RectF(260, 0, 32, 32).ToString(), | 246 EXPECT_EQ(gfx::RectF(260, 0, 32, 32).ToString(), |
| 317 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 247 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 318 | 248 |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 bitmap_rects[1].Intersects(pile->tiling().TileBoundsWithBorder(2, 0))); | 483 bitmap_rects[1].Intersects(pile->tiling().TileBoundsWithBorder(2, 0))); |
| 554 EXPECT_FALSE(bitmap_rects[1].Intersects(pile->tiling().TileBounds(2, 0))); | 484 EXPECT_FALSE(bitmap_rects[1].Intersects(pile->tiling().TileBounds(2, 0))); |
| 555 EXPECT_TRUE( | 485 EXPECT_TRUE( |
| 556 bitmap_rects[2].Intersects(pile->tiling().TileBoundsWithBorder(1, 0))); | 486 bitmap_rects[2].Intersects(pile->tiling().TileBoundsWithBorder(1, 0))); |
| 557 EXPECT_FALSE(bitmap_rects[2].Intersects(pile->tiling().TileBounds(1, 0))); | 487 EXPECT_FALSE(bitmap_rects[2].Intersects(pile->tiling().TileBounds(1, 0))); |
| 558 | 488 |
| 559 // Tile-sized iterators. | 489 // Tile-sized iterators. |
| 560 { | 490 { |
| 561 // Because tile 0's borders extend onto tile 1, it will include both | 491 // Because tile 0's borders extend onto tile 1, it will include both |
| 562 // bitmap 0 and 1. However, it should *not* include bitmap 2. | 492 // bitmap 0 and 1. However, it should *not* include bitmap 2. |
| 563 PicturePileImpl::PixelRefIterator iterator( | 493 PicturePileImpl::PixelRefIterator iterator(pile->tiling().TileBounds(0, 0), |
| 564 pile->tiling().TileBounds(0, 0), 1.f, pile.get()); | 494 pile.get()); |
| 565 EXPECT_TRUE(iterator); | 495 EXPECT_TRUE(iterator); |
| 566 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0].pixelRef()); | 496 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0].pixelRef()); |
| 567 EXPECT_EQ(expected_rects[0].ToString(), | 497 EXPECT_EQ(expected_rects[0].ToString(), |
| 568 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 498 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 569 EXPECT_TRUE(++iterator); | 499 EXPECT_TRUE(++iterator); |
| 570 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); | 500 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); |
| 571 EXPECT_EQ(expected_rects[1].ToString(), | 501 EXPECT_EQ(expected_rects[1].ToString(), |
| 572 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 502 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 573 EXPECT_FALSE(++iterator); | 503 EXPECT_FALSE(++iterator); |
| 574 } | 504 } |
| 575 { | 505 { |
| 576 // Tile 1 + borders hits all bitmaps. | 506 // Tile 1 + borders hits all bitmaps. |
| 577 PicturePileImpl::PixelRefIterator iterator( | 507 PicturePileImpl::PixelRefIterator iterator(pile->tiling().TileBounds(1, 0), |
| 578 pile->tiling().TileBounds(1, 0), 1.f, pile.get()); | 508 pile.get()); |
| 579 EXPECT_TRUE(iterator); | 509 EXPECT_TRUE(iterator); |
| 580 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0].pixelRef()); | 510 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[0].pixelRef()); |
| 581 EXPECT_EQ(expected_rects[0].ToString(), | 511 EXPECT_EQ(expected_rects[0].ToString(), |
| 582 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 512 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 583 EXPECT_TRUE(++iterator); | 513 EXPECT_TRUE(++iterator); |
| 584 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); | 514 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); |
| 585 EXPECT_EQ(expected_rects[1].ToString(), | 515 EXPECT_EQ(expected_rects[1].ToString(), |
| 586 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 516 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 587 EXPECT_TRUE(++iterator); | 517 EXPECT_TRUE(++iterator); |
| 588 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2].pixelRef()); | 518 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2].pixelRef()); |
| 589 EXPECT_EQ(expected_rects[2].ToString(), | 519 EXPECT_EQ(expected_rects[2].ToString(), |
| 590 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 520 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 591 EXPECT_FALSE(++iterator); | 521 EXPECT_FALSE(++iterator); |
| 592 } | 522 } |
| 593 { | 523 { |
| 594 // Tile 2 should not include bitmap 0, which is only on tile 0 and the | 524 // Tile 2 should not include bitmap 0, which is only on tile 0 and the |
| 595 // borders of tile 1. | 525 // borders of tile 1. |
| 596 PicturePileImpl::PixelRefIterator iterator( | 526 PicturePileImpl::PixelRefIterator iterator(pile->tiling().TileBounds(2, 0), |
| 597 pile->tiling().TileBounds(2, 0), 1.f, pile.get()); | 527 pile.get()); |
| 598 EXPECT_TRUE(iterator); | 528 EXPECT_TRUE(iterator); |
| 599 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); | 529 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[1].pixelRef()); |
| 600 EXPECT_EQ(expected_rects[1].ToString(), | 530 EXPECT_EQ(expected_rects[1].ToString(), |
| 601 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 531 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 602 EXPECT_TRUE(++iterator); | 532 EXPECT_TRUE(++iterator); |
| 603 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2].pixelRef()); | 533 EXPECT_TRUE(iterator->pixel_ref == discardable_bitmap[2].pixelRef()); |
| 604 EXPECT_EQ(expected_rects[2].ToString(), | 534 EXPECT_EQ(expected_rects[2].ToString(), |
| 605 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); | 535 gfx::SkRectToRectF(iterator->pixel_ref_rect).ToString()); |
| 606 EXPECT_FALSE(++iterator); | 536 EXPECT_FALSE(++iterator); |
| 607 } | 537 } |
| 608 } | 538 } |
| 609 | 539 |
| 610 } // namespace | 540 } // namespace |
| 611 } // namespace cc | 541 } // namespace cc |
| OLD | NEW |