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