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

Side by Side Diff: cc/resources/picture_layer_tiling_unittest.cc

Issue 12259027: cc: Simplify the logic for deciding to update tile priorities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: in_seconds Created 7 years, 8 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/resources/picture_layer_tiling.h" 5 #include "cc/resources/picture_layer_tiling.h"
6 6
7 #include "cc/test/fake_picture_layer_tiling_client.h" 7 #include "cc/test/fake_picture_layer_tiling_client.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/rect_conversions.h" 9 #include "ui/gfx/rect_conversions.h"
10 #include "ui/gfx/size_conversions.h" 10 #include "ui/gfx/size_conversions.h"
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 ACTIVE_TREE, 421 ACTIVE_TREE,
422 layer_bounds, // device viewport 422 layer_bounds, // device viewport
423 gfx::Rect(layer_bounds), // viewport in layer space 423 gfx::Rect(layer_bounds), // viewport in layer space
424 gfx::Rect(layer_bounds), // visible content rect 424 gfx::Rect(layer_bounds), // visible content rect
425 layer_bounds, // last layer bounds 425 layer_bounds, // last layer bounds
426 layer_bounds, // current layer bounds 426 layer_bounds, // current layer bounds
427 1.f, // last contents scale 427 1.f, // last contents scale
428 1.f, // current contents scale 428 1.f, // current contents scale
429 gfx::Transform(), // last screen transform 429 gfx::Transform(), // last screen transform
430 gfx::Transform(), // current screen transform 430 gfx::Transform(), // current screen transform
431 1, // current frame number
432 1.0, // current frame time 431 1.0, // current frame time
433 false, // store screen space quads on tiles 432 false, // store screen space quads on tiles
434 10000); // max tiles in tile manager 433 10000); // max tiles in tile manager
435 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 434 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
436 435
437 // Make the viewport rect empty. All tiles are killed and become zombies. 436 // Make the viewport rect empty. All tiles are killed and become zombies.
438 tiling_->UpdateTilePriorities( 437 tiling_->UpdateTilePriorities(
439 ACTIVE_TREE, 438 ACTIVE_TREE,
440 layer_bounds, // device viewport 439 layer_bounds, // device viewport
441 gfx::Rect(), // viewport in layer space 440 gfx::Rect(), // viewport in layer space
442 gfx::Rect(), // visible content rect 441 gfx::Rect(), // visible content rect
443 layer_bounds, // last layer bounds 442 layer_bounds, // last layer bounds
444 layer_bounds, // current layer bounds 443 layer_bounds, // current layer bounds
445 1.f, // last contents scale 444 1.f, // last contents scale
446 1.f, // current contents scale 445 1.f, // current contents scale
447 gfx::Transform(), // last screen transform 446 gfx::Transform(), // last screen transform
448 gfx::Transform(), // current screen transform 447 gfx::Transform(), // current screen transform
449 2, // current frame number
450 2.0, // current frame time 448 2.0, // current frame time
451 false, // store screen space quads on tiles 449 false, // store screen space quads on tiles
452 10000); // max tiles in tile manager 450 10000); // max tiles in tile manager
453 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 451 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
454 } 452 }
455 453
456 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { 454 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
457 gfx::Size layer_bounds(1099, 801); 455 gfx::Size layer_bounds(1099, 801);
458 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 456 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
459 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 457 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
460 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 458 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
461 459
462 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); 460 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000);
463 461
464 tiling_->UpdateTilePriorities( 462 tiling_->UpdateTilePriorities(
465 ACTIVE_TREE, 463 ACTIVE_TREE,
466 layer_bounds, // device viewport 464 layer_bounds, // device viewport
467 giant_rect, // viewport in layer space 465 giant_rect, // viewport in layer space
468 gfx::Rect(layer_bounds), // visible content rect 466 gfx::Rect(layer_bounds), // visible content rect
469 layer_bounds, // last layer bounds 467 layer_bounds, // last layer bounds
470 layer_bounds, // current layer bounds 468 layer_bounds, // current layer bounds
471 1.f, // last contents scale 469 1.f, // last contents scale
472 1.f, // current contents scale 470 1.f, // current contents scale
473 gfx::Transform(), // last screen transform 471 gfx::Transform(), // last screen transform
474 gfx::Transform(), // current screen transform 472 gfx::Transform(), // current screen transform
475 1, // current frame number
476 1.0, // current frame time 473 1.0, // current frame time
477 false, // store screen space quads on tiles 474 false, // store screen space quads on tiles
478 10000); // max tiles in tile manager 475 10000); // max tiles in tile manager
479 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 476 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
480 477
481 // If the visible content rect is empty, it should still have live tiles. 478 // If the visible content rect is empty, it should still have live tiles.
482 tiling_->UpdateTilePriorities( 479 tiling_->UpdateTilePriorities(
483 ACTIVE_TREE, 480 ACTIVE_TREE,
484 layer_bounds, // device viewport 481 layer_bounds, // device viewport
485 giant_rect, // viewport in layer space 482 giant_rect, // viewport in layer space
486 gfx::Rect(), // visible content rect 483 gfx::Rect(), // visible content rect
487 layer_bounds, // last layer bounds 484 layer_bounds, // last layer bounds
488 layer_bounds, // current layer bounds 485 layer_bounds, // current layer bounds
489 1.f, // last contents scale 486 1.f, // last contents scale
490 1.f, // current contents scale 487 1.f, // current contents scale
491 gfx::Transform(), // last screen transform 488 gfx::Transform(), // last screen transform
492 gfx::Transform(), // current screen transform 489 gfx::Transform(), // current screen transform
493 2, // current frame number
494 2.0, // current frame time 490 2.0, // current frame time
495 false, // store screen space quads on tiles 491 false, // store screen space quads on tiles
496 10000); // max tiles in tile manager 492 10000); // max tiles in tile manager
497 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 493 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
498 } 494 }
499 495
500 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { 496 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) {
501 gfx::Size layer_bounds(1099, 801); 497 gfx::Size layer_bounds(1099, 801);
502 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 498 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
503 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 499 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
504 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 500 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
505 501
506 // This rect does not intersect with the layer, as the layer is outside the 502 // This rect does not intersect with the layer, as the layer is outside the
507 // viewport. 503 // viewport.
508 gfx::Rect viewport_rect(1100, 0, 1000, 1000); 504 gfx::Rect viewport_rect(1100, 0, 1000, 1000);
509 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); 505 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds)));
510 506
511 tiling_->UpdateTilePriorities( 507 tiling_->UpdateTilePriorities(
512 ACTIVE_TREE, 508 ACTIVE_TREE,
513 layer_bounds, // device viewport 509 layer_bounds, // device viewport
514 viewport_rect, // viewport in layer space 510 viewport_rect, // viewport in layer space
515 gfx::Rect(), // visible content rect 511 gfx::Rect(), // visible content rect
516 layer_bounds, // last layer bounds 512 layer_bounds, // last layer bounds
517 layer_bounds, // current layer bounds 513 layer_bounds, // current layer bounds
518 1.f, // last contents scale 514 1.f, // last contents scale
519 1.f, // current contents scale 515 1.f, // current contents scale
520 gfx::Transform(), // last screen transform 516 gfx::Transform(), // last screen transform
521 gfx::Transform(), // current screen transform 517 gfx::Transform(), // current screen transform
522 2, // current frame number 518 1.0, // current frame time
523 2.0, // current frame time
524 false, // store screen space quads on tiles 519 false, // store screen space quads on tiles
525 10000); // max tiles in tile manager 520 10000); // max tiles in tile manager
526 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 521 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
527 } 522 }
528 523
529 static void TilesIntersectingRectExist(gfx::Rect rect, Tile* tile) { 524 static void TilesIntersectingRectExist(gfx::Rect rect, Tile* tile) {
530 ASSERT_TRUE(tile != NULL); 525 ASSERT_TRUE(tile != NULL);
531 bool expected_live = rect.Intersects(tile->content_rect()); 526 bool expected_live = rect.Intersects(tile->content_rect());
532 EXPECT_EQ(expected_live, tile->priority(ACTIVE_TREE).is_live) << 527 EXPECT_EQ(expected_live, tile->priority(ACTIVE_TREE).is_live) <<
533 "Rects intersecting " << rect.ToString() << " should exist. " << 528 "Rects intersecting " << rect.ToString() << " should exist. " <<
(...skipping 13 matching lines...) Expand all
547 ACTIVE_TREE, 542 ACTIVE_TREE,
548 layer_bounds, // device viewport 543 layer_bounds, // device viewport
549 gfx::Rect(layer_bounds), // viewport in layer space 544 gfx::Rect(layer_bounds), // viewport in layer space
550 visible_rect, // visible content rect 545 visible_rect, // visible content rect
551 layer_bounds, // last layer bounds 546 layer_bounds, // last layer bounds
552 layer_bounds, // current layer bounds 547 layer_bounds, // current layer bounds
553 1.f, // last contents scale 548 1.f, // last contents scale
554 1.f, // current contents scale 549 1.f, // current contents scale
555 gfx::Transform(), // last screen transform 550 gfx::Transform(), // last screen transform
556 gfx::Transform(), // current screen transform 551 gfx::Transform(), // current screen transform
557 2, // current frame number 552 1.0, // current frame time
558 2.0, // current frame time
559 false, // store screen space quads on tiles 553 false, // store screen space quads on tiles
560 1); // max tiles in tile manager 554 1); // max tiles in tile manager
561 VerifyTiles(1.f, 555 VerifyTiles(1.f,
562 gfx::Rect(layer_bounds), 556 gfx::Rect(layer_bounds),
563 base::Bind(&TilesIntersectingRectExist, visible_rect)); 557 base::Bind(&TilesIntersectingRectExist, visible_rect));
564 } 558 }
565 559
566 static void CountExistingTiles(int *count, Tile* tile) { 560 static void CountExistingTiles(int *count, Tile* tile) {
567 ASSERT_TRUE(tile != NULL); 561 ASSERT_TRUE(tile != NULL);
568 if (tile->priority(ACTIVE_TREE).is_live) 562 if (tile->priority(ACTIVE_TREE).is_live)
(...skipping 12 matching lines...) Expand all
581 ACTIVE_TREE, 575 ACTIVE_TREE,
582 layer_bounds, // device viewport 576 layer_bounds, // device viewport
583 gfx::Rect(layer_bounds), // viewport in layer space 577 gfx::Rect(layer_bounds), // viewport in layer space
584 gfx::Rect(layer_bounds), // visible content rect 578 gfx::Rect(layer_bounds), // visible content rect
585 layer_bounds, // last layer bounds 579 layer_bounds, // last layer bounds
586 layer_bounds, // current layer bounds 580 layer_bounds, // current layer bounds
587 1.f, // last contents scale 581 1.f, // last contents scale
588 1.f, // current contents scale 582 1.f, // current contents scale
589 gfx::Transform(), // last screen transform 583 gfx::Transform(), // last screen transform
590 gfx::Transform(), // current screen transform 584 gfx::Transform(), // current screen transform
591 2, // current frame number 585 1.0, // current frame time
592 2.0, // current frame time
593 false, // store screen space quads on tiles 586 false, // store screen space quads on tiles
594 1); // max tiles in tile manager 587 1); // max tiles in tile manager
595 588
596 int num_tiles = 0; 589 int num_tiles = 0;
597 VerifyTiles(1.f, 590 VerifyTiles(1.f,
598 gfx::Rect(layer_bounds), 591 gfx::Rect(layer_bounds),
599 base::Bind(&CountExistingTiles, &num_tiles)); 592 base::Bind(&CountExistingTiles, &num_tiles));
600 // If we're making a rect the size of one tile, it can only overlap up to 4 593 // If we're making a rect the size of one tile, it can only overlap up to 4
601 // tiles depending on its position. 594 // tiles depending on its position.
602 EXPECT_LE(num_tiles, 4); 595 EXPECT_LE(num_tiles, 4);
603 } 596 }
604 597
605 } // namespace 598 } // namespace
606 } // namespace cc 599 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698