Index: cc/layers/picture_layer_impl_unittest.cc |
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc |
index af9ee2d89742ac6b9f8fa886acbd87f701df11b7..7ab089dc714a4479731ac53313cb8344a2c653be 100644 |
--- a/cc/layers/picture_layer_impl_unittest.cc |
+++ b/cc/layers/picture_layer_impl_unittest.cc |
@@ -26,6 +26,7 @@ |
#include "cc/trees/layer_tree_impl.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/gfx/rect_conversions.h" |
+#include "ui/gfx/size_conversions.h" |
namespace cc { |
namespace { |
@@ -139,6 +140,23 @@ class PictureLayerImplTest : public testing::Test { |
pending_layer_->DoPostCommitInitializationIfNeeded(); |
} |
+ void SetupDrawPropertiesAndManageTilings( |
+ FakePictureLayerImpl* layer, |
+ float ideal_contents_scale, |
+ float device_scale_factor, |
+ float page_scale_factor, |
+ float maximum_animation_contents_scale, |
+ bool animating_transform_to_screen) { |
+ layer->draw_properties().ideal_contents_scale = ideal_contents_scale; |
+ layer->draw_properties().device_scale_factor = device_scale_factor; |
+ layer->draw_properties().page_scale_factor = page_scale_factor; |
+ layer->draw_properties().maximum_animation_contents_scale = |
+ maximum_animation_contents_scale; |
+ layer->draw_properties().screen_space_transform_is_animating = |
+ animating_transform_to_screen; |
+ layer->ScaleAndManageTilings(animating_transform_to_screen, |
+ maximum_animation_contents_scale); |
+ } |
static void VerifyAllTilesExistAndHavePile( |
const PictureLayerTiling* tiling, |
PicturePileImpl* pile) { |
@@ -156,24 +174,19 @@ class PictureLayerImplTest : public testing::Test { |
float page_scale_factor, |
float maximum_animation_contents_scale, |
bool animating_transform) { |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- pending_layer_->CalculateContentsScale(contents_scale, |
- device_scale_factor, |
- page_scale_factor, |
- maximum_animation_contents_scale, |
- animating_transform, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
- active_layer_->CalculateContentsScale(contents_scale, |
- device_scale_factor, |
- page_scale_factor, |
- maximum_animation_contents_scale, |
- animating_transform, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ contents_scale, |
+ device_scale_factor, |
+ page_scale_factor, |
+ maximum_animation_contents_scale, |
+ animating_transform); |
+ |
+ SetupDrawPropertiesAndManageTilings(active_layer_, |
+ contents_scale, |
+ device_scale_factor, |
+ page_scale_factor, |
+ maximum_animation_contents_scale, |
+ animating_transform); |
} |
void ResetTilingsAndRasterScales() { |
@@ -210,16 +223,8 @@ class PictureLayerImplTest : public testing::Test { |
SetupTrees(pending_pile, active_pile); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
// Add 1x1 rects at the centers of each tile, then re-record pile contents |
active_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
@@ -314,27 +319,12 @@ TEST_F(PictureLayerImplTest, TileManagerRegisterUnregister) { |
EXPECT_EQ(0u, paired_layers.size()); |
// Update tile priorities will force the layer to register itself. |
- float dummy_contents_scale_x; |
- float dummy_contents_scale_y; |
- gfx::Size dummy_content_bounds; |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
active_layer_->UpdateTilePriorities(); |
host_impl_.pending_tree()->UpdateDrawProperties(); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
pending_layer_->UpdateTilePriorities(); |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
@@ -352,24 +342,12 @@ TEST_F(PictureLayerImplTest, TileManagerRegisterUnregister) { |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
EXPECT_EQ(0u, paired_layers.size()); |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
active_layer_->UpdateTilePriorities(); |
host_impl_.pending_tree()->UpdateDrawProperties(); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
pending_layer_->UpdateTilePriorities(); |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
@@ -394,17 +372,7 @@ TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
Region invalidation; |
AddDefaultTilingsWithInvalidation(invalidation); |
- float dummy_contents_scale_x; |
- float dummy_contents_scale_y; |
- gfx::Size dummy_content_bounds; |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
// UpdateTilePriorities with valid viewport. Should update tile viewport. |
bool valid_for_tile_management = true; |
@@ -661,19 +629,10 @@ TEST_F(PictureLayerImplTest, ManageTilingsWithNoRecording) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
} |
@@ -687,23 +646,18 @@ TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
EXPECT_LT(low_res_factor, 1.f); |
- pending_layer_->CalculateContentsScale(6.f, // ideal contents scale |
- 3.f, // device scale |
- 2.f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 6.f, // ideal contents scale |
+ 3.f, // device scale |
+ 2.f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(6.f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
@@ -711,14 +665,12 @@ TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { |
pending_layer_->tilings()->tiling_at(1)->contents_scale()); |
// If we change the page scale factor, then we should get new tilings. |
- pending_layer_->CalculateContentsScale(6.6f, // ideal contents scale |
- 3.f, // device scale |
- 2.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 6.6f, // ideal contents scale |
+ 3.f, // device scale |
+ 2.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(6.6f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
@@ -726,14 +678,12 @@ TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { |
pending_layer_->tilings()->tiling_at(2)->contents_scale()); |
// If we change the device scale factor, then we should get new tilings. |
- pending_layer_->CalculateContentsScale(7.26f, // ideal contents scale |
- 3.3f, // device scale |
- 2.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 7.26f, // ideal contents scale |
+ 3.3f, // device scale |
+ 2.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(7.26f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
@@ -742,14 +692,12 @@ TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { |
// If we change the device scale factor, but end up at the same total scale |
// factor somehow, then we don't get new tilings. |
- pending_layer_->CalculateContentsScale(7.26f, // ideal contents scale |
- 2.2f, // device scale |
- 3.3f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 7.26f, // ideal contents scale |
+ 2.2f, // device scale |
+ 3.3f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(7.26f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
@@ -777,18 +725,14 @@ TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { |
float device_scale = 1.7f; |
float page_scale = 3.2f; |
float maximum_animation_scale = 1.f; |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
SetupPendingTree(valid_pile); |
- pending_layer_->CalculateContentsScale(high_res_scale, |
- device_scale, |
- page_scale, |
- maximum_animation_scale, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ high_res_scale, |
+ device_scale, |
+ page_scale, |
+ maximum_animation_scale, |
+ false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(high_res_scale, |
pending_layer_->HighResTiling()->contents_scale()); |
@@ -797,37 +741,31 @@ TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { |
ActivateTree(); |
SetupPendingTree(empty_pile); |
- pending_layer_->CalculateContentsScale(high_res_scale, |
- device_scale, |
- page_scale, |
- maximum_animation_scale, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ high_res_scale, |
+ device_scale, |
+ page_scale, |
+ maximum_animation_scale, |
+ false); |
ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
ActivateTree(); |
- active_layer_->CalculateContentsScale(high_res_scale, |
- device_scale, |
- page_scale, |
- maximum_animation_scale, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, |
+ high_res_scale, |
+ device_scale, |
+ page_scale, |
+ maximum_animation_scale, |
+ false); |
ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); |
SetupPendingTree(valid_pile); |
- pending_layer_->CalculateContentsScale(high_res_scale, |
- device_scale, |
- page_scale, |
- maximum_animation_scale, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ high_res_scale, |
+ device_scale, |
+ page_scale, |
+ maximum_animation_scale, |
+ false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(high_res_scale, |
@@ -961,8 +899,6 @@ TEST_F(PictureLayerImplTest, CleanUpTilings) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
std::vector<PictureLayerTiling*> used_tilings; |
SetupTrees(pending_pile, active_pile); |
@@ -1036,14 +972,8 @@ TEST_F(PictureLayerImplTest, CleanUpTilings) { |
ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); |
// Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. |
- active_layer_->CalculateContentsScale(1.1f, |
- device_scale, |
- page_scale, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ active_layer_, 1.1f, device_scale, page_scale, 1.f, false); |
// Because the pending layer's ideal scale is still 1.0, our tilings fall |
// in the range [1.0,1.2] and are kept. |
@@ -1053,14 +983,8 @@ TEST_F(PictureLayerImplTest, CleanUpTilings) { |
// Move the ideal scale on the pending layer to 1.1 as well. Our target stays |
// 1.2 still. |
- pending_layer_->CalculateContentsScale(1.1f, |
- device_scale, |
- page_scale, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.1f, device_scale, page_scale, 1.f, false); |
// Our 1.0 tiling now falls outside the range between our ideal scale and our |
// target raster scale. But it is in our used tilings set, so nothing is |
@@ -1214,20 +1138,15 @@ TEST_F(PictureLayerImplTest, ReleaseResources) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
- pending_layer_->CalculateContentsScale(1.3f, // ideal contents scale |
- 2.7f, // device scale |
- 3.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 1.3f, // ideal contents scale |
+ 2.7f, // device scale |
+ 3.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
// All tilings should be removed when losing output surface. |
@@ -1237,14 +1156,12 @@ TEST_F(PictureLayerImplTest, ReleaseResources) { |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
// This should create new tilings. |
- pending_layer_->CalculateContentsScale(1.3f, // ideal contents scale |
- 2.7f, // device scale |
- 3.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 1.3f, // ideal contents scale |
+ 2.7f, // device scale |
+ 3.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
} |
@@ -1258,20 +1175,11 @@ TEST_F(PictureLayerImplTest, ClampTilesToToMaxTileSize) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
@@ -1294,14 +1202,8 @@ TEST_F(PictureLayerImplTest, ClampTilesToToMaxTileSize) { |
host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( |
context.Pass()).PassAs<OutputSurface>()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
@@ -1322,20 +1224,11 @@ TEST_F(PictureLayerImplTest, ClampSingleTileToToMaxTileSize) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); |
pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
@@ -1358,14 +1251,8 @@ TEST_F(PictureLayerImplTest, ClampSingleTileToToMaxTileSize) { |
host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( |
context.Pass()).PassAs<OutputSurface>()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); |
pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
@@ -1394,7 +1281,6 @@ TEST_F(PictureLayerImplTest, DisallowTileDrawQuads) { |
SetupTrees(pending_pile, active_pile); |
- active_layer_->SetContentBounds(layer_bounds); |
active_layer_->draw_properties().visible_content_rect = |
gfx::Rect(layer_bounds); |
@@ -1759,17 +1645,8 @@ TEST_F(PictureLayerImplTest, HighResCreatedWhenBoundsShrink) { |
host_impl_.active_tree()->UpdateDrawProperties(); |
EXPECT_FALSE(host_impl_.active_tree()->needs_update_draw_properties()); |
- float result_scale_x; |
- float result_scale_y; |
- gfx::Size result_bounds; |
- active_layer_->CalculateContentsScale(0.5f, |
- 0.5f, |
- 0.5f, |
- 0.5f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ active_layer_, 0.5f, 0.5f, 0.5f, 0.5f, false); |
active_layer_->tilings()->RemoveAllTilings(); |
PictureLayerTiling* tiling = active_layer_->tilings()->AddTiling(0.5f); |
active_layer_->tilings()->AddTiling(1.5f); |
@@ -1812,20 +1689,12 @@ TEST_F(PictureLayerImplTest, NoLowResTilingWithGpuRasterization) { |
gfx::Size default_tile_size(host_impl_.settings().default_tile_size); |
gfx::Size layer_bounds(default_tile_size.width() * 4, |
default_tile_size.height() * 4); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
SetupDefaultTrees(layer_bounds); |
EXPECT_FALSE(host_impl_.use_gpu_rasterization()); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
// Should have a low-res and a high-res tiling. |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
@@ -1833,14 +1702,9 @@ TEST_F(PictureLayerImplTest, NoLowResTilingWithGpuRasterization) { |
host_impl_.SetUseGpuRasterization(true); |
EXPECT_TRUE(host_impl_.use_gpu_rasterization()); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
+ |
// Should only have the high-res tiling. |
ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
} |
@@ -2466,63 +2330,52 @@ TEST_F(NoLowResPictureLayerImplTest, ManageTilingsCreatesTilings) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
EXPECT_LT(low_res_factor, 1.f); |
- pending_layer_->CalculateContentsScale(6.f, // ideal contents scale |
- 3.f, // device scale |
- 2.f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 6.f, // ideal contents scale |
+ 3.f, // device scale |
+ 2.f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(6.f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
// If we change the page scale factor, then we should get new tilings. |
- pending_layer_->CalculateContentsScale(6.6f, // ideal contents scale |
- 3.f, // device scale |
- 2.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 6.6f, // ideal contents scale |
+ 3.f, // device scale |
+ 2.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(6.6f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
// If we change the device scale factor, then we should get new tilings. |
- pending_layer_->CalculateContentsScale(7.26f, // ideal contents scale |
- 3.3f, // device scale |
- 2.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 7.26f, // ideal contents scale |
+ 3.3f, // device scale |
+ 2.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(7.26f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
// If we change the device scale factor, but end up at the same total scale |
// factor somehow, then we don't get new tilings. |
- pending_layer_->CalculateContentsScale(7.26f, // ideal contents scale |
- 2.2f, // device scale |
- 3.3f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 7.26f, // ideal contents scale |
+ 2.2f, // device scale |
+ 3.3f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); |
EXPECT_FLOAT_EQ(7.26f, |
pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
@@ -2617,27 +2470,11 @@ TEST_F(NoLowResPictureLayerImplTest, TileManagerRegisterUnregister) { |
EXPECT_EQ(0u, paired_layers.size()); |
// Update tile priorities will force the layer to register itself. |
- float dummy_contents_scale_x; |
- float dummy_contents_scale_y; |
- gfx::Size dummy_content_bounds; |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
active_layer_->UpdateTilePriorities(); |
host_impl_.pending_tree()->UpdateDrawProperties(); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
pending_layer_->UpdateTilePriorities(); |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
@@ -2655,24 +2492,11 @@ TEST_F(NoLowResPictureLayerImplTest, TileManagerRegisterUnregister) { |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
EXPECT_EQ(0u, paired_layers.size()); |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
active_layer_->UpdateTilePriorities(); |
host_impl_.pending_tree()->UpdateDrawProperties(); |
- pending_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.f, 1.f, 1.f, 1.f, false); |
pending_layer_->UpdateTilePriorities(); |
host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); |
@@ -2697,17 +2521,7 @@ TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
Region invalidation; |
AddDefaultTilingsWithInvalidation(invalidation); |
- float dummy_contents_scale_x; |
- float dummy_contents_scale_y; |
- gfx::Size dummy_content_bounds; |
- active_layer_->CalculateContentsScale(1.f, |
- 1.f, |
- 1.f, |
- 1.f, |
- false, |
- &dummy_contents_scale_x, |
- &dummy_contents_scale_y, |
- &dummy_content_bounds); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
// UpdateTilePriorities with valid viewport. Should update tile viewport. |
bool valid_for_tile_management = true; |
@@ -2806,8 +2620,6 @@ TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
std::vector<PictureLayerTiling*> used_tilings; |
SetupTrees(pending_pile, active_pile); |
@@ -2876,14 +2688,8 @@ TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
// Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. |
- active_layer_->CalculateContentsScale(1.1f, |
- device_scale, |
- page_scale, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ active_layer_, 1.1f, device_scale, page_scale, 1.f, false); |
// Because the pending layer's ideal scale is still 1.0, our tilings fall |
// in the range [1.0,1.2] and are kept. |
@@ -2893,14 +2699,8 @@ TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
// Move the ideal scale on the pending layer to 1.1 as well. Our target stays |
// 1.2 still. |
- pending_layer_->CalculateContentsScale(1.1f, |
- device_scale, |
- page_scale, |
- 1.f, |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 1.1f, device_scale, page_scale, 1.f, false); |
// Our 1.0 tiling now falls outside the range between our ideal scale and our |
// target raster scale. But it is in our used tilings set, so nothing is |
@@ -2926,8 +2726,6 @@ TEST_F(PictureLayerImplTest, ScaleCollision) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
std::vector<PictureLayerTiling*> used_tilings; |
SetupTrees(pending_pile, active_pile); |
@@ -2943,22 +2741,18 @@ TEST_F(PictureLayerImplTest, ScaleCollision) { |
float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
EXPECT_LT(low_res_factor, 1.f); |
- pending_layer_->CalculateContentsScale(pending_contents_scale, |
- device_scale_factor, |
- page_scale_factor, |
- maximum_animation_contents_scale, |
- animating_transform, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
- active_layer_->CalculateContentsScale(active_contents_scale, |
- device_scale_factor, |
- page_scale_factor, |
- maximum_animation_contents_scale, |
- animating_transform, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ pending_contents_scale, |
+ device_scale_factor, |
+ page_scale_factor, |
+ maximum_animation_contents_scale, |
+ animating_transform); |
+ SetupDrawPropertiesAndManageTilings(active_layer_, |
+ active_contents_scale, |
+ device_scale_factor, |
+ page_scale_factor, |
+ maximum_animation_contents_scale, |
+ animating_transform); |
ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); |
ASSERT_EQ(4u, active_layer_->tilings()->num_tilings()); |
@@ -3006,20 +2800,15 @@ TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { |
scoped_refptr<FakePicturePileImpl> active_pile = |
FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
- float result_scale_x, result_scale_y; |
- gfx::Size result_bounds; |
- |
SetupTrees(pending_pile, active_pile); |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
- pending_layer_->CalculateContentsScale(1.3f, // ideal contents scale |
- 2.7f, // device scale |
- 3.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 1.3f, // ideal contents scale |
+ 2.7f, // device scale |
+ 3.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
// All tilings should be removed when losing output surface. |
@@ -3029,16 +2818,61 @@ TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { |
EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
// This should create new tilings. |
- pending_layer_->CalculateContentsScale(1.3f, // ideal contents scale |
- 2.7f, // device scale |
- 3.2f, // page scale |
- 1.f, // maximum animation scale |
- false, |
- &result_scale_x, |
- &result_scale_y, |
- &result_bounds); |
+ SetupDrawPropertiesAndManageTilings(pending_layer_, |
+ 1.3f, // ideal contents scale |
+ 2.7f, // device scale |
+ 3.2f, // page scale |
+ 1.f, // maximum animation scale |
+ false); |
EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
} |
+TEST_F(PictureLayerImplTest, SharedQuadStateContainsMaxTilingScale) { |
+ MockQuadCuller quad_culler; |
+ |
+ gfx::Size tile_size(400, 400); |
+ gfx::Size layer_bounds(1000, 2000); |
+ |
+ scoped_refptr<FakePicturePileImpl> pending_pile = |
+ FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ scoped_refptr<FakePicturePileImpl> active_pile = |
+ FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
+ |
+ SetupTrees(pending_pile, active_pile); |
+ |
+ SetupDrawPropertiesAndManageTilings( |
+ pending_layer_, 2.5f, 1.f, 1.f, 1.f, false); |
+ host_impl_.pending_tree()->UpdateDrawProperties(); |
+ |
+ active_layer_->draw_properties().visible_content_rect = |
+ gfx::Rect(layer_bounds); |
+ host_impl_.active_tree()->UpdateDrawProperties(); |
+ |
+ float max_contents_scale = active_layer_->MaximumTilingContentsScale(); |
+ gfx::Transform scaled_draw_transform = active_layer_->draw_transform(); |
+ scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale, |
+ SK_MScalar1 / max_contents_scale); |
+ |
+ AppendQuadsData data; |
+ active_layer_->AppendQuads(&quad_culler, &data); |
+ |
+ // SharedQuadState should have be of size 1, as we are doing AppenQuad once. |
+ EXPECT_EQ(1u, quad_culler.shared_quad_state_list().size()); |
+ // The content_to_target_transform should be scaled by the |
+ // MaximumTilingContentsScale on the layer. |
+ EXPECT_EQ(scaled_draw_transform.ToString(), |
+ quad_culler.shared_quad_state_list()[0] |
+ ->content_to_target_transform.ToString()); |
+ // The content_bounds should be scaled by the |
+ // MaximumTilingContentsScale on the layer. |
+ EXPECT_EQ(gfx::Size(2500u, 5000u).ToString(), |
+ quad_culler.shared_quad_state_list()[0]->content_bounds.ToString()); |
+ // The visible_content_rect should be scaled by the |
+ // MaximumTilingContentsScale on the layer. |
+ EXPECT_EQ( |
+ gfx::Rect(0u, 0u, 2500u, 5000u).ToString(), |
+ quad_culler.shared_quad_state_list()[0]->visible_content_rect.ToString()); |
+} |
+ |
} // namespace |
} // namespace cc |