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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 2566613002: [4/5] Add translated rasterization support for PictureLayerTilingSet & below (Closed)
Patch Set: still need that rebaseline Created 3 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
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/test/fake_picture_layer_tiling_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 animating_transform_to_screen); 184 animating_transform_to_screen);
185 layer->UpdateTiles(); 185 layer->UpdateTiles();
186 } 186 }
187 187
188 static void VerifyAllPrioritizedTilesExistAndHaveRasterSource( 188 static void VerifyAllPrioritizedTilesExistAndHaveRasterSource(
189 const PictureLayerTiling* tiling, 189 const PictureLayerTiling* tiling,
190 RasterSource* raster_source) { 190 RasterSource* raster_source) {
191 auto prioritized_tiles = 191 auto prioritized_tiles =
192 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 192 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
193 for (PictureLayerTiling::CoverageIterator iter( 193 for (PictureLayerTiling::CoverageIterator iter(
194 tiling, tiling->contents_scale(), 194 tiling, tiling->contents_scale_key(),
195 gfx::Rect(tiling->tiling_size())); 195 gfx::Rect(tiling->tiling_size()));
196 iter; ++iter) { 196 iter; ++iter) {
197 EXPECT_TRUE(*iter); 197 EXPECT_TRUE(*iter);
198 EXPECT_EQ(raster_source, prioritized_tiles[*iter].raster_source()); 198 EXPECT_EQ(raster_source, prioritized_tiles[*iter].raster_source());
199 } 199 }
200 } 200 }
201 201
202 void SetContentsScaleOnBothLayers(float contents_scale, 202 void SetContentsScaleOnBothLayers(float contents_scale,
203 float device_scale_factor, 203 float device_scale_factor,
204 float page_scale_factor, 204 float page_scale_factor,
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 316
317 // Verify the viewport rect for tile priority is used in picture layer tiling. 317 // Verify the viewport rect for tile priority is used in picture layer tiling.
318 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, 318 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space,
319 active_layer()->viewport_rect_for_tile_priority_in_content_space()); 319 active_layer()->viewport_rect_for_tile_priority_in_content_space());
320 PictureLayerTilingSet* tilings = active_layer()->tilings(); 320 PictureLayerTilingSet* tilings = active_layer()->tilings();
321 for (size_t i = 0; i < tilings->num_tilings(); i++) { 321 for (size_t i = 0; i < tilings->num_tilings(); i++) {
322 PictureLayerTiling* tiling = tilings->tiling_at(i); 322 PictureLayerTiling* tiling = tilings->tiling_at(i);
323 EXPECT_EQ( 323 EXPECT_EQ(
324 tiling->GetCurrentVisibleRectForTesting(), 324 tiling->GetCurrentVisibleRectForTesting(),
325 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, 325 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space,
326 tiling->contents_scale())); 326 tiling->contents_scale_key()));
327 } 327 }
328 328
329 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in 329 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in
330 // screen space and the transform for tile priority is translated and 330 // screen space and the transform for tile priority is translated and
331 // rotated. The actual viewport for tile priority used by PictureLayerImpl 331 // rotated. The actual viewport for tile priority used by PictureLayerImpl
332 // should be (200, 200, 100, 100) applied with the said transform. 332 // should be (200, 200, 100, 100) applied with the said transform.
333 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 333 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
334 334
335 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); 335 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100);
336 transform_for_tile_priority.Translate(100, 100); 336 transform_for_tile_priority.Translate(100, 100);
(...skipping 15 matching lines...) Expand all
352 viewport_rect_for_tile_priority); 352 viewport_rect_for_tile_priority);
353 353
354 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, 354 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space,
355 active_layer()->viewport_rect_for_tile_priority_in_content_space()); 355 active_layer()->viewport_rect_for_tile_priority_in_content_space());
356 tilings = active_layer()->tilings(); 356 tilings = active_layer()->tilings();
357 for (size_t i = 0; i < tilings->num_tilings(); i++) { 357 for (size_t i = 0; i < tilings->num_tilings(); i++) {
358 PictureLayerTiling* tiling = tilings->tiling_at(i); 358 PictureLayerTiling* tiling = tilings->tiling_at(i);
359 EXPECT_EQ( 359 EXPECT_EQ(
360 tiling->GetCurrentVisibleRectForTesting(), 360 tiling->GetCurrentVisibleRectForTesting(),
361 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, 361 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space,
362 tiling->contents_scale())); 362 tiling->contents_scale_key()));
363 } 363 }
364 } 364 }
365 365
366 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { 366 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) {
367 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 367 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
368 gfx::Size layer_bounds(400, 400); 368 gfx::Size layer_bounds(400, 400);
369 SetupDefaultTrees(layer_bounds); 369 SetupDefaultTrees(layer_bounds);
370 370
371 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.f, 1.f, 1.f, 1.f, 0.f, 371 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.f, 1.f, 1.f, 1.f, 0.f,
372 false); 372 false);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, 428 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source,
429 gfx::Size(50, 50), layer_invalidation); 429 gfx::Size(50, 50), layer_invalidation);
430 430
431 EXPECT_EQ(1u, pending_layer()->num_tilings()); 431 EXPECT_EQ(1u, pending_layer()->num_tilings());
432 EXPECT_EQ(3u, active_layer()->num_tilings()); 432 EXPECT_EQ(3u, active_layer()->num_tilings());
433 433
434 const PictureLayerTilingSet* tilings = pending_layer()->tilings(); 434 const PictureLayerTilingSet* tilings = pending_layer()->tilings();
435 EXPECT_GT(tilings->num_tilings(), 0u); 435 EXPECT_GT(tilings->num_tilings(), 0u);
436 for (size_t i = 0; i < tilings->num_tilings(); ++i) { 436 for (size_t i = 0; i < tilings->num_tilings(); ++i) {
437 const PictureLayerTiling* tiling = tilings->tiling_at(i); 437 const PictureLayerTiling* tiling = tilings->tiling_at(i);
438 gfx::Rect content_invalidation = 438 gfx::Rect content_invalidation = gfx::ScaleToEnclosingRect(
439 gfx::ScaleToEnclosingRect(layer_invalidation, tiling->contents_scale()); 439 layer_invalidation, tiling->contents_scale_key());
440 auto prioritized_tiles = 440 auto prioritized_tiles =
441 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 441 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
442 for (PictureLayerTiling::CoverageIterator iter( 442 for (PictureLayerTiling::CoverageIterator iter(
443 tiling, tiling->contents_scale(), 443 tiling, tiling->contents_scale_key(),
444 gfx::Rect(tiling->tiling_size())); 444 gfx::Rect(tiling->tiling_size()));
445 iter; ++iter) { 445 iter; ++iter) {
446 // We don't always have a tile, but when we do it's because it was 446 // We don't always have a tile, but when we do it's because it was
447 // invalidated and it has the latest raster source. 447 // invalidated and it has the latest raster source.
448 if (*iter) { 448 if (*iter) {
449 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); 449 EXPECT_FALSE(iter.geometry_rect().IsEmpty());
450 EXPECT_EQ(pending_raster_source.get(), 450 EXPECT_EQ(pending_raster_source.get(),
451 prioritized_tiles[*iter].raster_source()); 451 prioritized_tiles[*iter].raster_source());
452 EXPECT_TRUE(iter.geometry_rect().Intersects(content_invalidation)); 452 EXPECT_TRUE(iter.geometry_rect().Intersects(content_invalidation));
453 } else { 453 } else {
454 // We don't create tiles in non-invalidated regions. 454 // We don't create tiles in non-invalidated regions.
455 EXPECT_FALSE(iter.geometry_rect().Intersects(content_invalidation)); 455 EXPECT_FALSE(iter.geometry_rect().Intersects(content_invalidation));
456 } 456 }
457 } 457 }
458 } 458 }
459 459
460 tilings = active_layer()->tilings(); 460 tilings = active_layer()->tilings();
461 EXPECT_GT(tilings->num_tilings(), 0u); 461 EXPECT_GT(tilings->num_tilings(), 0u);
462 for (size_t i = 0; i < tilings->num_tilings(); ++i) { 462 for (size_t i = 0; i < tilings->num_tilings(); ++i) {
463 const PictureLayerTiling* tiling = tilings->tiling_at(i); 463 const PictureLayerTiling* tiling = tilings->tiling_at(i);
464 auto prioritized_tiles = 464 auto prioritized_tiles =
465 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 465 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
466 for (PictureLayerTiling::CoverageIterator iter( 466 for (PictureLayerTiling::CoverageIterator iter(
467 tiling, tiling->contents_scale(), 467 tiling, tiling->contents_scale_key(),
468 gfx::Rect(tiling->tiling_size())); 468 gfx::Rect(tiling->tiling_size()));
469 iter; ++iter) { 469 iter; ++iter) {
470 EXPECT_TRUE(*iter); 470 EXPECT_TRUE(*iter);
471 EXPECT_FALSE(iter.geometry_rect().IsEmpty()); 471 EXPECT_FALSE(iter.geometry_rect().IsEmpty());
472 // Raster source will be updated upon activation. 472 // Raster source will be updated upon activation.
473 EXPECT_EQ(active_raster_source.get(), 473 EXPECT_EQ(active_raster_source.get(),
474 prioritized_tiles[*iter].raster_source()); 474 prioritized_tiles[*iter].raster_source());
475 } 475 }
476 } 476 }
477 } 477 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings()); 511 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings());
512 512
513 SetupDrawPropertiesAndUpdateTiles(active_layer(), 513 SetupDrawPropertiesAndUpdateTiles(active_layer(),
514 6.f, // ideal contents scale 514 6.f, // ideal contents scale
515 3.f, // device scale 515 3.f, // device scale
516 2.f, // page scale 516 2.f, // page scale
517 1.f, // maximum animation scale 517 1.f, // maximum animation scale
518 0.f, // starting animation scale 518 0.f, // starting animation scale
519 false); 519 false);
520 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 520 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
521 EXPECT_FLOAT_EQ(6.f, 521 EXPECT_FLOAT_EQ(
522 active_layer()->tilings()->tiling_at(0)->contents_scale()); 522 6.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
523 EXPECT_FLOAT_EQ(6.f * low_res_factor, 523 EXPECT_FLOAT_EQ(
524 active_layer()->tilings()->tiling_at(1)->contents_scale()); 524 6.f * low_res_factor,
525 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
525 526
526 // If we change the page scale factor, then we should get new tilings. 527 // If we change the page scale factor, then we should get new tilings.
527 SetupDrawPropertiesAndUpdateTiles(active_layer(), 528 SetupDrawPropertiesAndUpdateTiles(active_layer(),
528 6.6f, // ideal contents scale 529 6.6f, // ideal contents scale
529 3.f, // device scale 530 3.f, // device scale
530 2.2f, // page scale 531 2.2f, // page scale
531 1.f, // maximum animation scale 532 1.f, // maximum animation scale
532 0.f, // starting animation scale 533 0.f, // starting animation scale
533 false); 534 false);
534 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings()); 535 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings());
535 EXPECT_FLOAT_EQ(6.6f, 536 EXPECT_FLOAT_EQ(
536 active_layer()->tilings()->tiling_at(0)->contents_scale()); 537 6.6f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
537 EXPECT_FLOAT_EQ(6.6f * low_res_factor, 538 EXPECT_FLOAT_EQ(
538 active_layer()->tilings()->tiling_at(2)->contents_scale()); 539 6.6f * low_res_factor,
540 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
539 541
540 // If we change the device scale factor, then we should get new tilings. 542 // If we change the device scale factor, then we should get new tilings.
541 SetupDrawPropertiesAndUpdateTiles(active_layer(), 543 SetupDrawPropertiesAndUpdateTiles(active_layer(),
542 7.26f, // ideal contents scale 544 7.26f, // ideal contents scale
543 3.3f, // device scale 545 3.3f, // device scale
544 2.2f, // page scale 546 2.2f, // page scale
545 1.f, // maximum animation scale 547 1.f, // maximum animation scale
546 0.f, // starting animation scale 548 0.f, // starting animation scale
547 false); 549 false);
548 ASSERT_EQ(6u, active_layer()->tilings()->num_tilings()); 550 ASSERT_EQ(6u, active_layer()->tilings()->num_tilings());
549 EXPECT_FLOAT_EQ(7.26f, 551 EXPECT_FLOAT_EQ(
550 active_layer()->tilings()->tiling_at(0)->contents_scale()); 552 7.26f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
551 EXPECT_FLOAT_EQ(7.26f * low_res_factor, 553 EXPECT_FLOAT_EQ(
552 active_layer()->tilings()->tiling_at(3)->contents_scale()); 554 7.26f * low_res_factor,
555 active_layer()->tilings()->tiling_at(3)->contents_scale_key());
553 556
554 // If we change the device scale factor, but end up at the same total scale 557 // If we change the device scale factor, but end up at the same total scale
555 // factor somehow, then we don't get new tilings. 558 // factor somehow, then we don't get new tilings.
556 SetupDrawPropertiesAndUpdateTiles(active_layer(), 559 SetupDrawPropertiesAndUpdateTiles(active_layer(),
557 7.26f, // ideal contents scale 560 7.26f, // ideal contents scale
558 2.2f, // device scale 561 2.2f, // device scale
559 3.3f, // page scale 562 3.3f, // page scale
560 1.f, // maximum animation scale 563 1.f, // maximum animation scale
561 0.f, // starting animation scale 564 0.f, // starting animation scale
562 false); 565 false);
563 ASSERT_EQ(6u, active_layer()->tilings()->num_tilings()); 566 ASSERT_EQ(6u, active_layer()->tilings()->num_tilings());
564 EXPECT_FLOAT_EQ(7.26f, 567 EXPECT_FLOAT_EQ(
565 active_layer()->tilings()->tiling_at(0)->contents_scale()); 568 7.26f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
566 EXPECT_FLOAT_EQ(7.26f * low_res_factor, 569 EXPECT_FLOAT_EQ(
567 active_layer()->tilings()->tiling_at(3)->contents_scale()); 570 7.26f * low_res_factor,
571 active_layer()->tilings()->tiling_at(3)->contents_scale_key());
568 } 572 }
569 573
570 TEST_F(PictureLayerImplTest, PendingLayerOnlyHasHighResTiling) { 574 TEST_F(PictureLayerImplTest, PendingLayerOnlyHasHighResTiling) {
571 gfx::Size layer_bounds(1300, 1900); 575 gfx::Size layer_bounds(1300, 1900);
572 SetupDefaultTrees(layer_bounds); 576 SetupDefaultTrees(layer_bounds);
573 577
574 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 578 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
575 EXPECT_LT(low_res_factor, 1.f); 579 EXPECT_LT(low_res_factor, 1.f);
576 580
577 pending_layer()->ReleaseTileResources(); 581 pending_layer()->ReleaseTileResources();
578 EXPECT_FALSE(pending_layer()->tilings()); 582 EXPECT_FALSE(pending_layer()->tilings());
579 pending_layer()->RecreateTileResources(); 583 pending_layer()->RecreateTileResources();
580 EXPECT_EQ(0u, pending_layer()->tilings()->num_tilings()); 584 EXPECT_EQ(0u, pending_layer()->tilings()->num_tilings());
581 585
582 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 586 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
583 6.f, // ideal contents scale 587 6.f, // ideal contents scale
584 3.f, // device scale 588 3.f, // device scale
585 2.f, // page scale 589 2.f, // page scale
586 1.f, // maximum animation scale 590 1.f, // maximum animation scale
587 0.f, // starting animation scale 591 0.f, // starting animation scale
588 false); 592 false);
589 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 593 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
590 EXPECT_FLOAT_EQ(6.f, 594 EXPECT_FLOAT_EQ(
591 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 595 6.f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
592 596
593 // If we change the page scale factor, then we should get new tilings. 597 // If we change the page scale factor, then we should get new tilings.
594 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 598 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
595 6.6f, // ideal contents scale 599 6.6f, // ideal contents scale
596 3.f, // device scale 600 3.f, // device scale
597 2.2f, // page scale 601 2.2f, // page scale
598 1.f, // maximum animation scale 602 1.f, // maximum animation scale
599 0.f, // starting animation scale 603 0.f, // starting animation scale
600 false); 604 false);
601 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 605 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
602 EXPECT_FLOAT_EQ(6.6f, 606 EXPECT_FLOAT_EQ(
603 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 607 6.6f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
604 608
605 // If we change the device scale factor, then we should get new tilings. 609 // If we change the device scale factor, then we should get new tilings.
606 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 610 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
607 7.26f, // ideal contents scale 611 7.26f, // ideal contents scale
608 3.3f, // device scale 612 3.3f, // device scale
609 2.2f, // page scale 613 2.2f, // page scale
610 1.f, // maximum animation scale 614 1.f, // maximum animation scale
611 0.f, // starting animation scale 615 0.f, // starting animation scale
612 false); 616 false);
613 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 617 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
614 EXPECT_FLOAT_EQ(7.26f, 618 EXPECT_FLOAT_EQ(
615 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 619 7.26f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
616 620
617 // If we change the device scale factor, but end up at the same total scale 621 // If we change the device scale factor, but end up at the same total scale
618 // factor somehow, then we don't get new tilings. 622 // factor somehow, then we don't get new tilings.
619 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 623 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
620 7.26f, // ideal contents scale 624 7.26f, // ideal contents scale
621 2.2f, // device scale 625 2.2f, // device scale
622 3.3f, // page scale 626 3.3f, // page scale
623 1.f, // maximum animation scale 627 1.f, // maximum animation scale
624 0.f, // starting animation scale 628 0.f, // starting animation scale
625 false); 629 false);
626 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 630 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
627 EXPECT_FLOAT_EQ(7.26f, 631 EXPECT_FLOAT_EQ(
628 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 632 7.26f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
629 } 633 }
630 634
631 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { 635 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) {
632 // This test makes sure that if a layer can have tilings, then a commit makes 636 // This test makes sure that if a layer can have tilings, then a commit makes
633 // it not able to have tilings (empty size), and then a future commit that 637 // it not able to have tilings (empty size), and then a future commit that
634 // makes it valid again should be able to create tilings. 638 // makes it valid again should be able to create tilings.
635 gfx::Size layer_bounds(1300, 1900); 639 gfx::Size layer_bounds(1300, 1900);
636 640
637 scoped_refptr<FakeRasterSource> empty_raster_source = 641 scoped_refptr<FakeRasterSource> empty_raster_source =
638 FakeRasterSource::CreateEmpty(layer_bounds); 642 FakeRasterSource::CreateEmpty(layer_bounds);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 } 689 }
686 690
687 TEST_F(PictureLayerImplTest, ZoomOutCrash) { 691 TEST_F(PictureLayerImplTest, ZoomOutCrash) {
688 gfx::Size layer_bounds(1300, 1900); 692 gfx::Size layer_bounds(1300, 1900);
689 693
690 // Set up the high and low res tilings before pinch zoom. 694 // Set up the high and low res tilings before pinch zoom.
691 SetupDefaultTrees(layer_bounds); 695 SetupDefaultTrees(layer_bounds);
692 ResetTilingsAndRasterScales(); 696 ResetTilingsAndRasterScales();
693 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings()); 697 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings());
694 SetContentsScaleOnBothLayers(32.0f, 1.0f, 32.0f, 1.0f, 0.f, false); 698 SetContentsScaleOnBothLayers(32.0f, 1.0f, 32.0f, 1.0f, 0.f, false);
695 EXPECT_EQ(32.f, active_layer()->HighResTiling()->contents_scale()); 699 EXPECT_EQ(32.f, active_layer()->HighResTiling()->contents_scale_key());
696 host_impl()->PinchGestureBegin(); 700 host_impl()->PinchGestureBegin();
697 SetContentsScaleOnBothLayers(1.0f, 1.0f, 1.0f, 1.0f, 0.f, false); 701 SetContentsScaleOnBothLayers(1.0f, 1.0f, 1.0f, 1.0f, 0.f, false);
698 SetContentsScaleOnBothLayers(1.0f, 1.0f, 1.0f, 1.0f, 0.f, false); 702 SetContentsScaleOnBothLayers(1.0f, 1.0f, 1.0f, 1.0f, 0.f, false);
699 EXPECT_EQ(active_layer()->tilings()->NumHighResTilings(), 1); 703 EXPECT_EQ(active_layer()->tilings()->NumHighResTilings(), 1);
700 } 704 }
701 705
702 TEST_F(PictureLayerImplTest, ScaledBoundsOverflowInt) { 706 TEST_F(PictureLayerImplTest, ScaledBoundsOverflowInt) {
703 // Limit visible size. 707 // Limit visible size.
704 gfx::Size viewport_size(1, 1); 708 gfx::Size viewport_size(1, 1);
705 host_impl()->SetViewportSize(viewport_size); 709 host_impl()->SetViewportSize(viewport_size);
706 710
707 gfx::Size layer_bounds(600000, 60); 711 gfx::Size layer_bounds(600000, 60);
708 712
709 // Set up the high and low res tilings before pinch zoom. 713 // Set up the high and low res tilings before pinch zoom.
710 SetupDefaultTrees(layer_bounds); 714 SetupDefaultTrees(layer_bounds);
711 ResetTilingsAndRasterScales(); 715 ResetTilingsAndRasterScales();
712 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings()); 716 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings());
713 float scale = 8000.f; 717 float scale = 8000.f;
714 718
715 // Verify this will overflow an int. 719 // Verify this will overflow an int.
716 EXPECT_GT(static_cast<float>(layer_bounds.width()) * scale, 720 EXPECT_GT(static_cast<float>(layer_bounds.width()) * scale,
717 static_cast<float>(std::numeric_limits<int>::max())); 721 static_cast<float>(std::numeric_limits<int>::max()));
718 722
719 SetContentsScaleOnBothLayers(scale, 1.0f, scale, 1.0f, 0.f, false); 723 SetContentsScaleOnBothLayers(scale, 1.0f, scale, 1.0f, 0.f, false);
720 float adjusted_scale = active_layer()->HighResTiling()->contents_scale(); 724 float adjusted_scale = active_layer()->HighResTiling()->contents_scale_key();
721 EXPECT_LT(adjusted_scale, scale); 725 EXPECT_LT(adjusted_scale, scale);
722 726
723 // PopulateSharedQuadState CHECKs for overflows. 727 // PopulateSharedQuadState CHECKs for overflows.
724 // See http://crbug.com/679035 728 // See http://crbug.com/679035
725 active_layer()->draw_properties().visible_layer_rect = 729 active_layer()->draw_properties().visible_layer_rect =
726 gfx::Rect(layer_bounds); 730 gfx::Rect(layer_bounds);
727 SharedQuadState state; 731 SharedQuadState state;
728 active_layer()->PopulateScaledSharedQuadState(&state, adjusted_scale, 732 active_layer()->PopulateScaledSharedQuadState(&state, adjusted_scale,
729 adjusted_scale); 733 adjusted_scale);
730 } 734 }
731 735
732 TEST_F(PictureLayerImplTest, PinchGestureTilings) { 736 TEST_F(PictureLayerImplTest, PinchGestureTilings) {
733 gfx::Size layer_bounds(1300, 1900); 737 gfx::Size layer_bounds(1300, 1900);
734 738
735 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 739 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
736 // Set up the high and low res tilings before pinch zoom. 740 // Set up the high and low res tilings before pinch zoom.
737 SetupDefaultTrees(layer_bounds); 741 SetupDefaultTrees(layer_bounds);
738 ResetTilingsAndRasterScales(); 742 ResetTilingsAndRasterScales();
739 743
740 SetContentsScaleOnBothLayers(2.f, 1.0f, 2.f, 1.0f, 0.f, false); 744 SetContentsScaleOnBothLayers(2.f, 1.0f, 2.f, 1.0f, 0.f, false);
741 EXPECT_EQ(active_layer()->num_tilings(), 2u); 745 EXPECT_EQ(active_layer()->num_tilings(), 2u);
742 EXPECT_EQ(pending_layer()->num_tilings(), 1u); 746 EXPECT_EQ(pending_layer()->num_tilings(), 1u);
743 EXPECT_EQ(active_layer()->tilings()->tiling_at(0)->contents_scale(), 2.f); 747 EXPECT_EQ(active_layer()->tilings()->tiling_at(0)->contents_scale_key(), 2.f);
744 EXPECT_EQ(active_layer()->tilings()->tiling_at(1)->contents_scale(), 748 EXPECT_EQ(active_layer()->tilings()->tiling_at(1)->contents_scale_key(),
745 2.f * low_res_factor); 749 2.f * low_res_factor);
746 // One of the tilings has to be a low resolution one. 750 // One of the tilings has to be a low resolution one.
747 EXPECT_EQ(LOW_RESOLUTION, 751 EXPECT_EQ(LOW_RESOLUTION,
748 active_layer()->tilings()->tiling_at(1)->resolution()); 752 active_layer()->tilings()->tiling_at(1)->resolution());
749 753
750 // Ensure UpdateTiles won't remove any tilings. 754 // Ensure UpdateTiles won't remove any tilings.
751 active_layer()->MarkAllTilingsUsed(); 755 active_layer()->MarkAllTilingsUsed();
752 756
753 // Start a pinch gesture. 757 // Start a pinch gesture.
754 host_impl()->PinchGestureBegin(); 758 host_impl()->PinchGestureBegin();
755 759
756 // Zoom out by a small amount. We should create a tiling at half 760 // Zoom out by a small amount. We should create a tiling at half
757 // the scale (2/kMaxScaleRatioDuringPinch). 761 // the scale (2/kMaxScaleRatioDuringPinch).
758 SetContentsScaleOnBothLayers(1.8f, 1.0f, 1.8f, 1.0f, 0.f, false); 762 SetContentsScaleOnBothLayers(1.8f, 1.0f, 1.8f, 1.0f, 0.f, false);
759 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings()); 763 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings());
760 EXPECT_FLOAT_EQ(2.0f, 764 EXPECT_FLOAT_EQ(
761 active_layer()->tilings()->tiling_at(0)->contents_scale()); 765 2.0f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
762 EXPECT_FLOAT_EQ(1.0f, 766 EXPECT_FLOAT_EQ(
763 active_layer()->tilings()->tiling_at(1)->contents_scale()); 767 1.0f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
764 EXPECT_FLOAT_EQ(2.0f * low_res_factor, 768 EXPECT_FLOAT_EQ(
765 active_layer()->tilings()->tiling_at(2)->contents_scale()); 769 2.0f * low_res_factor,
770 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
766 // Since we're pinching, we shouldn't create a low resolution tiling. 771 // Since we're pinching, we shouldn't create a low resolution tiling.
767 EXPECT_FALSE( 772 EXPECT_FALSE(
768 active_layer()->tilings()->FindTilingWithResolution(LOW_RESOLUTION)); 773 active_layer()->tilings()->FindTilingWithResolution(LOW_RESOLUTION));
769 774
770 // Ensure UpdateTiles won't remove any tilings. 775 // Ensure UpdateTiles won't remove any tilings.
771 active_layer()->MarkAllTilingsUsed(); 776 active_layer()->MarkAllTilingsUsed();
772 777
773 // Zoom out further, close to our low-res scale factor. We should 778 // Zoom out further, close to our low-res scale factor. We should
774 // use that tiling as high-res, and not create a new tiling. 779 // use that tiling as high-res, and not create a new tiling.
775 SetContentsScaleOnBothLayers(low_res_factor * 2.1f, 1.0f, 780 SetContentsScaleOnBothLayers(low_res_factor * 2.1f, 1.0f,
776 low_res_factor * 2.1f, 1.0f, 0.f, false); 781 low_res_factor * 2.1f, 1.0f, 0.f, false);
777 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings()); 782 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings());
778 EXPECT_FALSE( 783 EXPECT_FALSE(
779 active_layer()->tilings()->FindTilingWithResolution(LOW_RESOLUTION)); 784 active_layer()->tilings()->FindTilingWithResolution(LOW_RESOLUTION));
780 785
781 // Zoom in a lot now. Since we increase by increments of 786 // Zoom in a lot now. Since we increase by increments of
782 // kMaxScaleRatioDuringPinch, this will create a new tiling at 4.0. 787 // kMaxScaleRatioDuringPinch, this will create a new tiling at 4.0.
783 SetContentsScaleOnBothLayers(3.8f, 1.0f, 3.8f, 1.f, 0.f, false); 788 SetContentsScaleOnBothLayers(3.8f, 1.0f, 3.8f, 1.f, 0.f, false);
784 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings()); 789 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings());
785 EXPECT_FLOAT_EQ(4.0f, 790 EXPECT_FLOAT_EQ(
786 active_layer()->tilings()->tiling_at(0)->contents_scale()); 791 4.0f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
787 // Although one of the tilings matches the low resolution scale, it still 792 // Although one of the tilings matches the low resolution scale, it still
788 // shouldn't be marked as low resolution since we're pinching. 793 // shouldn't be marked as low resolution since we're pinching.
789 auto* low_res_tiling = 794 auto* low_res_tiling =
790 active_layer()->tilings()->FindTilingWithScaleKey(4.f * low_res_factor); 795 active_layer()->tilings()->FindTilingWithScaleKey(4.f * low_res_factor);
791 EXPECT_TRUE(low_res_tiling); 796 EXPECT_TRUE(low_res_tiling);
792 EXPECT_NE(LOW_RESOLUTION, low_res_tiling->resolution()); 797 EXPECT_NE(LOW_RESOLUTION, low_res_tiling->resolution());
793 798
794 // Stop a pinch gesture. 799 // Stop a pinch gesture.
795 host_impl()->PinchGestureEnd(); 800 host_impl()->PinchGestureEnd();
796 801
797 // Ensure UpdateTiles won't remove any tilings. 802 // Ensure UpdateTiles won't remove any tilings.
798 active_layer()->MarkAllTilingsUsed(); 803 active_layer()->MarkAllTilingsUsed();
799 804
800 // After pinch ends, set the scale to what the raster scale was updated to 805 // After pinch ends, set the scale to what the raster scale was updated to
801 // (checked above). 806 // (checked above).
802 SetContentsScaleOnBothLayers(4.0f, 1.0f, 4.0f, 1.f, 0.f, false); 807 SetContentsScaleOnBothLayers(4.0f, 1.0f, 4.0f, 1.f, 0.f, false);
803 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings()); 808 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings());
804 EXPECT_FLOAT_EQ(4.0f, 809 EXPECT_FLOAT_EQ(
805 active_layer()->tilings()->tiling_at(0)->contents_scale()); 810 4.0f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
806 // Now that we stopped pinching, the low resolution tiling that existed should 811 // Now that we stopped pinching, the low resolution tiling that existed should
807 // now be marked as low resolution. 812 // now be marked as low resolution.
808 low_res_tiling = 813 low_res_tiling =
809 active_layer()->tilings()->FindTilingWithScaleKey(4.f * low_res_factor); 814 active_layer()->tilings()->FindTilingWithScaleKey(4.f * low_res_factor);
810 EXPECT_TRUE(low_res_tiling); 815 EXPECT_TRUE(low_res_tiling);
811 EXPECT_EQ(LOW_RESOLUTION, low_res_tiling->resolution()); 816 EXPECT_EQ(LOW_RESOLUTION, low_res_tiling->resolution());
812 } 817 }
813 818
814 TEST_F(PictureLayerImplTest, SnappedTilingDuringZoom) { 819 TEST_F(PictureLayerImplTest, SnappedTilingDuringZoom) {
815 gfx::Size layer_bounds(2600, 3800); 820 gfx::Size layer_bounds(2600, 3800);
816 SetupDefaultTrees(layer_bounds); 821 SetupDefaultTrees(layer_bounds);
817 822
818 ResetTilingsAndRasterScales(); 823 ResetTilingsAndRasterScales();
819 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings()); 824 EXPECT_EQ(0u, active_layer()->tilings()->num_tilings());
820 825
821 // Set up the high and low res tilings before pinch zoom. 826 // Set up the high and low res tilings before pinch zoom.
822 SetContentsScaleOnBothLayers(0.24f, 1.0f, 0.24f, 1.0f, 0.f, false); 827 SetContentsScaleOnBothLayers(0.24f, 1.0f, 0.24f, 1.0f, 0.f, false);
823 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings()); 828 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings());
824 EXPECT_FLOAT_EQ(0.24f, 829 EXPECT_FLOAT_EQ(
825 active_layer()->tilings()->tiling_at(0)->contents_scale()); 830 0.24f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
826 EXPECT_FLOAT_EQ(0.0625f, 831 EXPECT_FLOAT_EQ(
827 active_layer()->tilings()->tiling_at(1)->contents_scale()); 832 0.0625f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
828 833
829 // Ensure UpdateTiles won't remove any tilings. 834 // Ensure UpdateTiles won't remove any tilings.
830 active_layer()->MarkAllTilingsUsed(); 835 active_layer()->MarkAllTilingsUsed();
831 836
832 // Start a pinch gesture. 837 // Start a pinch gesture.
833 host_impl()->PinchGestureBegin(); 838 host_impl()->PinchGestureBegin();
834 839
835 // Zoom out by a small amount. We should create a tiling at half 840 // Zoom out by a small amount. We should create a tiling at half
836 // the scale (1/kMaxScaleRatioDuringPinch). 841 // the scale (1/kMaxScaleRatioDuringPinch).
837 SetContentsScaleOnBothLayers(0.2f, 1.0f, 0.2f, 1.0f, 0.f, false); 842 SetContentsScaleOnBothLayers(0.2f, 1.0f, 0.2f, 1.0f, 0.f, false);
838 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings()); 843 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings());
839 EXPECT_FLOAT_EQ(0.24f, 844 EXPECT_FLOAT_EQ(
840 active_layer()->tilings()->tiling_at(0)->contents_scale()); 845 0.24f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
841 EXPECT_FLOAT_EQ(0.12f, 846 EXPECT_FLOAT_EQ(
842 active_layer()->tilings()->tiling_at(1)->contents_scale()); 847 0.12f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
843 EXPECT_FLOAT_EQ(0.0625, 848 EXPECT_FLOAT_EQ(
844 active_layer()->tilings()->tiling_at(2)->contents_scale()); 849 0.0625, active_layer()->tilings()->tiling_at(2)->contents_scale_key());
845 850
846 // Ensure UpdateTiles won't remove any tilings. 851 // Ensure UpdateTiles won't remove any tilings.
847 active_layer()->MarkAllTilingsUsed(); 852 active_layer()->MarkAllTilingsUsed();
848 853
849 // Zoom out further, close to our low-res scale factor. We should 854 // Zoom out further, close to our low-res scale factor. We should
850 // use that tiling as high-res, and not create a new tiling. 855 // use that tiling as high-res, and not create a new tiling.
851 SetContentsScaleOnBothLayers(0.1f, 1.0f, 0.1f, 1.0f, 0.f, false); 856 SetContentsScaleOnBothLayers(0.1f, 1.0f, 0.1f, 1.0f, 0.f, false);
852 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings()); 857 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings());
853 858
854 // Zoom in. 0.25(desired_scale) should be snapped to 0.24 during zoom-in 859 // Zoom in. 0.25(desired_scale) should be snapped to 0.24 during zoom-in
855 // because 0.25(desired_scale) is within the ratio(1.2). 860 // because 0.25(desired_scale) is within the ratio(1.2).
856 SetContentsScaleOnBothLayers(0.25f, 1.0f, 0.25f, 1.0f, 0.f, false); 861 SetContentsScaleOnBothLayers(0.25f, 1.0f, 0.25f, 1.0f, 0.f, false);
857 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings()); 862 EXPECT_EQ(3u, active_layer()->tilings()->num_tilings());
858 863
859 // Zoom in a lot. Since we move in factors of two, we should get a scale that 864 // Zoom in a lot. Since we move in factors of two, we should get a scale that
860 // is a power of 2 times 0.24. 865 // is a power of 2 times 0.24.
861 SetContentsScaleOnBothLayers(1.f, 1.0f, 1.f, 1.0f, 0.f, false); 866 SetContentsScaleOnBothLayers(1.f, 1.0f, 1.f, 1.0f, 0.f, false);
862 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings()); 867 EXPECT_EQ(4u, active_layer()->tilings()->num_tilings());
863 EXPECT_FLOAT_EQ(1.92f, 868 EXPECT_FLOAT_EQ(
864 active_layer()->tilings()->tiling_at(0)->contents_scale()); 869 1.92f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
865 } 870 }
866 871
867 TEST_F(PictureLayerImplTest, CleanUpTilings) { 872 TEST_F(PictureLayerImplTest, CleanUpTilings) {
868 gfx::Size layer_bounds(1300, 1900); 873 gfx::Size layer_bounds(1300, 1900);
869 874
870 std::vector<PictureLayerTiling*> used_tilings; 875 std::vector<PictureLayerTiling*> used_tilings;
871 876
872 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 877 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
873 EXPECT_LT(low_res_factor, 1.f); 878 EXPECT_LT(low_res_factor, 1.f);
874 879
875 float scale = 1.f; 880 float scale = 1.f;
876 float page_scale = 1.f; 881 float page_scale = 1.f;
877 882
878 SetupDefaultTrees(layer_bounds); 883 SetupDefaultTrees(layer_bounds);
879 active_layer()->SetHasWillChangeTransformHint(true); 884 active_layer()->SetHasWillChangeTransformHint(true);
880 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings()); 885 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings());
881 EXPECT_FLOAT_EQ(1.f, 886 EXPECT_FLOAT_EQ(
882 active_layer()->tilings()->tiling_at(0)->contents_scale()); 887 1.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
883 EXPECT_FLOAT_EQ(1.f * low_res_factor, 888 EXPECT_FLOAT_EQ(
884 active_layer()->tilings()->tiling_at(1)->contents_scale()); 889 1.f * low_res_factor,
890 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
885 891
886 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to 892 // Ensure UpdateTiles won't remove any tilings. Note this is unrelated to
887 // |used_tilings| variable, and it's here only to ensure that active_layer() 893 // |used_tilings| variable, and it's here only to ensure that active_layer()
888 // won't remove tilings before the test has a chance to verify behavior. 894 // won't remove tilings before the test has a chance to verify behavior.
889 active_layer()->MarkAllTilingsUsed(); 895 active_layer()->MarkAllTilingsUsed();
890 896
891 // We only have ideal tilings, so they aren't removed. 897 // We only have ideal tilings, so they aren't removed.
892 used_tilings.clear(); 898 used_tilings.clear();
893 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 899 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
894 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings()); 900 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings());
895 EXPECT_FLOAT_EQ(1.f, 901 EXPECT_FLOAT_EQ(
896 active_layer()->tilings()->tiling_at(0)->contents_scale()); 902 1.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
897 EXPECT_FLOAT_EQ(1.f * low_res_factor, 903 EXPECT_FLOAT_EQ(
898 active_layer()->tilings()->tiling_at(1)->contents_scale()); 904 1.f * low_res_factor,
905 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
899 906
900 host_impl()->PinchGestureBegin(); 907 host_impl()->PinchGestureBegin();
901 908
902 // Changing the ideal but not creating new tilings. 909 // Changing the ideal but not creating new tilings.
903 scale = 1.5f; 910 scale = 1.5f;
904 page_scale = 1.5f; 911 page_scale = 1.5f;
905 SetContentsScaleOnBothLayers(scale, 1.f, page_scale, 1.f, 0.f, false); 912 SetContentsScaleOnBothLayers(scale, 1.f, page_scale, 1.f, 0.f, false);
906 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings()); 913 EXPECT_FLOAT_EQ(2u, active_layer()->tilings()->num_tilings());
907 EXPECT_FLOAT_EQ(1.f, 914 EXPECT_FLOAT_EQ(
908 active_layer()->tilings()->tiling_at(0)->contents_scale()); 915 1.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
909 EXPECT_FLOAT_EQ(1.f * low_res_factor, 916 EXPECT_FLOAT_EQ(
910 active_layer()->tilings()->tiling_at(1)->contents_scale()); 917 1.f * low_res_factor,
918 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
911 919
912 // The tilings are still our target scale, so they aren't removed. 920 // The tilings are still our target scale, so they aren't removed.
913 used_tilings.clear(); 921 used_tilings.clear();
914 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 922 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
915 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 923 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
916 EXPECT_FLOAT_EQ(1.f, 924 EXPECT_FLOAT_EQ(
917 active_layer()->tilings()->tiling_at(0)->contents_scale()); 925 1.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
918 EXPECT_FLOAT_EQ(1.f * low_res_factor, 926 EXPECT_FLOAT_EQ(
919 active_layer()->tilings()->tiling_at(1)->contents_scale()); 927 1.f * low_res_factor,
928 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
920 929
921 host_impl()->PinchGestureEnd(); 930 host_impl()->PinchGestureEnd();
922 931
923 // Create a 1.2 scale tiling. Now we have 1.0 and 1.2 tilings. Ideal = 1.2. 932 // Create a 1.2 scale tiling. Now we have 1.0 and 1.2 tilings. Ideal = 1.2.
924 scale = 1.2f; 933 scale = 1.2f;
925 page_scale = 1.2f; 934 page_scale = 1.2f;
926 SetContentsScaleOnBothLayers(1.2f, 1.f, page_scale, 1.f, 0.f, false); 935 SetContentsScaleOnBothLayers(1.2f, 1.f, page_scale, 1.f, 0.f, false);
927 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings()); 936 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings());
928 EXPECT_FLOAT_EQ(1.2f, 937 EXPECT_FLOAT_EQ(
929 active_layer()->tilings()->tiling_at(0)->contents_scale()); 938 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
930 EXPECT_FLOAT_EQ(1.f, 939 EXPECT_FLOAT_EQ(
931 active_layer()->tilings()->tiling_at(1)->contents_scale()); 940 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
932 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 941 EXPECT_FLOAT_EQ(
933 active_layer()->tilings()->tiling_at(2)->contents_scale()); 942 1.2f * low_res_factor,
934 EXPECT_FLOAT_EQ(1.f * low_res_factor, 943 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
935 active_layer()->tilings()->tiling_at(3)->contents_scale()); 944 EXPECT_FLOAT_EQ(
945 1.f * low_res_factor,
946 active_layer()->tilings()->tiling_at(3)->contents_scale_key());
936 947
937 // Ensure UpdateTiles won't remove any tilings. 948 // Ensure UpdateTiles won't remove any tilings.
938 active_layer()->MarkAllTilingsUsed(); 949 active_layer()->MarkAllTilingsUsed();
939 950
940 // Mark the non-ideal tilings as used. They won't be removed. 951 // Mark the non-ideal tilings as used. They won't be removed.
941 used_tilings.clear(); 952 used_tilings.clear();
942 used_tilings.push_back(active_layer()->tilings()->tiling_at(1)); 953 used_tilings.push_back(active_layer()->tilings()->tiling_at(1));
943 used_tilings.push_back(active_layer()->tilings()->tiling_at(3)); 954 used_tilings.push_back(active_layer()->tilings()->tiling_at(3));
944 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 955 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
945 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings()); 956 ASSERT_EQ(4u, active_layer()->tilings()->num_tilings());
946 EXPECT_FLOAT_EQ(1.2f, 957 EXPECT_FLOAT_EQ(
947 active_layer()->tilings()->tiling_at(0)->contents_scale()); 958 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
948 EXPECT_FLOAT_EQ(1.f, 959 EXPECT_FLOAT_EQ(
949 active_layer()->tilings()->tiling_at(1)->contents_scale()); 960 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
950 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 961 EXPECT_FLOAT_EQ(
951 active_layer()->tilings()->tiling_at(2)->contents_scale()); 962 1.2f * low_res_factor,
952 EXPECT_FLOAT_EQ(1.f * low_res_factor, 963 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
953 active_layer()->tilings()->tiling_at(3)->contents_scale()); 964 EXPECT_FLOAT_EQ(
965 1.f * low_res_factor,
966 active_layer()->tilings()->tiling_at(3)->contents_scale_key());
954 967
955 // Now move the ideal scale to 0.5. Our target stays 1.2. 968 // Now move the ideal scale to 0.5. Our target stays 1.2.
956 SetContentsScaleOnBothLayers(0.5f, 1.f, page_scale, 1.f, 0.f, false); 969 SetContentsScaleOnBothLayers(0.5f, 1.f, page_scale, 1.f, 0.f, false);
957 970
958 // The high resolution tiling is between target and ideal, so is not 971 // The high resolution tiling is between target and ideal, so is not
959 // removed. The low res tiling for the old ideal=1.0 scale is removed. 972 // removed. The low res tiling for the old ideal=1.0 scale is removed.
960 used_tilings.clear(); 973 used_tilings.clear();
961 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 974 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
962 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 975 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
963 EXPECT_FLOAT_EQ(1.2f, 976 EXPECT_FLOAT_EQ(
964 active_layer()->tilings()->tiling_at(0)->contents_scale()); 977 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
965 EXPECT_FLOAT_EQ(1.f, 978 EXPECT_FLOAT_EQ(
966 active_layer()->tilings()->tiling_at(1)->contents_scale()); 979 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
967 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 980 EXPECT_FLOAT_EQ(
968 active_layer()->tilings()->tiling_at(2)->contents_scale()); 981 1.2f * low_res_factor,
982 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
969 983
970 // Now move the ideal scale to 1.0. Our target stays 1.2. 984 // Now move the ideal scale to 1.0. Our target stays 1.2.
971 SetContentsScaleOnBothLayers(1.f, 1.f, page_scale, 1.f, 0.f, false); 985 SetContentsScaleOnBothLayers(1.f, 1.f, page_scale, 1.f, 0.f, false);
972 986
973 // All the tilings are between are target and the ideal, so they are not 987 // All the tilings are between are target and the ideal, so they are not
974 // removed. 988 // removed.
975 used_tilings.clear(); 989 used_tilings.clear();
976 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 990 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
977 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 991 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
978 EXPECT_FLOAT_EQ(1.2f, 992 EXPECT_FLOAT_EQ(
979 active_layer()->tilings()->tiling_at(0)->contents_scale()); 993 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
980 EXPECT_FLOAT_EQ(1.f, 994 EXPECT_FLOAT_EQ(
981 active_layer()->tilings()->tiling_at(1)->contents_scale()); 995 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
982 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 996 EXPECT_FLOAT_EQ(
983 active_layer()->tilings()->tiling_at(2)->contents_scale()); 997 1.2f * low_res_factor,
998 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
984 999
985 // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. 1000 // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2.
986 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.1f, 1.f, page_scale, 1.f, 1001 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.1f, 1.f, page_scale, 1.f,
987 0.f, false); 1002 0.f, false);
988 1003
989 // Because the pending layer's ideal scale is still 1.0, our tilings fall 1004 // Because the pending layer's ideal scale is still 1.0, our tilings fall
990 // in the range [1.0,1.2] and are kept. 1005 // in the range [1.0,1.2] and are kept.
991 used_tilings.clear(); 1006 used_tilings.clear();
992 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 1007 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
993 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 1008 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
994 EXPECT_FLOAT_EQ(1.2f, 1009 EXPECT_FLOAT_EQ(
995 active_layer()->tilings()->tiling_at(0)->contents_scale()); 1010 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
996 EXPECT_FLOAT_EQ(1.f, 1011 EXPECT_FLOAT_EQ(
997 active_layer()->tilings()->tiling_at(1)->contents_scale()); 1012 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
998 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 1013 EXPECT_FLOAT_EQ(
999 active_layer()->tilings()->tiling_at(2)->contents_scale()); 1014 1.2f * low_res_factor,
1015 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
1000 1016
1001 // Move the ideal scale on the pending layer to 1.1 as well. Our target stays 1017 // Move the ideal scale on the pending layer to 1.1 as well. Our target stays
1002 // 1.2 still. 1018 // 1.2 still.
1003 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 1.1f, 1.f, page_scale, 1.f, 1019 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 1.1f, 1.f, page_scale, 1.f,
1004 0.f, false); 1020 0.f, false);
1005 1021
1006 // Our 1.0 tiling now falls outside the range between our ideal scale and our 1022 // Our 1.0 tiling now falls outside the range between our ideal scale and our
1007 // target raster scale. But it is in our used tilings set, so nothing is 1023 // target raster scale. But it is in our used tilings set, so nothing is
1008 // deleted. 1024 // deleted.
1009 used_tilings.clear(); 1025 used_tilings.clear();
1010 used_tilings.push_back(active_layer()->tilings()->tiling_at(1)); 1026 used_tilings.push_back(active_layer()->tilings()->tiling_at(1));
1011 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 1027 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
1012 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 1028 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
1013 EXPECT_FLOAT_EQ(1.2f, 1029 EXPECT_FLOAT_EQ(
1014 active_layer()->tilings()->tiling_at(0)->contents_scale()); 1030 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
1015 EXPECT_FLOAT_EQ(1.f, 1031 EXPECT_FLOAT_EQ(
1016 active_layer()->tilings()->tiling_at(1)->contents_scale()); 1032 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
1017 EXPECT_FLOAT_EQ(1.2f * low_res_factor, 1033 EXPECT_FLOAT_EQ(
1018 active_layer()->tilings()->tiling_at(2)->contents_scale()); 1034 1.2f * low_res_factor,
1035 active_layer()->tilings()->tiling_at(2)->contents_scale_key());
1019 1036
1020 // If we remove it from our used tilings set, it is outside the range to keep 1037 // If we remove it from our used tilings set, it is outside the range to keep
1021 // so it is deleted. 1038 // so it is deleted.
1022 used_tilings.clear(); 1039 used_tilings.clear();
1023 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 1040 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
1024 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 1041 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
1025 EXPECT_FLOAT_EQ(1.2f, 1042 EXPECT_FLOAT_EQ(
1026 active_layer()->tilings()->tiling_at(0)->contents_scale()); 1043 1.2f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
1027 EXPECT_FLOAT_EQ(1.2 * low_res_factor, 1044 EXPECT_FLOAT_EQ(
1028 active_layer()->tilings()->tiling_at(1)->contents_scale()); 1045 1.2 * low_res_factor,
1046 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
1029 } 1047 }
1030 1048
1031 TEST_F(PictureLayerImplTest, DontAddLowResDuringAnimation) { 1049 TEST_F(PictureLayerImplTest, DontAddLowResDuringAnimation) {
1032 // Make sure this layer covers multiple tiles, since otherwise low 1050 // Make sure this layer covers multiple tiles, since otherwise low
1033 // res won't get created because it is too small. 1051 // res won't get created because it is too small.
1034 gfx::Size tile_size(host_impl()->settings().default_tile_size); 1052 gfx::Size tile_size(host_impl()->settings().default_tile_size);
1035 // Avoid max untiled layer size heuristics via fixed tile size. 1053 // Avoid max untiled layer size heuristics via fixed tile size.
1036 gfx::Size layer_bounds(tile_size.width() + 1, tile_size.height() + 1); 1054 gfx::Size layer_bounds(tile_size.width() + 1, tile_size.height() + 1);
1037 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 1055 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
1038 1056
1039 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 1057 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
1040 float contents_scale = 1.f; 1058 float contents_scale = 1.f;
1041 float device_scale = 1.f; 1059 float device_scale = 1.f;
1042 float page_scale = 1.f; 1060 float page_scale = 1.f;
1043 float maximum_animation_scale = 1.f; 1061 float maximum_animation_scale = 1.f;
1044 float starting_animation_scale = 0.f; 1062 float starting_animation_scale = 0.f;
1045 bool animating_transform = true; 1063 bool animating_transform = true;
1046 1064
1047 ResetTilingsAndRasterScales(); 1065 ResetTilingsAndRasterScales();
1048 1066
1049 // Animating, so don't create low res even if there isn't one already. 1067 // Animating, so don't create low res even if there isn't one already.
1050 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1068 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1051 maximum_animation_scale, 1069 maximum_animation_scale,
1052 starting_animation_scale, animating_transform); 1070 starting_animation_scale, animating_transform);
1053 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 1071 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 1.f);
1054 EXPECT_BOTH_EQ(num_tilings(), 1u); 1072 EXPECT_BOTH_EQ(num_tilings(), 1u);
1055 1073
1056 // Stop animating, low res gets created. 1074 // Stop animating, low res gets created.
1057 animating_transform = false; 1075 animating_transform = false;
1058 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1076 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1059 maximum_animation_scale, 1077 maximum_animation_scale,
1060 starting_animation_scale, animating_transform); 1078 starting_animation_scale, animating_transform);
1061 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 1079 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 1.f);
1062 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale(), low_res_factor); 1080 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale_key(),
1081 low_res_factor);
1063 EXPECT_EQ(active_layer()->num_tilings(), 2u); 1082 EXPECT_EQ(active_layer()->num_tilings(), 2u);
1064 EXPECT_EQ(pending_layer()->num_tilings(), 1u); 1083 EXPECT_EQ(pending_layer()->num_tilings(), 1u);
1065 1084
1066 // Ensure UpdateTiles won't remove any tilings. 1085 // Ensure UpdateTiles won't remove any tilings.
1067 active_layer()->MarkAllTilingsUsed(); 1086 active_layer()->MarkAllTilingsUsed();
1068 1087
1069 // Page scale animation, new high res, but no low res. We still have 1088 // Page scale animation, new high res, but no low res. We still have
1070 // a tiling at the previous scale, it's just not marked as low res on the 1089 // a tiling at the previous scale, it's just not marked as low res on the
1071 // active layer. The pending layer drops non-ideal tilings. 1090 // active layer. The pending layer drops non-ideal tilings.
1072 contents_scale = 2.f; 1091 contents_scale = 2.f;
1073 page_scale = 2.f; 1092 page_scale = 2.f;
1074 maximum_animation_scale = 2.f; 1093 maximum_animation_scale = 2.f;
1075 animating_transform = true; 1094 animating_transform = true;
1076 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1095 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1077 maximum_animation_scale, 1096 maximum_animation_scale,
1078 starting_animation_scale, animating_transform); 1097 starting_animation_scale, animating_transform);
1079 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 1098 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 2.f);
1080 EXPECT_FALSE(active_layer()->LowResTiling()); 1099 EXPECT_FALSE(active_layer()->LowResTiling());
1081 EXPECT_FALSE(pending_layer()->LowResTiling()); 1100 EXPECT_FALSE(pending_layer()->LowResTiling());
1082 EXPECT_EQ(3u, active_layer()->num_tilings()); 1101 EXPECT_EQ(3u, active_layer()->num_tilings());
1083 EXPECT_EQ(1u, pending_layer()->num_tilings()); 1102 EXPECT_EQ(1u, pending_layer()->num_tilings());
1084 1103
1085 // Stop animating, new low res gets created for final page scale. 1104 // Stop animating, new low res gets created for final page scale.
1086 animating_transform = false; 1105 animating_transform = false;
1087 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1106 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1088 maximum_animation_scale, 1107 maximum_animation_scale,
1089 starting_animation_scale, animating_transform); 1108 starting_animation_scale, animating_transform);
1090 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 1109 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 2.f);
1091 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale(), 1110 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale_key(),
1092 2.f * low_res_factor); 1111 2.f * low_res_factor);
1093 EXPECT_EQ(4u, active_layer()->num_tilings()); 1112 EXPECT_EQ(4u, active_layer()->num_tilings());
1094 EXPECT_EQ(1u, pending_layer()->num_tilings()); 1113 EXPECT_EQ(1u, pending_layer()->num_tilings());
1095 } 1114 }
1096 1115
1097 TEST_F(PictureLayerImplTest, DontAddLowResForSmallLayers) { 1116 TEST_F(PictureLayerImplTest, DontAddLowResForSmallLayers) {
1098 gfx::Size layer_bounds(host_impl()->settings().default_tile_size); 1117 gfx::Size layer_bounds(host_impl()->settings().default_tile_size);
1099 1118
1100 scoped_refptr<FakeRasterSource> pending_raster_source = 1119 scoped_refptr<FakeRasterSource> pending_raster_source =
1101 FakeRasterSource::CreateFilled(layer_bounds); 1120 FakeRasterSource::CreateFilled(layer_bounds);
1102 scoped_refptr<FakeRasterSource> active_raster_source = 1121 scoped_refptr<FakeRasterSource> active_raster_source =
1103 FakeRasterSource::CreateFilled(layer_bounds); 1122 FakeRasterSource::CreateFilled(layer_bounds);
1104 1123
1105 SetupTrees(pending_raster_source, active_raster_source); 1124 SetupTrees(pending_raster_source, active_raster_source);
1106 1125
1107 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 1126 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
1108 float device_scale = 1.f; 1127 float device_scale = 1.f;
1109 float page_scale = 1.f; 1128 float page_scale = 1.f;
1110 float maximum_animation_scale = 1.f; 1129 float maximum_animation_scale = 1.f;
1111 float starting_animation_scale = 0.f; 1130 float starting_animation_scale = 0.f;
1112 bool animating_transform = false; 1131 bool animating_transform = false;
1113 1132
1114 // Contents exactly fit on one tile at scale 1, no low res. 1133 // Contents exactly fit on one tile at scale 1, no low res.
1115 float contents_scale = 1.f; 1134 float contents_scale = 1.f;
1116 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1135 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1117 maximum_animation_scale, 1136 maximum_animation_scale,
1118 starting_animation_scale, animating_transform); 1137 starting_animation_scale, animating_transform);
1119 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), contents_scale); 1138 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), contents_scale);
1120 EXPECT_BOTH_EQ(num_tilings(), 1u); 1139 EXPECT_BOTH_EQ(num_tilings(), 1u);
1121 1140
1122 ResetTilingsAndRasterScales(); 1141 ResetTilingsAndRasterScales();
1123 1142
1124 // Contents that are smaller than one tile, no low res. 1143 // Contents that are smaller than one tile, no low res.
1125 contents_scale = 0.123f; 1144 contents_scale = 0.123f;
1126 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1145 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1127 maximum_animation_scale, 1146 maximum_animation_scale,
1128 starting_animation_scale, animating_transform); 1147 starting_animation_scale, animating_transform);
1129 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), contents_scale); 1148 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), contents_scale);
1130 EXPECT_BOTH_EQ(num_tilings(), 1u); 1149 EXPECT_BOTH_EQ(num_tilings(), 1u);
1131 1150
1132 // TODO(danakj): Remove these when raster scale doesn't get fixed? 1151 // TODO(danakj): Remove these when raster scale doesn't get fixed?
1133 ResetTilingsAndRasterScales(); 1152 ResetTilingsAndRasterScales();
1134 1153
1135 // Any content bounds that would create more than one tile will 1154 // Any content bounds that would create more than one tile will
1136 // generate a low res tiling. 1155 // generate a low res tiling.
1137 contents_scale = 2.5f; 1156 contents_scale = 2.5f;
1138 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 1157 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
1139 maximum_animation_scale, 1158 maximum_animation_scale,
1140 starting_animation_scale, animating_transform); 1159 starting_animation_scale, animating_transform);
1141 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), contents_scale); 1160 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), contents_scale);
1142 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale(), 1161 EXPECT_EQ(active_layer()->LowResTiling()->contents_scale_key(),
1143 contents_scale * low_res_factor); 1162 contents_scale * low_res_factor);
1144 EXPECT_FALSE(pending_layer()->LowResTiling()); 1163 EXPECT_FALSE(pending_layer()->LowResTiling());
1145 EXPECT_EQ(active_layer()->num_tilings(), 2u); 1164 EXPECT_EQ(active_layer()->num_tilings(), 2u);
1146 EXPECT_EQ(pending_layer()->num_tilings(), 1u); 1165 EXPECT_EQ(pending_layer()->num_tilings(), 1u);
1147 1166
1148 // Mask layers dont create low res since they always fit on one tile. 1167 // Mask layers dont create low res since they always fit on one tile.
1149 std::unique_ptr<FakePictureLayerImpl> mask = 1168 std::unique_ptr<FakePictureLayerImpl> mask =
1150 FakePictureLayerImpl::CreateSingleTextureMaskWithRasterSource( 1169 FakePictureLayerImpl::CreateSingleTextureMaskWithRasterSource(
1151 host_impl()->pending_tree(), 3, pending_raster_source); 1170 host_impl()->pending_tree(), 3, pending_raster_source);
1152 mask->SetBounds(layer_bounds); 1171 mask->SetBounds(layer_bounds);
1153 mask->SetDrawsContent(true); 1172 mask->SetDrawsContent(true);
1154 pending_layer()->test_properties()->SetMaskLayer(std::move(mask)); 1173 pending_layer()->test_properties()->SetMaskLayer(std::move(mask));
1155 pending_layer()->test_properties()->force_render_surface = true; 1174 pending_layer()->test_properties()->force_render_surface = true;
1156 RebuildPropertyTreesOnPendingTree(); 1175 RebuildPropertyTreesOnPendingTree();
1157 host_impl()->pending_tree()->UpdateDrawProperties(false); 1176 host_impl()->pending_tree()->UpdateDrawProperties(false);
1158 1177
1159 FakePictureLayerImpl* mask_raw = static_cast<FakePictureLayerImpl*>( 1178 FakePictureLayerImpl* mask_raw = static_cast<FakePictureLayerImpl*>(
1160 pending_layer()->test_properties()->mask_layer); 1179 pending_layer()->test_properties()->mask_layer);
1161 // We did an UpdateDrawProperties above, which will set a contents scale on 1180 // We did an UpdateDrawProperties above, which will set a contents scale on
1162 // the mask layer, so allow us to reset the contents scale. 1181 // the mask layer, so allow us to reset the contents scale.
1163 mask_raw->ReleaseTileResources(); 1182 mask_raw->ReleaseTileResources();
1164 mask_raw->RecreateTileResources(); 1183 mask_raw->RecreateTileResources();
1165 1184
1166 SetupDrawPropertiesAndUpdateTiles( 1185 SetupDrawPropertiesAndUpdateTiles(
1167 mask_raw, contents_scale, device_scale, page_scale, 1186 mask_raw, contents_scale, device_scale, page_scale,
1168 maximum_animation_scale, starting_animation_scale, animating_transform); 1187 maximum_animation_scale, starting_animation_scale, animating_transform);
1169 EXPECT_EQ(mask_raw->HighResTiling()->contents_scale(), contents_scale); 1188 EXPECT_EQ(mask_raw->HighResTiling()->contents_scale_key(), contents_scale);
1170 EXPECT_EQ(mask_raw->num_tilings(), 1u); 1189 EXPECT_EQ(mask_raw->num_tilings(), 1u);
1171 } 1190 }
1172 1191
1173 TEST_F(PictureLayerImplTest, HugeMasksGetScaledDown) { 1192 TEST_F(PictureLayerImplTest, HugeMasksGetScaledDown) {
1174 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1193 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1175 1194
1176 gfx::Size layer_bounds(1000, 1000); 1195 gfx::Size layer_bounds(1000, 1000);
1177 1196
1178 scoped_refptr<FakeRasterSource> valid_raster_source = 1197 scoped_refptr<FakeRasterSource> valid_raster_source =
1179 FakeRasterSource::CreateFilled(layer_bounds); 1198 FakeRasterSource::CreateFilled(layer_bounds);
1180 SetupPendingTree(valid_raster_source); 1199 SetupPendingTree(valid_raster_source);
1181 1200
1182 std::unique_ptr<FakePictureLayerImpl> mask_ptr = 1201 std::unique_ptr<FakePictureLayerImpl> mask_ptr =
1183 FakePictureLayerImpl::CreateSingleTextureMaskWithRasterSource( 1202 FakePictureLayerImpl::CreateSingleTextureMaskWithRasterSource(
1184 host_impl()->pending_tree(), 3, valid_raster_source); 1203 host_impl()->pending_tree(), 3, valid_raster_source);
1185 mask_ptr->SetBounds(layer_bounds); 1204 mask_ptr->SetBounds(layer_bounds);
1186 mask_ptr->SetDrawsContent(true); 1205 mask_ptr->SetDrawsContent(true);
1187 pending_layer()->test_properties()->SetMaskLayer(std::move(mask_ptr)); 1206 pending_layer()->test_properties()->SetMaskLayer(std::move(mask_ptr));
1188 pending_layer()->test_properties()->force_render_surface = true; 1207 pending_layer()->test_properties()->force_render_surface = true;
1189 1208
1190 RebuildPropertyTreesOnPendingTree(); 1209 RebuildPropertyTreesOnPendingTree();
1191 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1210 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1192 bool update_lcd_text = false; 1211 bool update_lcd_text = false;
1193 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 1212 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
1194 1213
1195 FakePictureLayerImpl* pending_mask = static_cast<FakePictureLayerImpl*>( 1214 FakePictureLayerImpl* pending_mask = static_cast<FakePictureLayerImpl*>(
1196 pending_layer()->test_properties()->mask_layer); 1215 pending_layer()->test_properties()->mask_layer);
1197 1216
1198 EXPECT_EQ(1.f, pending_mask->HighResTiling()->contents_scale()); 1217 EXPECT_EQ(1.f, pending_mask->HighResTiling()->contents_scale_key());
1199 EXPECT_EQ(1u, pending_mask->num_tilings()); 1218 EXPECT_EQ(1u, pending_mask->num_tilings());
1200 1219
1201 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1220 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1202 pending_mask->HighResTiling()->AllTilesForTesting()); 1221 pending_mask->HighResTiling()->AllTilesForTesting());
1203 1222
1204 ActivateTree(); 1223 ActivateTree();
1205 1224
1206 FakePictureLayerImpl* active_mask = static_cast<FakePictureLayerImpl*>( 1225 FakePictureLayerImpl* active_mask = static_cast<FakePictureLayerImpl*>(
1207 host_impl()->active_tree()->LayerById(pending_mask->id())); 1226 host_impl()->active_tree()->LayerById(pending_mask->id()));
1208 1227
(...skipping 25 matching lines...) Expand all
1234 FakeRasterSource::CreateFilled(huge_bounds); 1253 FakeRasterSource::CreateFilled(huge_bounds);
1235 1254
1236 SetupPendingTree(huge_raster_source); 1255 SetupPendingTree(huge_raster_source);
1237 pending_mask->SetBounds(huge_bounds); 1256 pending_mask->SetBounds(huge_bounds);
1238 pending_mask->SetRasterSourceOnPending(huge_raster_source, Region()); 1257 pending_mask->SetRasterSourceOnPending(huge_raster_source, Region());
1239 1258
1240 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1259 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1241 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 1260 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
1242 1261
1243 // The mask tiling gets scaled down. 1262 // The mask tiling gets scaled down.
1244 EXPECT_LT(pending_mask->HighResTiling()->contents_scale(), 1.f); 1263 EXPECT_LT(pending_mask->HighResTiling()->contents_scale_key(), 1.f);
1245 EXPECT_EQ(1u, pending_mask->num_tilings()); 1264 EXPECT_EQ(1u, pending_mask->num_tilings());
1246 1265
1247 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1266 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1248 pending_mask->HighResTiling()->AllTilesForTesting()); 1267 pending_mask->HighResTiling()->AllTilesForTesting());
1249 1268
1250 ActivateTree(); 1269 ActivateTree();
1251 1270
1252 // Mask layers have a tiling with a single tile in it. 1271 // Mask layers have a tiling with a single tile in it.
1253 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); 1272 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size());
1254 // The mask resource exists. 1273 // The mask resource exists.
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 1337
1319 RebuildPropertyTreesOnPendingTree(); 1338 RebuildPropertyTreesOnPendingTree();
1320 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1339 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1321 bool update_lcd_text = false; 1340 bool update_lcd_text = false;
1322 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 1341 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
1323 1342
1324 FakePictureLayerImpl* pending_mask = static_cast<FakePictureLayerImpl*>( 1343 FakePictureLayerImpl* pending_mask = static_cast<FakePictureLayerImpl*>(
1325 pending_layer()->test_properties()->mask_layer); 1344 pending_layer()->test_properties()->mask_layer);
1326 1345
1327 // Masks are scaled, and do not have a low res tiling. 1346 // Masks are scaled, and do not have a low res tiling.
1328 EXPECT_EQ(1.3f, pending_mask->HighResTiling()->contents_scale()); 1347 EXPECT_EQ(1.3f, pending_mask->HighResTiling()->contents_scale_key());
1329 EXPECT_EQ(1u, pending_mask->num_tilings()); 1348 EXPECT_EQ(1u, pending_mask->num_tilings());
1330 1349
1331 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1350 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1332 pending_mask->HighResTiling()->AllTilesForTesting()); 1351 pending_mask->HighResTiling()->AllTilesForTesting());
1333 1352
1334 ActivateTree(); 1353 ActivateTree();
1335 1354
1336 FakePictureLayerImpl* active_mask = static_cast<FakePictureLayerImpl*>( 1355 FakePictureLayerImpl* active_mask = static_cast<FakePictureLayerImpl*>(
1337 host_impl()->active_tree()->LayerById(pending_mask->id())); 1356 host_impl()->active_tree()->LayerById(pending_mask->id()));
1338 1357
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1672 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1654 1673
1655 gfx::Size tile_size(100, 100); 1674 gfx::Size tile_size(100, 100);
1656 gfx::Size layer_bounds(400, 400); 1675 gfx::Size layer_bounds(400, 400);
1657 gfx::Rect external_viewport_for_tile_priority(400, 200); 1676 gfx::Rect external_viewport_for_tile_priority(400, 200);
1658 gfx::Rect visible_layer_rect(200, 400); 1677 gfx::Rect visible_layer_rect(200, 400);
1659 1678
1660 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 1679 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
1661 1680
1662 ASSERT_EQ(1u, pending_layer()->num_tilings()); 1681 ASSERT_EQ(1u, pending_layer()->num_tilings());
1663 ASSERT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale()); 1682 ASSERT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale_key());
1664 1683
1665 // Set external viewport for tile priority. 1684 // Set external viewport for tile priority.
1666 gfx::Transform transform; 1685 gfx::Transform transform;
1667 gfx::Transform transform_for_tile_priority; 1686 gfx::Transform transform_for_tile_priority;
1668 host_impl()->SetExternalTilePriorityConstraints( 1687 host_impl()->SetExternalTilePriorityConstraints(
1669 external_viewport_for_tile_priority, transform_for_tile_priority); 1688 external_viewport_for_tile_priority, transform_for_tile_priority);
1670 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1689 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1671 bool update_lcd_text = false; 1690 bool update_lcd_text = false;
1672 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 1691 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
1673 1692
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1851 gfx::Size viewport_size(400, 400); 1870 gfx::Size viewport_size(400, 400);
1852 1871
1853 host_impl()->SetViewportSize(viewport_size); 1872 host_impl()->SetViewportSize(viewport_size);
1854 SetInitialDeviceScaleFactor(2.f); 1873 SetInitialDeviceScaleFactor(2.f);
1855 1874
1856 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 1875 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
1857 active_layer()->SetHasWillChangeTransformHint(true); 1876 active_layer()->SetHasWillChangeTransformHint(true);
1858 1877
1859 // One ideal tile exists, this will get used when drawing. 1878 // One ideal tile exists, this will get used when drawing.
1860 std::vector<Tile*> ideal_tiles; 1879 std::vector<Tile*> ideal_tiles;
1861 EXPECT_EQ(2.f, active_layer()->HighResTiling()->contents_scale()); 1880 EXPECT_EQ(2.f, active_layer()->HighResTiling()->contents_scale_key());
1862 ideal_tiles.push_back(active_layer()->HighResTiling()->TileAt(0, 0)); 1881 ideal_tiles.push_back(active_layer()->HighResTiling()->TileAt(0, 0));
1863 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1882 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1864 ideal_tiles); 1883 ideal_tiles);
1865 1884
1866 // Due to layer scale throttling, the raster contents scale is changed to 1, 1885 // Due to layer scale throttling, the raster contents scale is changed to 1,
1867 // while the ideal is still 2. 1886 // while the ideal is still 2.
1868 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.f, 1.f, 1.f, 1.f, 0.f, 1887 SetupDrawPropertiesAndUpdateTiles(active_layer(), 1.f, 1.f, 1.f, 1.f, 0.f,
1869 false); 1888 false);
1870 SetupDrawPropertiesAndUpdateTiles(active_layer(), 2.f, 1.f, 1.f, 1.f, 0.f, 1889 SetupDrawPropertiesAndUpdateTiles(active_layer(), 2.f, 1.f, 1.f, 1.f, 0.f,
1871 false); 1890 false);
1872 1891
1873 EXPECT_EQ(1.f, active_layer()->HighResTiling()->contents_scale()); 1892 EXPECT_EQ(1.f, active_layer()->HighResTiling()->contents_scale_key());
1874 EXPECT_EQ(1.f, active_layer()->raster_contents_scale()); 1893 EXPECT_EQ(1.f, active_layer()->raster_contents_scale());
1875 EXPECT_EQ(2.f, active_layer()->ideal_contents_scale()); 1894 EXPECT_EQ(2.f, active_layer()->ideal_contents_scale());
1876 1895
1877 // Both tilings still exist. 1896 // Both tilings still exist.
1878 EXPECT_EQ(2.f, active_layer()->tilings()->tiling_at(0)->contents_scale()); 1897 EXPECT_EQ(2.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
1879 EXPECT_EQ(1.f, active_layer()->tilings()->tiling_at(1)->contents_scale()); 1898 EXPECT_EQ(1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
1880 1899
1881 // All high res tiles have resources. 1900 // All high res tiles have resources.
1882 std::vector<Tile*> high_tiles = 1901 std::vector<Tile*> high_tiles =
1883 active_layer()->HighResTiling()->AllTilesForTesting(); 1902 active_layer()->HighResTiling()->AllTilesForTesting();
1884 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 1903 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
1885 high_tiles); 1904 high_tiles);
1886 1905
1887 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); 1906 std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
1888 AppendQuadsData data; 1907 AppendQuadsData data;
1889 active_layer()->WillDraw(DRAW_MODE_SOFTWARE, nullptr); 1908 active_layer()->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
2443 2462
2444 // No tilings should be pushed to active layer. 2463 // No tilings should be pushed to active layer.
2445 pending_layer()->PushPropertiesTo(active_layer()); 2464 pending_layer()->PushPropertiesTo(active_layer());
2446 EXPECT_EQ(0u, active_layer()->num_tilings()); 2465 EXPECT_EQ(0u, active_layer()->num_tilings());
2447 } 2466 }
2448 2467
2449 TEST_F(PictureLayerImplTest, FirstTilingDuringPinch) { 2468 TEST_F(PictureLayerImplTest, FirstTilingDuringPinch) {
2450 SetupDefaultTrees(gfx::Size(10, 10)); 2469 SetupDefaultTrees(gfx::Size(10, 10));
2451 2470
2452 // We start with a tiling at scale 1. 2471 // We start with a tiling at scale 1.
2453 EXPECT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale()); 2472 EXPECT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale_key());
2454 2473
2455 // When we page scale up by 2.3, we get a new tiling that is a power of 2, in 2474 // When we page scale up by 2.3, we get a new tiling that is a power of 2, in
2456 // this case 4. 2475 // this case 4.
2457 host_impl()->PinchGestureBegin(); 2476 host_impl()->PinchGestureBegin();
2458 float high_res_scale = 2.3f; 2477 float high_res_scale = 2.3f;
2459 SetContentsScaleOnBothLayers(high_res_scale, 1.f, high_res_scale, 1.f, 0.f, 2478 SetContentsScaleOnBothLayers(high_res_scale, 1.f, high_res_scale, 1.f, 0.f,
2460 false); 2479 false);
2461 EXPECT_EQ(4.f, pending_layer()->HighResTiling()->contents_scale()); 2480 EXPECT_EQ(4.f, pending_layer()->HighResTiling()->contents_scale_key());
2462 } 2481 }
2463 2482
2464 TEST_F(PictureLayerImplTest, PinchingTooSmall) { 2483 TEST_F(PictureLayerImplTest, PinchingTooSmall) {
2465 SetupDefaultTrees(gfx::Size(10, 10)); 2484 SetupDefaultTrees(gfx::Size(10, 10));
2466 2485
2467 // We start with a tiling at scale 1. 2486 // We start with a tiling at scale 1.
2468 EXPECT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale()); 2487 EXPECT_EQ(1.f, pending_layer()->HighResTiling()->contents_scale_key());
2469 2488
2470 host_impl()->PinchGestureBegin(); 2489 host_impl()->PinchGestureBegin();
2471 float high_res_scale = 0.0001f; 2490 float high_res_scale = 0.0001f;
2472 EXPECT_LT(high_res_scale, pending_layer()->MinimumContentsScale()); 2491 EXPECT_LT(high_res_scale, pending_layer()->MinimumContentsScale());
2473 2492
2474 SetContentsScaleOnBothLayers(high_res_scale, 1.f, high_res_scale, 1.f, 0.f, 2493 SetContentsScaleOnBothLayers(high_res_scale, 1.f, high_res_scale, 1.f, 0.f,
2475 false); 2494 false);
2476 EXPECT_FLOAT_EQ(pending_layer()->MinimumContentsScale(), 2495 EXPECT_FLOAT_EQ(pending_layer()->MinimumContentsScale(),
2477 pending_layer()->HighResTiling()->contents_scale()); 2496 pending_layer()->HighResTiling()->contents_scale_key());
2478 } 2497 }
2479 2498
2480 TEST_F(PictureLayerImplTest, PinchingTooSmallWithContentsScale) { 2499 TEST_F(PictureLayerImplTest, PinchingTooSmallWithContentsScale) {
2481 SetupDefaultTrees(gfx::Size(10, 10)); 2500 SetupDefaultTrees(gfx::Size(10, 10));
2482 2501
2483 ResetTilingsAndRasterScales(); 2502 ResetTilingsAndRasterScales();
2484 2503
2485 float contents_scale = 0.15f; 2504 float contents_scale = 0.15f;
2486 SetContentsScaleOnBothLayers(contents_scale, 1.f, 1.f, 1.f, 0.f, false); 2505 SetContentsScaleOnBothLayers(contents_scale, 1.f, 1.f, 1.f, 0.f, false);
2487 2506
2488 ASSERT_GE(pending_layer()->num_tilings(), 0u); 2507 ASSERT_GE(pending_layer()->num_tilings(), 0u);
2489 EXPECT_FLOAT_EQ(contents_scale, 2508 EXPECT_FLOAT_EQ(contents_scale,
2490 pending_layer()->HighResTiling()->contents_scale()); 2509 pending_layer()->HighResTiling()->contents_scale_key());
2491 2510
2492 host_impl()->PinchGestureBegin(); 2511 host_impl()->PinchGestureBegin();
2493 2512
2494 float page_scale = 0.0001f; 2513 float page_scale = 0.0001f;
2495 EXPECT_LT(page_scale * contents_scale, 2514 EXPECT_LT(page_scale * contents_scale,
2496 pending_layer()->MinimumContentsScale()); 2515 pending_layer()->MinimumContentsScale());
2497 2516
2498 SetContentsScaleOnBothLayers(contents_scale * page_scale, 1.f, page_scale, 2517 SetContentsScaleOnBothLayers(contents_scale * page_scale, 1.f, page_scale,
2499 1.f, 0.f, false); 2518 1.f, 0.f, false);
2500 ASSERT_GE(pending_layer()->num_tilings(), 0u); 2519 ASSERT_GE(pending_layer()->num_tilings(), 0u);
2501 EXPECT_FLOAT_EQ(pending_layer()->MinimumContentsScale(), 2520 EXPECT_FLOAT_EQ(pending_layer()->MinimumContentsScale(),
2502 pending_layer()->HighResTiling()->contents_scale()); 2521 pending_layer()->HighResTiling()->contents_scale_key());
2503 } 2522 }
2504 2523
2505 TEST_F(PictureLayerImplTest, ConsiderAnimationStartScaleForRasterScale) { 2524 TEST_F(PictureLayerImplTest, ConsiderAnimationStartScaleForRasterScale) {
2506 gfx::Size viewport_size(1000, 1000); 2525 gfx::Size viewport_size(1000, 1000);
2507 host_impl()->SetViewportSize(viewport_size); 2526 host_impl()->SetViewportSize(viewport_size);
2508 2527
2509 gfx::Size layer_bounds(100, 100); 2528 gfx::Size layer_bounds(100, 100);
2510 SetupDefaultTrees(layer_bounds); 2529 SetupDefaultTrees(layer_bounds);
2511 2530
2512 float contents_scale = 2.f; 2531 float contents_scale = 2.f;
2513 float device_scale = 1.f; 2532 float device_scale = 1.f;
2514 float page_scale = 1.f; 2533 float page_scale = 1.f;
2515 float maximum_animation_scale = 3.f; 2534 float maximum_animation_scale = 3.f;
2516 float starting_animation_scale = 1.f; 2535 float starting_animation_scale = 1.f;
2517 bool animating_transform = true; 2536 bool animating_transform = true;
2518 2537
2519 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 2538 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 1.f);
2520 2539
2521 // Maximum animation scale is greater than starting animation scale 2540 // Maximum animation scale is greater than starting animation scale
2522 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2541 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2523 maximum_animation_scale, 2542 maximum_animation_scale,
2524 starting_animation_scale, animating_transform); 2543 starting_animation_scale, animating_transform);
2525 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 2544 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
2526 2545
2527 animating_transform = false; 2546 animating_transform = false;
2528 2547
2529 // Once we stop animating, a new high-res tiling should be created. 2548 // Once we stop animating, a new high-res tiling should be created.
2530 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2549 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2531 maximum_animation_scale, 2550 maximum_animation_scale,
2532 starting_animation_scale, animating_transform); 2551 starting_animation_scale, animating_transform);
2533 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 2552 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 2.f);
2534 2553
2535 // Starting animation scale greater than maximum animation scale 2554 // Starting animation scale greater than maximum animation scale
2536 // Bounds at starting scale within the viewport 2555 // Bounds at starting scale within the viewport
2537 animating_transform = true; 2556 animating_transform = true;
2538 starting_animation_scale = 5.f; 2557 starting_animation_scale = 5.f;
2539 2558
2540 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2559 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2541 maximum_animation_scale, 2560 maximum_animation_scale,
2542 starting_animation_scale, animating_transform); 2561 starting_animation_scale, animating_transform);
2543 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 5.f); 2562 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 5.f);
2544 2563
2545 // Once we stop animating, a new high-res tiling should be created. 2564 // Once we stop animating, a new high-res tiling should be created.
2546 animating_transform = false; 2565 animating_transform = false;
2547 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2566 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2548 maximum_animation_scale, 2567 maximum_animation_scale,
2549 starting_animation_scale, animating_transform); 2568 starting_animation_scale, animating_transform);
2550 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 2569 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 2.f);
2551 2570
2552 // Starting Animation scale greater than maximum animation scale 2571 // Starting Animation scale greater than maximum animation scale
2553 // Bounds at starting scale outisde the viewport 2572 // Bounds at starting scale outisde the viewport
2554 animating_transform = true; 2573 animating_transform = true;
2555 starting_animation_scale = 11.f; 2574 starting_animation_scale = 11.f;
2556 2575
2557 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2576 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2558 maximum_animation_scale, 2577 maximum_animation_scale,
2559 starting_animation_scale, animating_transform); 2578 starting_animation_scale, animating_transform);
2560 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 2579 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
2561 } 2580 }
2562 2581
2563 TEST_F(PictureLayerImplTest, HighResTilingDuringAnimation) { 2582 TEST_F(PictureLayerImplTest, HighResTilingDuringAnimation) {
2564 gfx::Size viewport_size(1000, 1000); 2583 gfx::Size viewport_size(1000, 1000);
2565 host_impl()->SetViewportSize(viewport_size); 2584 host_impl()->SetViewportSize(viewport_size);
2566 2585
2567 gfx::Size layer_bounds(100, 100); 2586 gfx::Size layer_bounds(100, 100);
2568 SetupDefaultTrees(layer_bounds); 2587 SetupDefaultTrees(layer_bounds);
2569 2588
2570 float contents_scale = 1.f; 2589 float contents_scale = 1.f;
2571 float device_scale = 1.f; 2590 float device_scale = 1.f;
2572 float page_scale = 1.f; 2591 float page_scale = 1.f;
2573 float maximum_animation_scale = 1.f; 2592 float maximum_animation_scale = 1.f;
2574 float starting_animation_scale = 0.f; 2593 float starting_animation_scale = 0.f;
2575 bool animating_transform = false; 2594 bool animating_transform = false;
2576 2595
2577 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 1.f); 2596 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 1.f);
2578 2597
2579 // Starting an animation should cause tiling resolution to get set to the 2598 // Starting an animation should cause tiling resolution to get set to the
2580 // maximum animation scale factor. 2599 // maximum animation scale factor.
2581 animating_transform = true; 2600 animating_transform = true;
2582 maximum_animation_scale = 3.f; 2601 maximum_animation_scale = 3.f;
2583 contents_scale = 2.f; 2602 contents_scale = 2.f;
2584 2603
2585 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2604 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2586 maximum_animation_scale, 2605 maximum_animation_scale,
2587 starting_animation_scale, animating_transform); 2606 starting_animation_scale, animating_transform);
2588 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 2607 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
2589 2608
2590 // Further changes to scale during the animation should not cause a new 2609 // Further changes to scale during the animation should not cause a new
2591 // high-res tiling to get created. 2610 // high-res tiling to get created.
2592 contents_scale = 4.f; 2611 contents_scale = 4.f;
2593 maximum_animation_scale = 5.f; 2612 maximum_animation_scale = 5.f;
2594 2613
2595 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2614 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2596 maximum_animation_scale, 2615 maximum_animation_scale,
2597 starting_animation_scale, animating_transform); 2616 starting_animation_scale, animating_transform);
2598 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 2617 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
2599 2618
2600 // Once we stop animating, a new high-res tiling should be created. 2619 // Once we stop animating, a new high-res tiling should be created.
2601 animating_transform = false; 2620 animating_transform = false;
2602 2621
2603 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2622 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2604 maximum_animation_scale, 2623 maximum_animation_scale,
2605 starting_animation_scale, animating_transform); 2624 starting_animation_scale, animating_transform);
2606 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f); 2625 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 4.f);
2607 2626
2608 // When animating with an unknown maximum animation scale factor, a new 2627 // When animating with an unknown maximum animation scale factor, a new
2609 // high-res tiling should be created at a source scale of 1. 2628 // high-res tiling should be created at a source scale of 1.
2610 animating_transform = true; 2629 animating_transform = true;
2611 contents_scale = 2.f; 2630 contents_scale = 2.f;
2612 maximum_animation_scale = 0.f; 2631 maximum_animation_scale = 0.f;
2613 2632
2614 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2633 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2615 maximum_animation_scale, 2634 maximum_animation_scale,
2616 starting_animation_scale, animating_transform); 2635 starting_animation_scale, animating_transform);
2617 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), page_scale * device_scale); 2636 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(),
2637 page_scale * device_scale);
2618 2638
2619 // Further changes to scale during the animation should not cause a new 2639 // Further changes to scale during the animation should not cause a new
2620 // high-res tiling to get created. 2640 // high-res tiling to get created.
2621 contents_scale = 3.f; 2641 contents_scale = 3.f;
2622 2642
2623 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2643 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2624 maximum_animation_scale, 2644 maximum_animation_scale,
2625 starting_animation_scale, animating_transform); 2645 starting_animation_scale, animating_transform);
2626 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), page_scale * device_scale); 2646 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(),
2647 page_scale * device_scale);
2627 2648
2628 // Once we stop animating, a new high-res tiling should be created. 2649 // Once we stop animating, a new high-res tiling should be created.
2629 animating_transform = false; 2650 animating_transform = false;
2630 contents_scale = 4.f; 2651 contents_scale = 4.f;
2631 2652
2632 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2653 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2633 maximum_animation_scale, 2654 maximum_animation_scale,
2634 starting_animation_scale, animating_transform); 2655 starting_animation_scale, animating_transform);
2635 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f); 2656 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 4.f);
2636 2657
2637 // When animating with a maxmium animation scale factor that is so large 2658 // When animating with a maxmium animation scale factor that is so large
2638 // that the layer grows larger than the viewport at this scale, a new 2659 // that the layer grows larger than the viewport at this scale, a new
2639 // high-res tiling should get created at a source scale of 1, not at its 2660 // high-res tiling should get created at a source scale of 1, not at its
2640 // maximum scale. 2661 // maximum scale.
2641 animating_transform = true; 2662 animating_transform = true;
2642 contents_scale = 2.f; 2663 contents_scale = 2.f;
2643 maximum_animation_scale = 11.f; 2664 maximum_animation_scale = 11.f;
2644 2665
2645 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2666 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2646 maximum_animation_scale, 2667 maximum_animation_scale,
2647 starting_animation_scale, animating_transform); 2668 starting_animation_scale, animating_transform);
2648 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), page_scale * device_scale); 2669 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(),
2670 page_scale * device_scale);
2649 2671
2650 // Once we stop animating, a new high-res tiling should be created. 2672 // Once we stop animating, a new high-res tiling should be created.
2651 animating_transform = false; 2673 animating_transform = false;
2652 contents_scale = 11.f; 2674 contents_scale = 11.f;
2653 2675
2654 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2676 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2655 maximum_animation_scale, 2677 maximum_animation_scale,
2656 starting_animation_scale, animating_transform); 2678 starting_animation_scale, animating_transform);
2657 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 11.f); 2679 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 11.f);
2658 2680
2659 // When animating with a maxmium animation scale factor that is so large 2681 // When animating with a maxmium animation scale factor that is so large
2660 // that the layer grows larger than the viewport at this scale, and where 2682 // that the layer grows larger than the viewport at this scale, and where
2661 // the intial source scale is < 1, a new high-res tiling should get created 2683 // the intial source scale is < 1, a new high-res tiling should get created
2662 // at source scale 1. 2684 // at source scale 1.
2663 animating_transform = true; 2685 animating_transform = true;
2664 contents_scale = 0.1f; 2686 contents_scale = 0.1f;
2665 maximum_animation_scale = 11.f; 2687 maximum_animation_scale = 11.f;
2666 2688
2667 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2689 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2668 maximum_animation_scale, 2690 maximum_animation_scale,
2669 starting_animation_scale, animating_transform); 2691 starting_animation_scale, animating_transform);
2670 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), device_scale * page_scale); 2692 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(),
2693 device_scale * page_scale);
2671 2694
2672 // Once we stop animating, a new high-res tiling should be created. 2695 // Once we stop animating, a new high-res tiling should be created.
2673 animating_transform = false; 2696 animating_transform = false;
2674 contents_scale = 12.f; 2697 contents_scale = 12.f;
2675 2698
2676 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2699 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2677 maximum_animation_scale, 2700 maximum_animation_scale,
2678 starting_animation_scale, animating_transform); 2701 starting_animation_scale, animating_transform);
2679 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 12.f); 2702 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 12.f);
2680 2703
2681 // When animating toward a smaller scale, but that is still so large that the 2704 // When animating toward a smaller scale, but that is still so large that the
2682 // layer grows larger than the viewport at this scale, a new high-res tiling 2705 // layer grows larger than the viewport at this scale, a new high-res tiling
2683 // should get created at source scale 1. 2706 // should get created at source scale 1.
2684 animating_transform = true; 2707 animating_transform = true;
2685 contents_scale = 11.f; 2708 contents_scale = 11.f;
2686 maximum_animation_scale = 11.f; 2709 maximum_animation_scale = 11.f;
2687 2710
2688 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2711 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2689 maximum_animation_scale, 2712 maximum_animation_scale,
2690 starting_animation_scale, animating_transform); 2713 starting_animation_scale, animating_transform);
2691 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), device_scale * page_scale); 2714 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(),
2715 device_scale * page_scale);
2692 2716
2693 // Once we stop animating, a new high-res tiling should be created. 2717 // Once we stop animating, a new high-res tiling should be created.
2694 animating_transform = false; 2718 animating_transform = false;
2695 contents_scale = 11.f; 2719 contents_scale = 11.f;
2696 2720
2697 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 2721 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
2698 maximum_animation_scale, 2722 maximum_animation_scale,
2699 starting_animation_scale, animating_transform); 2723 starting_animation_scale, animating_transform);
2700 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 11.f); 2724 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 11.f);
2701 } 2725 }
2702 2726
2703 TEST_F(PictureLayerImplTest, TilingSetRasterQueue) { 2727 TEST_F(PictureLayerImplTest, TilingSetRasterQueue) {
2704 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 2728 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
2705 2729
2706 host_impl()->SetViewportSize(gfx::Size(500, 500)); 2730 host_impl()->SetViewportSize(gfx::Size(500, 500));
2707 2731
2708 gfx::Size layer_bounds(1000, 1000); 2732 gfx::Size layer_bounds(1000, 1000);
2709 2733
2710 scoped_refptr<FakeRasterSource> pending_raster_source = 2734 scoped_refptr<FakeRasterSource> pending_raster_source =
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
2955 TilePriority priority = prioritized_tile.priority(); 2979 TilePriority priority = prioritized_tile.priority();
2956 2980
2957 if (priority.priority_bin == TilePriority::NOW) { 2981 if (priority.priority_bin == TilePriority::NOW) {
2958 reached_visible = true; 2982 reached_visible = true;
2959 last_tile = prioritized_tile; 2983 last_tile = prioritized_tile;
2960 break; 2984 break;
2961 } 2985 }
2962 2986
2963 EXPECT_FALSE(tile->required_for_activation()); 2987 EXPECT_FALSE(tile->required_for_activation());
2964 2988
2965 while (std::abs(tile->contents_scale() - expected_scales[scale_index]) > 2989 while (std::abs(tile->contents_scale_key() - expected_scales[scale_index]) >
2966 std::numeric_limits<float>::epsilon()) { 2990 std::numeric_limits<float>::epsilon()) {
2967 ++scale_index; 2991 ++scale_index;
2968 ASSERT_LT(scale_index, arraysize(expected_scales)); 2992 ASSERT_LT(scale_index, arraysize(expected_scales));
2969 } 2993 }
2970 2994
2971 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]); 2995 EXPECT_FLOAT_EQ(tile->contents_scale_key(), expected_scales[scale_index]);
2972 unique_tiles.insert(tile); 2996 unique_tiles.insert(tile);
2973 2997
2974 if (tile->required_for_activation() == 2998 if (tile->required_for_activation() ==
2975 last_tile.tile()->required_for_activation() && 2999 last_tile.tile()->required_for_activation() &&
2976 std::abs(tile->contents_scale() - last_tile.tile()->contents_scale()) < 3000 std::abs(tile->contents_scale_key() -
3001 last_tile.tile()->contents_scale_key()) <
2977 std::numeric_limits<float>::epsilon()) { 3002 std::numeric_limits<float>::epsilon()) {
2978 if (priority.distance_to_visible <= 3003 if (priority.distance_to_visible <=
2979 last_tile.priority().distance_to_visible) 3004 last_tile.priority().distance_to_visible)
2980 ++distance_decreasing; 3005 ++distance_decreasing;
2981 else 3006 else
2982 ++distance_increasing; 3007 ++distance_increasing;
2983 } 3008 }
2984 3009
2985 last_tile = prioritized_tile; 3010 last_tile = prioritized_tile;
2986 queue->Pop(); 3011 queue->Pop();
(...skipping 15 matching lines...) Expand all
3002 TilePriority priority = prioritized_tile.priority(); 3027 TilePriority priority = prioritized_tile.priority();
3003 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 3028 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
3004 3029
3005 if (reached_required) { 3030 if (reached_required) {
3006 EXPECT_TRUE(tile->required_for_activation()); 3031 EXPECT_TRUE(tile->required_for_activation());
3007 } else if (tile->required_for_activation()) { 3032 } else if (tile->required_for_activation()) {
3008 reached_required = true; 3033 reached_required = true;
3009 scale_index = 0; 3034 scale_index = 0;
3010 } 3035 }
3011 3036
3012 while (std::abs(tile->contents_scale() - expected_scales[scale_index]) > 3037 while (std::abs(tile->contents_scale_key() - expected_scales[scale_index]) >
3013 std::numeric_limits<float>::epsilon()) { 3038 std::numeric_limits<float>::epsilon()) {
3014 ++scale_index; 3039 ++scale_index;
3015 ASSERT_LT(scale_index, arraysize(expected_scales)); 3040 ASSERT_LT(scale_index, arraysize(expected_scales));
3016 } 3041 }
3017 3042
3018 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]); 3043 EXPECT_FLOAT_EQ(tile->contents_scale_key(), expected_scales[scale_index]);
3019 unique_tiles.insert(tile); 3044 unique_tiles.insert(tile);
3020 queue->Pop(); 3045 queue->Pop();
3021 } 3046 }
3022 3047
3023 EXPECT_TRUE(reached_required); 3048 EXPECT_TRUE(reached_required);
3024 EXPECT_EQ(all_tiles_set.size(), unique_tiles.size()); 3049 EXPECT_EQ(all_tiles_set.size(), unique_tiles.size());
3025 } 3050 }
3026 3051
3027 TEST_F(PictureLayerImplTest, Occlusion) { 3052 TEST_F(PictureLayerImplTest, Occlusion) {
3028 gfx::Size tile_size(102, 102); 3053 gfx::Size tile_size(102, 102);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
3083 float contents_scale = 2.f; 3108 float contents_scale = 2.f;
3084 float device_scale = 1.f; 3109 float device_scale = 1.f;
3085 float page_scale = 1.f; 3110 float page_scale = 1.f;
3086 float maximum_animation_scale = 1.f; 3111 float maximum_animation_scale = 1.f;
3087 float starting_animation_scale = 0.f; 3112 float starting_animation_scale = 0.f;
3088 bool animating_transform = false; 3113 bool animating_transform = false;
3089 3114
3090 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3115 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3091 maximum_animation_scale, 3116 maximum_animation_scale,
3092 starting_animation_scale, animating_transform); 3117 starting_animation_scale, animating_transform);
3093 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); 3118 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 2.f);
3094 3119
3095 // Changing the source scale without being in an animation will cause 3120 // Changing the source scale without being in an animation will cause
3096 // the layer to change scale. 3121 // the layer to change scale.
3097 contents_scale = 3.f; 3122 contents_scale = 3.f;
3098 3123
3099 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3124 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3100 maximum_animation_scale, 3125 maximum_animation_scale,
3101 starting_animation_scale, animating_transform); 3126 starting_animation_scale, animating_transform);
3102 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 3127 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
3103 3128
3104 contents_scale = 0.5f; 3129 contents_scale = 0.5f;
3105 3130
3106 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3131 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3107 maximum_animation_scale, 3132 maximum_animation_scale,
3108 starting_animation_scale, animating_transform); 3133 starting_animation_scale, animating_transform);
3109 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f); 3134 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 0.5f);
3110 3135
3111 // However, if the layer has a will-change property, then the raster scale 3136 // However, if the layer has a will-change property, then the raster scale
3112 // will get fixed at the last value. 3137 // will get fixed at the last value.
3113 active_layer()->SetHasWillChangeTransformHint(true); 3138 active_layer()->SetHasWillChangeTransformHint(true);
3114 pending_layer()->SetHasWillChangeTransformHint(true); 3139 pending_layer()->SetHasWillChangeTransformHint(true);
3115 3140
3116 contents_scale = 3.f; 3141 contents_scale = 3.f;
3117 3142
3118 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3143 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3119 maximum_animation_scale, 3144 maximum_animation_scale,
3120 starting_animation_scale, animating_transform); 3145 starting_animation_scale, animating_transform);
3121 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f); 3146 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 0.5f);
3122 3147
3123 // Further changes to the source scale will no longer be reflected in the 3148 // Further changes to the source scale will no longer be reflected in the
3124 // contents scale. 3149 // contents scale.
3125 contents_scale = 1.f; 3150 contents_scale = 1.f;
3126 3151
3127 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3152 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3128 maximum_animation_scale, 3153 maximum_animation_scale,
3129 starting_animation_scale, animating_transform); 3154 starting_animation_scale, animating_transform);
3130 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 0.5f); 3155 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 0.5f);
3131 3156
3132 // Disabling the will-change hint will once again make the raster scale update 3157 // Disabling the will-change hint will once again make the raster scale update
3133 // with the ideal scale. 3158 // with the ideal scale.
3134 active_layer()->SetHasWillChangeTransformHint(false); 3159 active_layer()->SetHasWillChangeTransformHint(false);
3135 pending_layer()->SetHasWillChangeTransformHint(false); 3160 pending_layer()->SetHasWillChangeTransformHint(false);
3136 3161
3137 contents_scale = 3.f; 3162 contents_scale = 3.f;
3138 3163
3139 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, 3164 SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale,
3140 maximum_animation_scale, 3165 maximum_animation_scale,
3141 starting_animation_scale, animating_transform); 3166 starting_animation_scale, animating_transform);
3142 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 3.f); 3167 EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 3.f);
3143 } 3168 }
3144 3169
3145 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) { 3170 TEST_F(PictureLayerImplTest, LowResReadyToDrawNotEnoughToActivate) {
3146 gfx::Size tile_size(100, 100); 3171 gfx::Size tile_size(100, 100);
3147 gfx::Size layer_bounds(1000, 1000); 3172 gfx::Size layer_bounds(1000, 1000);
3148 3173
3149 // Make sure pending tree has tiles. 3174 // Make sure pending tree has tiles.
3150 gfx::Rect invalidation(gfx::Point(50, 50), tile_size); 3175 gfx::Rect invalidation(gfx::Point(50, 50), tile_size);
3151 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation); 3176 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, invalidation);
3152 3177
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3215 ResetTilingsAndRasterScales(); 3240 ResetTilingsAndRasterScales();
3216 3241
3217 SetupDrawPropertiesAndUpdateTiles(active_layer(), 3242 SetupDrawPropertiesAndUpdateTiles(active_layer(),
3218 6.f, // ideal contents scale 3243 6.f, // ideal contents scale
3219 3.f, // device scale 3244 3.f, // device scale
3220 2.f, // page scale 3245 2.f, // page scale
3221 1.f, // maximum animation scale 3246 1.f, // maximum animation scale
3222 0.f, // starting animation scale 3247 0.f, // starting animation scale
3223 false); 3248 false);
3224 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings()); 3249 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings());
3225 EXPECT_FLOAT_EQ(6.f, 3250 EXPECT_FLOAT_EQ(
3226 active_layer()->tilings()->tiling_at(0)->contents_scale()); 3251 6.f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
3227 3252
3228 // If we change the page scale factor, then we should get new tilings. 3253 // If we change the page scale factor, then we should get new tilings.
3229 SetupDrawPropertiesAndUpdateTiles(active_layer(), 3254 SetupDrawPropertiesAndUpdateTiles(active_layer(),
3230 6.6f, // ideal contents scale 3255 6.6f, // ideal contents scale
3231 3.f, // device scale 3256 3.f, // device scale
3232 2.2f, // page scale 3257 2.2f, // page scale
3233 1.f, // maximum animation scale 3258 1.f, // maximum animation scale
3234 0.f, // starting animation scale 3259 0.f, // starting animation scale
3235 false); 3260 false);
3236 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 3261 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
3237 EXPECT_FLOAT_EQ(6.6f, 3262 EXPECT_FLOAT_EQ(
3238 active_layer()->tilings()->tiling_at(0)->contents_scale()); 3263 6.6f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
3239 3264
3240 // If we change the device scale factor, then we should get new tilings. 3265 // If we change the device scale factor, then we should get new tilings.
3241 SetupDrawPropertiesAndUpdateTiles(active_layer(), 3266 SetupDrawPropertiesAndUpdateTiles(active_layer(),
3242 7.26f, // ideal contents scale 3267 7.26f, // ideal contents scale
3243 3.3f, // device scale 3268 3.3f, // device scale
3244 2.2f, // page scale 3269 2.2f, // page scale
3245 1.f, // maximum animation scale 3270 1.f, // maximum animation scale
3246 0.f, // starting animation scale 3271 0.f, // starting animation scale
3247 false); 3272 false);
3248 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 3273 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
3249 EXPECT_FLOAT_EQ(7.26f, 3274 EXPECT_FLOAT_EQ(
3250 active_layer()->tilings()->tiling_at(0)->contents_scale()); 3275 7.26f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
3251 3276
3252 // If we change the device scale factor, but end up at the same total scale 3277 // If we change the device scale factor, but end up at the same total scale
3253 // factor somehow, then we don't get new tilings. 3278 // factor somehow, then we don't get new tilings.
3254 SetupDrawPropertiesAndUpdateTiles(active_layer(), 3279 SetupDrawPropertiesAndUpdateTiles(active_layer(),
3255 7.26f, // ideal contents scale 3280 7.26f, // ideal contents scale
3256 2.2f, // device scale 3281 2.2f, // device scale
3257 3.3f, // page scale 3282 3.3f, // page scale
3258 1.f, // maximum animation scale 3283 1.f, // maximum animation scale
3259 0.f, // starting animation scale 3284 0.f, // starting animation scale
3260 false); 3285 false);
3261 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings()); 3286 ASSERT_EQ(3u, active_layer()->tilings()->num_tilings());
3262 EXPECT_FLOAT_EQ(7.26f, 3287 EXPECT_FLOAT_EQ(
3263 active_layer()->tilings()->tiling_at(0)->contents_scale()); 3288 7.26f, active_layer()->tilings()->tiling_at(0)->contents_scale_key());
3264 } 3289 }
3265 3290
3266 TEST_F(NoLowResPictureLayerImplTest, PendingLayerOnlyHasHighResTiling) { 3291 TEST_F(NoLowResPictureLayerImplTest, PendingLayerOnlyHasHighResTiling) {
3267 gfx::Size layer_bounds(1300, 1900); 3292 gfx::Size layer_bounds(1300, 1900);
3268 SetupDefaultTrees(layer_bounds); 3293 SetupDefaultTrees(layer_bounds);
3269 3294
3270 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 3295 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
3271 EXPECT_LT(low_res_factor, 1.f); 3296 EXPECT_LT(low_res_factor, 1.f);
3272 3297
3273 ResetTilingsAndRasterScales(); 3298 ResetTilingsAndRasterScales();
3274 3299
3275 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 3300 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
3276 6.f, // ideal contents scale 3301 6.f, // ideal contents scale
3277 3.f, // device scale 3302 3.f, // device scale
3278 2.f, // page scale 3303 2.f, // page scale
3279 1.f, // maximum animation scale 3304 1.f, // maximum animation scale
3280 0.f, // starting animation scale 3305 0.f, // starting animation scale
3281 false); 3306 false);
3282 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 3307 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
3283 EXPECT_FLOAT_EQ(6.f, 3308 EXPECT_FLOAT_EQ(
3284 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 3309 6.f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
3285 3310
3286 // If we change the page scale factor, then we should get new tilings. 3311 // If we change the page scale factor, then we should get new tilings.
3287 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 3312 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
3288 6.6f, // ideal contents scale 3313 6.6f, // ideal contents scale
3289 3.f, // device scale 3314 3.f, // device scale
3290 2.2f, // page scale 3315 2.2f, // page scale
3291 1.f, // maximum animation scale 3316 1.f, // maximum animation scale
3292 0.f, // starting animation scale 3317 0.f, // starting animation scale
3293 false); 3318 false);
3294 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 3319 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
3295 EXPECT_FLOAT_EQ(6.6f, 3320 EXPECT_FLOAT_EQ(
3296 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 3321 6.6f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
3297 3322
3298 // If we change the device scale factor, then we should get new tilings. 3323 // If we change the device scale factor, then we should get new tilings.
3299 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 3324 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
3300 7.26f, // ideal contents scale 3325 7.26f, // ideal contents scale
3301 3.3f, // device scale 3326 3.3f, // device scale
3302 2.2f, // page scale 3327 2.2f, // page scale
3303 1.f, // maximum animation scale 3328 1.f, // maximum animation scale
3304 0.f, // starting animation scale 3329 0.f, // starting animation scale
3305 false); 3330 false);
3306 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 3331 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
3307 EXPECT_FLOAT_EQ(7.26f, 3332 EXPECT_FLOAT_EQ(
3308 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 3333 7.26f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
3309 3334
3310 // If we change the device scale factor, but end up at the same total scale 3335 // If we change the device scale factor, but end up at the same total scale
3311 // factor somehow, then we don't get new tilings. 3336 // factor somehow, then we don't get new tilings.
3312 SetupDrawPropertiesAndUpdateTiles(pending_layer(), 3337 SetupDrawPropertiesAndUpdateTiles(pending_layer(),
3313 7.26f, // ideal contents scale 3338 7.26f, // ideal contents scale
3314 2.2f, // device scale 3339 2.2f, // device scale
3315 3.3f, // page scale 3340 3.3f, // page scale
3316 1.f, // maximum animation scale 3341 1.f, // maximum animation scale
3317 0.f, // starting animation scale 3342 0.f, // starting animation scale
3318 false); 3343 false);
3319 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings()); 3344 ASSERT_EQ(1u, pending_layer()->tilings()->num_tilings());
3320 EXPECT_FLOAT_EQ(7.26f, 3345 EXPECT_FLOAT_EQ(
3321 pending_layer()->tilings()->tiling_at(0)->contents_scale()); 3346 7.26f, pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
3322 } 3347 }
3323 3348
3324 TEST_F(NoLowResPictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) { 3349 TEST_F(NoLowResPictureLayerImplTest, AllHighResRequiredEvenIfNotChanged) {
3325 gfx::Size layer_bounds(400, 400); 3350 gfx::Size layer_bounds(400, 400);
3326 gfx::Size tile_size(100, 100); 3351 gfx::Size tile_size(100, 100);
3327 3352
3328 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 3353 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
3329 3354
3330 Tile* some_active_tile = 3355 Tile* some_active_tile =
3331 active_layer()->HighResTiling()->AllTilesForTesting()[0]; 3356 active_layer()->HighResTiling()->AllTilesForTesting()[0];
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
3421 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 3446 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
3422 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings()); 3447 ASSERT_EQ(1u, active_layer()->tilings()->num_tilings());
3423 3448
3424 host_impl()->PinchGestureEnd(); 3449 host_impl()->PinchGestureEnd();
3425 3450
3426 // Create a 1.2 scale tiling. Now we have 1.0 and 1.2 tilings. Ideal = 1.2. 3451 // Create a 1.2 scale tiling. Now we have 1.0 and 1.2 tilings. Ideal = 1.2.
3427 scale /= 4.f; 3452 scale /= 4.f;
3428 page_scale /= 4.f; 3453 page_scale /= 4.f;
3429 SetContentsScaleOnBothLayers(1.2f, device_scale, page_scale, 1.f, 0.f, false); 3454 SetContentsScaleOnBothLayers(1.2f, device_scale, page_scale, 1.f, 0.f, false);
3430 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 3455 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
3431 EXPECT_FLOAT_EQ(1.f, 3456 EXPECT_FLOAT_EQ(
3432 active_layer()->tilings()->tiling_at(1)->contents_scale()); 3457 1.f, active_layer()->tilings()->tiling_at(1)->contents_scale_key());
3433 3458
3434 // Ensure UpdateTiles won't remove any tilings. 3459 // Ensure UpdateTiles won't remove any tilings.
3435 active_layer()->MarkAllTilingsUsed(); 3460 active_layer()->MarkAllTilingsUsed();
3436 3461
3437 // Mark the non-ideal tilings as used. They won't be removed. 3462 // Mark the non-ideal tilings as used. They won't be removed.
3438 used_tilings.clear(); 3463 used_tilings.clear();
3439 used_tilings.push_back(active_layer()->tilings()->tiling_at(1)); 3464 used_tilings.push_back(active_layer()->tilings()->tiling_at(1));
3440 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings); 3465 active_layer()->CleanUpTilingsOnActiveLayer(used_tilings);
3441 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings()); 3466 ASSERT_EQ(2u, active_layer()->tilings()->num_tilings());
3442 3467
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
3643 3668
3644 bool last_tile_is_occluded = last_tile.is_occluded(); 3669 bool last_tile_is_occluded = last_tile.is_occluded();
3645 if (!last_tile_is_occluded) { 3670 if (!last_tile_is_occluded) {
3646 TilePriority::PriorityBin tile_priority_bin = 3671 TilePriority::PriorityBin tile_priority_bin =
3647 prioritized_tile.priority().priority_bin; 3672 prioritized_tile.priority().priority_bin;
3648 TilePriority::PriorityBin last_tile_priority_bin = 3673 TilePriority::PriorityBin last_tile_priority_bin =
3649 last_tile.priority().priority_bin; 3674 last_tile.priority().priority_bin;
3650 3675
3651 EXPECT_TRUE(tile_priority_bin < last_tile_priority_bin || 3676 EXPECT_TRUE(tile_priority_bin < last_tile_priority_bin ||
3652 tile->required_for_activation() || 3677 tile->required_for_activation() ||
3653 tile->contents_scale() != 3678 tile->contents_scale_key() !=
3654 last_tile.tile()->contents_scale()) 3679 last_tile.tile()->contents_scale_key())
3655 << "line: " << source_line; 3680 << "line: " << source_line;
3656 } 3681 }
3657 } 3682 }
3658 last_tile = prioritized_tile; 3683 last_tile = prioritized_tile;
3659 queue->Pop(); 3684 queue->Pop();
3660 } 3685 }
3661 EXPECT_EQ(expected_occluded_tile_count, occluded_tile_count) 3686 EXPECT_EQ(expected_occluded_tile_count, occluded_tile_count)
3662 << "line: " << source_line; 3687 << "line: " << source_line;
3663 } 3688 }
3664 }; 3689 };
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
3922 for (size_t i = 0; i < pending_layer()->num_tilings(); ++i) { 3947 for (size_t i = 0; i < pending_layer()->num_tilings(); ++i) {
3923 PictureLayerTiling* tiling = pending_layer()->tilings()->tiling_at(i); 3948 PictureLayerTiling* tiling = pending_layer()->tilings()->tiling_at(i);
3924 auto prioritized_tiles = 3949 auto prioritized_tiles =
3925 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 3950 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
3926 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); 3951 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
3927 3952
3928 occluded_tile_count = 0; 3953 occluded_tile_count = 0;
3929 for (size_t j = 0; j < tiles.size(); ++j) { 3954 for (size_t j = 0; j < tiles.size(); ++j) {
3930 if (prioritized_tiles[tiles[j]].is_occluded()) { 3955 if (prioritized_tiles[tiles[j]].is_occluded()) {
3931 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( 3956 gfx::Rect scaled_content_rect = ScaleToEnclosingRect(
3932 tiles[j]->content_rect(), 1.f / tiles[j]->contents_scale()); 3957 tiles[j]->content_rect(), 1.f / tiles[j]->contents_scale_key());
3933 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x()); 3958 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x());
3934 occluded_tile_count++; 3959 occluded_tile_count++;
3935 } 3960 }
3936 } 3961 }
3937 3962
3938 switch (i) { 3963 switch (i) {
3939 case 0: 3964 case 0:
3940 EXPECT_EQ(occluded_tile_count, 30); 3965 EXPECT_EQ(occluded_tile_count, 30);
3941 break; 3966 break;
3942 case 1: 3967 case 1:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3986 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 4011 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
3987 4012
3988 for (PictureLayerTiling::CoverageIterator iter(tiling, 1.f, 4013 for (PictureLayerTiling::CoverageIterator iter(tiling, 1.f,
3989 gfx::Rect(layer_bounds)); 4014 gfx::Rect(layer_bounds));
3990 iter; ++iter) { 4015 iter; ++iter) {
3991 if (!*iter) 4016 if (!*iter)
3992 continue; 4017 continue;
3993 const Tile* tile = *iter; 4018 const Tile* tile = *iter;
3994 4019
3995 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( 4020 gfx::Rect scaled_content_rect = ScaleToEnclosingRect(
3996 tile->content_rect(), 1.f / tile->contents_scale()); 4021 tile->content_rect(), 1.f / tile->contents_scale_key());
3997 // Tiles are occluded on the active tree iff they lie beneath the 4022 // Tiles are occluded on the active tree iff they lie beneath the
3998 // occluding layer. 4023 // occluding layer.
3999 EXPECT_EQ(prioritized_tiles[tile].is_occluded(), 4024 EXPECT_EQ(prioritized_tiles[tile].is_occluded(),
4000 scaled_content_rect.x() >= occluding_layer_position.x()); 4025 scaled_content_rect.x() >= occluding_layer_position.x());
4001 } 4026 }
4002 } 4027 }
4003 4028
4004 // Partially invalidate the pending layer. 4029 // Partially invalidate the pending layer.
4005 SetupPendingTreeWithInvalidation(pending_raster_source, invalidation_rect); 4030 SetupPendingTreeWithInvalidation(pending_raster_source, invalidation_rect);
4006 4031
(...skipping 15 matching lines...) Expand all
4022 4047
4023 if (tiling->resolution() == LOW_RESOLUTION) { 4048 if (tiling->resolution() == LOW_RESOLUTION) {
4024 EXPECT_FALSE(active_layer()->GetPendingOrActiveTwinTiling(tiling)); 4049 EXPECT_FALSE(active_layer()->GetPendingOrActiveTwinTiling(tiling));
4025 continue; 4050 continue;
4026 } 4051 }
4027 4052
4028 Tile* twin_tile = 4053 Tile* twin_tile =
4029 active_layer()->GetPendingOrActiveTwinTiling(tiling)->TileAt( 4054 active_layer()->GetPendingOrActiveTwinTiling(tiling)->TileAt(
4030 iter.i(), iter.j()); 4055 iter.i(), iter.j());
4031 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( 4056 gfx::Rect scaled_content_rect = ScaleToEnclosingRect(
4032 tile->content_rect(), 1.f / tile->contents_scale()); 4057 tile->content_rect(), 1.f / tile->contents_scale_key());
4033 4058
4034 if (scaled_content_rect.Intersects(invalidation_rect)) { 4059 if (scaled_content_rect.Intersects(invalidation_rect)) {
4035 // Tiles inside the invalidation rect exist on both trees. 4060 // Tiles inside the invalidation rect exist on both trees.
4036 EXPECT_TRUE(twin_tile); 4061 EXPECT_TRUE(twin_tile);
4037 EXPECT_NE(tile, twin_tile); 4062 EXPECT_NE(tile, twin_tile);
4038 } else { 4063 } else {
4039 // Tiles outside the invalidation rect only exist on the active tree. 4064 // Tiles outside the invalidation rect only exist on the active tree.
4040 EXPECT_FALSE(twin_tile); 4065 EXPECT_FALSE(twin_tile);
4041 } 4066 }
4042 } 4067 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
4130 else 4155 else
4131 EXPECT_FALSE(tile); 4156 EXPECT_FALSE(tile);
4132 4157
4133 if (!tile) 4158 if (!tile)
4134 continue; 4159 continue;
4135 if (prioritized_tiles[tile].is_occluded()) 4160 if (prioritized_tiles[tile].is_occluded())
4136 occluded_tile_count_on_pending++; 4161 occluded_tile_count_on_pending++;
4137 } 4162 }
4138 EXPECT_EQ(expected_occluded_tile_count_on_pending[i], 4163 EXPECT_EQ(expected_occluded_tile_count_on_pending[i],
4139 occluded_tile_count_on_pending) 4164 occluded_tile_count_on_pending)
4140 << tiling->contents_scale(); 4165 << tiling->contents_scale_key();
4141 } 4166 }
4142 4167
4143 // Verify number of occluded tiles on the active layer for each tiling. 4168 // Verify number of occluded tiles on the active layer for each tiling.
4144 for (size_t i = 0; i < active_layer()->num_tilings(); ++i) { 4169 for (size_t i = 0; i < active_layer()->num_tilings(); ++i) {
4145 PictureLayerTiling* tiling = active_layer()->tilings()->tiling_at(i); 4170 PictureLayerTiling* tiling = active_layer()->tilings()->tiling_at(i);
4146 auto prioritized_tiles = 4171 auto prioritized_tiles =
4147 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); 4172 tiling->UpdateAndGetAllPrioritizedTilesForTesting();
4148 4173
4149 size_t occluded_tile_count_on_active = 0u; 4174 size_t occluded_tile_count_on_active = 0u;
4150 for (PictureLayerTiling::CoverageIterator iter(tiling, dest_scale, 4175 for (PictureLayerTiling::CoverageIterator iter(tiling, dest_scale,
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
4720 TEST_F(NoLowResPictureLayerImplTest, LowResWasHighResCollision) { 4745 TEST_F(NoLowResPictureLayerImplTest, LowResWasHighResCollision) {
4721 gfx::Size layer_bounds(1300, 1900); 4746 gfx::Size layer_bounds(1300, 1900);
4722 4747
4723 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 4748 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
4724 SetupDefaultTrees(layer_bounds); 4749 SetupDefaultTrees(layer_bounds);
4725 ResetTilingsAndRasterScales(); 4750 ResetTilingsAndRasterScales();
4726 4751
4727 float page_scale = 2.f; 4752 float page_scale = 2.f;
4728 SetContentsScaleOnBothLayers(page_scale, 1.0f, page_scale, 1.0f, 0.f, false); 4753 SetContentsScaleOnBothLayers(page_scale, 1.0f, page_scale, 1.0f, 0.f, false);
4729 EXPECT_BOTH_EQ(num_tilings(), 1u); 4754 EXPECT_BOTH_EQ(num_tilings(), 1u);
4730 EXPECT_BOTH_EQ(tilings()->tiling_at(0)->contents_scale(), page_scale); 4755 EXPECT_BOTH_EQ(tilings()->tiling_at(0)->contents_scale_key(), page_scale);
4731 4756
4732 host_impl()->PinchGestureBegin(); 4757 host_impl()->PinchGestureBegin();
4733 4758
4734 // Zoom out to exactly the low res factor so that the previous high res 4759 // Zoom out to exactly the low res factor so that the previous high res
4735 // would be equal to the current low res (if it were possible to have one). 4760 // would be equal to the current low res (if it were possible to have one).
4736 float zoomed = page_scale / low_res_factor; 4761 float zoomed = page_scale / low_res_factor;
4737 SetContentsScaleOnBothLayers(zoomed, 1.0f, zoomed, 1.0f, 0.f, false); 4762 SetContentsScaleOnBothLayers(zoomed, 1.0f, zoomed, 1.0f, 0.f, false);
4738 EXPECT_EQ(1u, pending_layer()->num_tilings()); 4763 EXPECT_EQ(1u, pending_layer()->num_tilings());
4739 EXPECT_EQ(zoomed, pending_layer()->tilings()->tiling_at(0)->contents_scale()); 4764 EXPECT_EQ(zoomed,
4765 pending_layer()->tilings()->tiling_at(0)->contents_scale_key());
4740 } 4766 }
4741 4767
4742 TEST_F(PictureLayerImplTest, HighResWasLowResCollision) { 4768 TEST_F(PictureLayerImplTest, HighResWasLowResCollision) {
4743 gfx::Size layer_bounds(1300, 1900); 4769 gfx::Size layer_bounds(1300, 1900);
4744 4770
4745 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor; 4771 float low_res_factor = host_impl()->settings().low_res_contents_scale_factor;
4746 4772
4747 SetupDefaultTrees(layer_bounds); 4773 SetupDefaultTrees(layer_bounds);
4748 ResetTilingsAndRasterScales(); 4774 ResetTilingsAndRasterScales();
4749 4775
4750 float page_scale = 4.f; 4776 float page_scale = 4.f;
4751 float low_res = page_scale * low_res_factor; 4777 float low_res = page_scale * low_res_factor;
4752 float extra_low_res = low_res * low_res_factor; 4778 float extra_low_res = low_res * low_res_factor;
4753 SetupDrawPropertiesAndUpdateTiles(active_layer(), page_scale, 1.0f, 4779 SetupDrawPropertiesAndUpdateTiles(active_layer(), page_scale, 1.0f,
4754 page_scale, 1.0f, 0.f, false); 4780 page_scale, 1.0f, 0.f, false);
4755 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings()); 4781 EXPECT_EQ(2u, active_layer()->tilings()->num_tilings());
4756 EXPECT_EQ(page_scale, 4782 EXPECT_EQ(page_scale,
4757 active_layer()->tilings()->tiling_at(0)->contents_scale()); 4783 active_layer()->tilings()->tiling_at(0)->contents_scale_key());
4758 EXPECT_EQ(low_res, active_layer()->tilings()->tiling_at(1)->contents_scale()); 4784 EXPECT_EQ(low_res,
4785 active_layer()->tilings()->tiling_at(1)->contents_scale_key());
4759 4786
4760 // Grab a current low res tile. 4787 // Grab a current low res tile.
4761 PictureLayerTiling* old_low_res_tiling = 4788 PictureLayerTiling* old_low_res_tiling =
4762 active_layer()->tilings()->tiling_at(1); 4789 active_layer()->tilings()->tiling_at(1);
4763 Tile::Id old_low_res_tile_id = 4790 Tile::Id old_low_res_tile_id =
4764 active_layer()->tilings()->tiling_at(1)->TileAt(0, 0)->id(); 4791 active_layer()->tilings()->tiling_at(1)->TileAt(0, 0)->id();
4765 4792
4766 // The tiling knows it has low res content. 4793 // The tiling knows it has low res content.
4767 EXPECT_TRUE(active_layer() 4794 EXPECT_TRUE(active_layer()
4768 ->tilings() 4795 ->tilings()
4769 ->tiling_at(1) 4796 ->tiling_at(1)
4770 ->may_contain_low_resolution_tiles()); 4797 ->may_contain_low_resolution_tiles());
4771 4798
4772 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 4799 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
4773 4800
4774 // Zoom in to exactly the low res factor so that the previous low res 4801 // Zoom in to exactly the low res factor so that the previous low res
4775 // would be equal to the current high res. 4802 // would be equal to the current high res.
4776 SetupDrawPropertiesAndUpdateTiles(active_layer(), low_res, 1.0f, low_res, 4803 SetupDrawPropertiesAndUpdateTiles(active_layer(), low_res, 1.0f, low_res,
4777 1.0f, 0.f, false); 4804 1.0f, 0.f, false);
4778 // 3 tilings. The old high res, the new high res (old low res) and the new low 4805 // 3 tilings. The old high res, the new high res (old low res) and the new low
4779 // res. 4806 // res.
4780 EXPECT_EQ(3u, active_layer()->num_tilings()); 4807 EXPECT_EQ(3u, active_layer()->num_tilings());
4781 4808
4782 PictureLayerTilingSet* tilings = active_layer()->tilings(); 4809 PictureLayerTilingSet* tilings = active_layer()->tilings();
4783 EXPECT_EQ(page_scale, tilings->tiling_at(0)->contents_scale()); 4810 EXPECT_EQ(page_scale, tilings->tiling_at(0)->contents_scale_key());
4784 EXPECT_EQ(low_res, tilings->tiling_at(1)->contents_scale()); 4811 EXPECT_EQ(low_res, tilings->tiling_at(1)->contents_scale_key());
4785 EXPECT_EQ(extra_low_res, tilings->tiling_at(2)->contents_scale()); 4812 EXPECT_EQ(extra_low_res, tilings->tiling_at(2)->contents_scale_key());
4786 4813
4787 EXPECT_EQ(NON_IDEAL_RESOLUTION, tilings->tiling_at(0)->resolution()); 4814 EXPECT_EQ(NON_IDEAL_RESOLUTION, tilings->tiling_at(0)->resolution());
4788 EXPECT_EQ(HIGH_RESOLUTION, tilings->tiling_at(1)->resolution()); 4815 EXPECT_EQ(HIGH_RESOLUTION, tilings->tiling_at(1)->resolution());
4789 EXPECT_EQ(LOW_RESOLUTION, tilings->tiling_at(2)->resolution()); 4816 EXPECT_EQ(LOW_RESOLUTION, tilings->tiling_at(2)->resolution());
4790 4817
4791 // The old low res tile was destroyed and replaced. 4818 // The old low res tile was destroyed and replaced.
4792 EXPECT_EQ(old_low_res_tiling, tilings->tiling_at(1)); 4819 EXPECT_EQ(old_low_res_tiling, tilings->tiling_at(1));
4793 EXPECT_NE(old_low_res_tile_id, tilings->tiling_at(1)->TileAt(0, 0)->id()); 4820 EXPECT_NE(old_low_res_tile_id, tilings->tiling_at(1)->TileAt(0, 0)->id());
4794 EXPECT_TRUE(tilings->tiling_at(1)->TileAt(0, 0)); 4821 EXPECT_TRUE(tilings->tiling_at(1)->TileAt(0, 0));
4795 4822
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4846 // Set PictureLayerImpl::ideal_contents_scale_ to 2.f. 4873 // Set PictureLayerImpl::ideal_contents_scale_ to 2.f.
4847 const float suggested_ideal_contents_scale = 2.f; 4874 const float suggested_ideal_contents_scale = 2.f;
4848 const float device_scale_factor = 3.f; 4875 const float device_scale_factor = 3.f;
4849 const float page_scale_factor = 4.f; 4876 const float page_scale_factor = 4.f;
4850 const float animation_contents_scale = 1.f; 4877 const float animation_contents_scale = 1.f;
4851 const bool animating_transform_to_screen = false; 4878 const bool animating_transform_to_screen = false;
4852 SetupDrawPropertiesAndUpdateTiles( 4879 SetupDrawPropertiesAndUpdateTiles(
4853 pending_layer_ptr, suggested_ideal_contents_scale, device_scale_factor, 4880 pending_layer_ptr, suggested_ideal_contents_scale, device_scale_factor,
4854 page_scale_factor, animation_contents_scale, animation_contents_scale, 4881 page_scale_factor, animation_contents_scale, animation_contents_scale,
4855 animating_transform_to_screen); 4882 animating_transform_to_screen);
4856 EXPECT_EQ(1.f, pending_layer_ptr->tilings()->tiling_at(0)->contents_scale()); 4883 EXPECT_EQ(1.f,
4884 pending_layer_ptr->tilings()->tiling_at(0)->contents_scale_key());
4857 4885
4858 // Push to active layer. 4886 // Push to active layer.
4859 host_impl()->ActivateSyncTree(); 4887 host_impl()->ActivateSyncTree();
4860 4888
4861 FakePictureLayerImpl* active_layer = static_cast<FakePictureLayerImpl*>( 4889 FakePictureLayerImpl* active_layer = static_cast<FakePictureLayerImpl*>(
4862 host_impl()->active_tree()->root_layer_for_testing()); 4890 host_impl()->active_tree()->root_layer_for_testing());
4863 SetupDrawPropertiesAndUpdateTiles( 4891 SetupDrawPropertiesAndUpdateTiles(
4864 active_layer, suggested_ideal_contents_scale, device_scale_factor, 4892 active_layer, suggested_ideal_contents_scale, device_scale_factor,
4865 page_scale_factor, animation_contents_scale, animation_contents_scale, 4893 page_scale_factor, animation_contents_scale, animation_contents_scale,
4866 animating_transform_to_screen); 4894 animating_transform_to_screen);
4867 EXPECT_EQ(1.f, active_layer->tilings()->tiling_at(0)->contents_scale()); 4895 EXPECT_EQ(1.f, active_layer->tilings()->tiling_at(0)->contents_scale_key());
4868 active_layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); 4896 active_layer->set_visible_layer_rect(gfx::Rect(layer_bounds));
4869 4897
4870 // Create resources for the tiles. 4898 // Create resources for the tiles.
4871 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting( 4899 host_impl()->tile_manager()->InitializeTilesWithResourcesForTesting(
4872 active_layer->tilings()->tiling_at(0)->AllTilesForTesting()); 4900 active_layer->tilings()->tiling_at(0)->AllTilesForTesting());
4873 4901
4874 // Draw. 4902 // Draw.
4875 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); 4903 std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
4876 AppendQuadsData data; 4904 AppendQuadsData data;
4877 active_layer->WillDraw(DRAW_MODE_SOFTWARE, nullptr); 4905 active_layer->WillDraw(DRAW_MODE_SOFTWARE, nullptr);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4913 // Scale 0.6. 4941 // Scale 0.6.
4914 case 6: 4942 case 6:
4915 expected_contents_scale = 1.f; 4943 expected_contents_scale = 1.f;
4916 break; 4944 break;
4917 } 4945 }
4918 SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale, 4946 SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale,
4919 1.f, 1.f, 1.f, 1.f, false); 4947 1.f, 1.f, 1.f, 1.f, false);
4920 EXPECT_FLOAT_EQ(expected_contents_scale, 4948 EXPECT_FLOAT_EQ(expected_contents_scale,
4921 pending_layer_ptr->picture_layer_tiling_set() 4949 pending_layer_ptr->picture_layer_tiling_set()
4922 ->FindTilingWithResolution(HIGH_RESOLUTION) 4950 ->FindTilingWithResolution(HIGH_RESOLUTION)
4923 ->contents_scale()) 4951 ->contents_scale_key())
4924 << "ideal_contents_scale: " << ideal_contents_scale; 4952 << "ideal_contents_scale: " << ideal_contents_scale;
4925 } 4953 }
4926 4954
4927 expected_contents_scale = 1.f; 4955 expected_contents_scale = 1.f;
4928 for (int i = 30; i >= 1; --i) { 4956 for (int i = 30; i >= 1; --i) {
4929 float ideal_contents_scale = 0.1f * i - 1e-6; 4957 float ideal_contents_scale = 0.1f * i - 1e-6;
4930 switch (i) { 4958 switch (i) {
4931 // Scale 0.2. 4959 // Scale 0.2.
4932 case 2: 4960 case 2:
4933 expected_contents_scale = 0.5f; 4961 expected_contents_scale = 0.5f;
4934 break; 4962 break;
4935 // Scale 0.1. 4963 // Scale 0.1.
4936 case 1: 4964 case 1:
4937 expected_contents_scale = 0.25f; 4965 expected_contents_scale = 0.25f;
4938 break; 4966 break;
4939 } 4967 }
4940 SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale, 4968 SetupDrawPropertiesAndUpdateTiles(pending_layer_ptr, ideal_contents_scale,
4941 1.f, 1.f, 1.f, 1.f, false); 4969 1.f, 1.f, 1.f, 1.f, false);
4942 EXPECT_FLOAT_EQ(expected_contents_scale, 4970 EXPECT_FLOAT_EQ(expected_contents_scale,
4943 pending_layer_ptr->picture_layer_tiling_set() 4971 pending_layer_ptr->picture_layer_tiling_set()
4944 ->FindTilingWithResolution(HIGH_RESOLUTION) 4972 ->FindTilingWithResolution(HIGH_RESOLUTION)
4945 ->contents_scale()) 4973 ->contents_scale_key())
4946 << "ideal_contents_scale: " << ideal_contents_scale; 4974 << "ideal_contents_scale: " << ideal_contents_scale;
4947 } 4975 }
4948 } 4976 }
4949 4977
4950 } // namespace 4978 } // namespace
4951 } // namespace cc 4979 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/test/fake_picture_layer_tiling_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698