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 <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <utility> | 10 #include <utility> |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 active_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); | 131 active_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); |
132 pending_layer_->set_invalidation(invalidation); | 132 pending_layer_->set_invalidation(invalidation); |
133 for (size_t i = 0; i < pending_layer_->tilings()->num_tilings(); ++i) | 133 for (size_t i = 0; i < pending_layer_->tilings()->num_tilings(); ++i) |
134 pending_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); | 134 pending_layer_->tilings()->tiling_at(i)->CreateAllTilesForTesting(); |
135 } | 135 } |
136 | 136 |
137 void SetupPendingTree(scoped_refptr<PicturePileImpl> pile) { | 137 void SetupPendingTree(scoped_refptr<PicturePileImpl> pile) { |
138 host_impl_.CreatePendingTree(); | 138 host_impl_.CreatePendingTree(); |
139 host_impl_.pending_tree()->SetPageScaleFactorAndLimits(1.f, 0.25f, 100.f); | 139 host_impl_.pending_tree()->SetPageScaleFactorAndLimits(1.f, 0.25f, 100.f); |
140 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); | 140 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
| 141 // Clear recycled tree. |
| 142 pending_tree->DetachLayerTree(); |
141 | 143 |
142 // Steal from the recycled tree. | 144 scoped_ptr<FakePictureLayerImpl> pending_layer = |
143 scoped_ptr<LayerImpl> old_pending_root = pending_tree->DetachLayerTree(); | 145 FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); |
144 DCHECK_IMPLIES(old_pending_root, old_pending_root->id() == id_); | 146 pending_layer->SetDrawsContent(true); |
145 | |
146 scoped_ptr<FakePictureLayerImpl> pending_layer; | |
147 if (old_pending_root) { | |
148 pending_layer.reset( | |
149 static_cast<FakePictureLayerImpl*>(old_pending_root.release())); | |
150 pending_layer->SetPile(pile); | |
151 } else { | |
152 pending_layer = | |
153 FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); | |
154 pending_layer->SetDrawsContent(true); | |
155 } | |
156 // The bounds() just mirror the pile size. | |
157 pending_layer->SetBounds(pending_layer->pile()->tiling_size()); | |
158 pending_tree->SetRootLayer(pending_layer.Pass()); | 147 pending_tree->SetRootLayer(pending_layer.Pass()); |
159 | 148 |
160 pending_layer_ = static_cast<FakePictureLayerImpl*>( | 149 pending_layer_ = static_cast<FakePictureLayerImpl*>( |
161 host_impl_.pending_tree()->LayerById(id_)); | 150 host_impl_.pending_tree()->LayerById(id_)); |
162 pending_layer_->DoPostCommitInitializationIfNeeded(); | 151 pending_layer_->DoPostCommitInitializationIfNeeded(); |
163 } | 152 } |
164 | 153 |
165 void SetupDrawPropertiesAndUpdateTiles(FakePictureLayerImpl* layer, | 154 void SetupDrawPropertiesAndUpdateTiles(FakePictureLayerImpl* layer, |
166 float ideal_contents_scale, | 155 float ideal_contents_scale, |
167 float device_scale_factor, | 156 float device_scale_factor, |
(...skipping 1862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2030 host_impl_.ActivateSyncTree(); | 2019 host_impl_.ActivateSyncTree(); |
2031 | 2020 |
2032 active_layer_ = static_cast<FakePictureLayerImpl*>( | 2021 active_layer_ = static_cast<FakePictureLayerImpl*>( |
2033 host_impl_.active_tree()->LayerById(id_)); | 2022 host_impl_.active_tree()->LayerById(id_)); |
2034 | 2023 |
2035 EXPECT_EQ(0u, active_layer_->num_tilings()); | 2024 EXPECT_EQ(0u, active_layer_->num_tilings()); |
2036 EXPECT_EQ(raster_page_scale, active_layer_->raster_page_scale()); | 2025 EXPECT_EQ(raster_page_scale, active_layer_->raster_page_scale()); |
2037 EXPECT_FALSE(active_layer_->needs_post_commit_initialization()); | 2026 EXPECT_FALSE(active_layer_->needs_post_commit_initialization()); |
2038 } | 2027 } |
2039 | 2028 |
2040 TEST_F(PictureLayerImplTest, ShareTilesOnNextFrame) { | |
2041 SetupDefaultTrees(gfx::Size(1500, 1500)); | |
2042 | |
2043 PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f); | |
2044 gfx::Rect first_invalidate = tiling->TilingDataForTesting().TileBounds(0, 0); | |
2045 first_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), | |
2046 tiling->TilingDataForTesting().border_texels()); | |
2047 gfx::Rect second_invalidate = tiling->TilingDataForTesting().TileBounds(1, 1); | |
2048 second_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), | |
2049 tiling->TilingDataForTesting().border_texels()); | |
2050 | |
2051 // Make a pending tree with an invalidated raster tile 0,0. | |
2052 tiling->CreateAllTilesForTesting(); | |
2053 pending_layer_->set_invalidation(first_invalidate); | |
2054 | |
2055 // Activate and make a pending tree with an invalidated raster tile 1,1. | |
2056 ActivateTree(); | |
2057 | |
2058 host_impl_.CreatePendingTree(); | |
2059 pending_layer_ = static_cast<FakePictureLayerImpl*>( | |
2060 host_impl_.pending_tree()->root_layer()); | |
2061 pending_layer_->set_invalidation(second_invalidate); | |
2062 | |
2063 PictureLayerTiling* pending_tiling = pending_layer_->tilings()->tiling_at(0); | |
2064 PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(0); | |
2065 | |
2066 pending_tiling->CreateAllTilesForTesting(); | |
2067 | |
2068 // Tile 0,0 should be shared, but tile 1,1 should not be. | |
2069 EXPECT_EQ(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); | |
2070 EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0)); | |
2071 EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1)); | |
2072 EXPECT_NE(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1)); | |
2073 EXPECT_TRUE(pending_tiling->TileAt(0, 0)->is_shared()); | |
2074 EXPECT_TRUE(pending_tiling->TileAt(1, 0)->is_shared()); | |
2075 EXPECT_TRUE(pending_tiling->TileAt(0, 1)->is_shared()); | |
2076 EXPECT_FALSE(pending_tiling->TileAt(1, 1)->is_shared()); | |
2077 | |
2078 // Drop the tiles on the active tree and recreate them. The same tiles | |
2079 // should be shared or not. | |
2080 active_tiling->ComputeTilePriorityRects( | |
2081 ACTIVE_TREE, gfx::Rect(), 1.f, 1.0, Occlusion()); | |
2082 EXPECT_TRUE(active_tiling->AllTilesForTesting().empty()); | |
2083 active_tiling->CreateAllTilesForTesting(); | |
2084 | |
2085 // Tile 0,0 should be shared, but tile 1,1 should not be. | |
2086 EXPECT_EQ(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); | |
2087 EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0)); | |
2088 EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1)); | |
2089 EXPECT_NE(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1)); | |
2090 EXPECT_TRUE(pending_tiling->TileAt(0, 0)->is_shared()); | |
2091 EXPECT_TRUE(pending_tiling->TileAt(1, 0)->is_shared()); | |
2092 EXPECT_TRUE(pending_tiling->TileAt(0, 1)->is_shared()); | |
2093 EXPECT_FALSE(pending_tiling->TileAt(1, 1)->is_shared()); | |
2094 } | |
2095 | |
2096 TEST_F(PictureLayerImplTest, ShareTilesOnSync) { | 2029 TEST_F(PictureLayerImplTest, ShareTilesOnSync) { |
2097 SetupDefaultTrees(gfx::Size(1500, 1500)); | 2030 SetupDefaultTrees(gfx::Size(1500, 1500)); |
2098 AddDefaultTilingsWithInvalidation(gfx::Rect()); | 2031 AddDefaultTilingsWithInvalidation(gfx::Rect()); |
2099 | 2032 |
2100 host_impl_.ActivateSyncTree(); | 2033 host_impl_.ActivateSyncTree(); |
2101 host_impl_.CreatePendingTree(); | 2034 host_impl_.CreatePendingTree(); |
2102 active_layer_ = static_cast<FakePictureLayerImpl*>( | 2035 active_layer_ = static_cast<FakePictureLayerImpl*>( |
2103 host_impl_.active_tree()->LayerById(id_)); | 2036 host_impl_.active_tree()->LayerById(id_)); |
2104 | 2037 |
2105 // Force the active tree to sync to the pending tree "post-commit". | 2038 // Force the active tree to sync to the pending tree "post-commit". |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2308 | 2241 |
2309 pending_layer_->tilings()->RemoveAllTilings(); | 2242 pending_layer_->tilings()->RemoveAllTilings(); |
2310 ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 2243 ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
2311 | 2244 |
2312 // Now, set the bounds to be 1x1 (so that minimum contents scale becomes | 2245 // Now, set the bounds to be 1x1 (so that minimum contents scale becomes |
2313 // 1.0f). Note that we should also ensure that the pending layer needs post | 2246 // 1.0f). Note that we should also ensure that the pending layer needs post |
2314 // commit initialization, since this is what would happen during commit. In | 2247 // commit initialization, since this is what would happen during commit. In |
2315 // other words we want the pending layer to sync from the active layer. | 2248 // other words we want the pending layer to sync from the active layer. |
2316 pending_layer_->SetBounds(gfx::Size(1, 1)); | 2249 pending_layer_->SetBounds(gfx::Size(1, 1)); |
2317 pending_layer_->SetNeedsPostCommitInitialization(); | 2250 pending_layer_->SetNeedsPostCommitInitialization(); |
| 2251 pending_layer_->set_twin_layer(nullptr); |
| 2252 active_layer_->set_twin_layer(nullptr); |
2318 EXPECT_TRUE(pending_layer_->needs_post_commit_initialization()); | 2253 EXPECT_TRUE(pending_layer_->needs_post_commit_initialization()); |
2319 | 2254 |
2320 // Update the draw properties: sync from active tree should happen here. | 2255 // Update the draw properties: sync from active tree should happen here. |
2321 host_impl_.pending_tree()->UpdateDrawProperties(); | 2256 host_impl_.pending_tree()->UpdateDrawProperties(); |
2322 EXPECT_FALSE(pending_layer_->needs_post_commit_initialization()); | |
2323 | 2257 |
2324 // Another sanity check. | 2258 // Another sanity check. |
2325 ASSERT_EQ(1.f, pending_layer_->MinimumContentsScale()); | 2259 ASSERT_EQ(1.f, pending_layer_->MinimumContentsScale()); |
2326 | 2260 |
2327 // Now we should've synced 1.5f tiling, since that's the only one that doesn't | 2261 // Now we should've synced 1.5f tiling, since that's the only one that doesn't |
2328 // violate minimum contents scale. At the same time, we should've created a | 2262 // violate minimum contents scale. At the same time, we should've created a |
2329 // new high res tiling at scale 1.0f. | 2263 // new high res tiling at scale 1.0f. |
2330 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 2264 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); |
2331 ASSERT_TRUE(pending_layer_->tilings()->TilingAtScale(1.0f)); | 2265 ASSERT_TRUE(pending_layer_->tilings()->TilingAtScale(1.0f)); |
2332 EXPECT_EQ(HIGH_RESOLUTION, | 2266 EXPECT_EQ(HIGH_RESOLUTION, |
(...skipping 1869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4202 gfx::Rect(layer_bounds)); | 4136 gfx::Rect(layer_bounds)); |
4203 iter; | 4137 iter; |
4204 ++iter) { | 4138 ++iter) { |
4205 if (!*iter) | 4139 if (!*iter) |
4206 continue; | 4140 continue; |
4207 const Tile* tile = *iter; | 4141 const Tile* tile = *iter; |
4208 | 4142 |
4209 // All tiles are unoccluded on the pending tree. | 4143 // All tiles are unoccluded on the pending tree. |
4210 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); | 4144 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); |
4211 | 4145 |
4212 Tile* twin_tile = pending_layer_->GetPendingOrActiveTwinTiling(tiling) | 4146 Tile* twin_tile = |
4213 ->TileAt(iter.i(), iter.j()); | 4147 pending_layer_->GetTwinTiling(tiling)->TileAt(iter.i(), iter.j()); |
4214 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( | 4148 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( |
4215 tile->content_rect(), 1.0f / tile->contents_scale()); | 4149 tile->content_rect(), 1.0f / tile->contents_scale()); |
4216 | 4150 |
4217 if (scaled_content_rect.Intersects(invalidation_rect)) { | 4151 if (scaled_content_rect.Intersects(invalidation_rect)) { |
4218 // Tiles inside the invalidation rect are only on the pending tree. | 4152 // Tiles inside the invalidation rect are only on the pending tree. |
4219 EXPECT_NE(tile, twin_tile); | 4153 EXPECT_NE(tile, twin_tile); |
4220 | 4154 |
4221 // Unshared tiles should be unoccluded on the active tree by default. | 4155 // Unshared tiles should be unoccluded on the active tree by default. |
4222 EXPECT_FALSE(tile->is_occluded(ACTIVE_TREE)); | 4156 EXPECT_FALSE(tile->is_occluded(ACTIVE_TREE)); |
4223 } else { | 4157 } else { |
(...skipping 13 matching lines...) Expand all Loading... |
4237 for (PictureLayerTiling::CoverageIterator iter( | 4171 for (PictureLayerTiling::CoverageIterator iter( |
4238 tiling, | 4172 tiling, |
4239 active_layer_->contents_scale_x(), | 4173 active_layer_->contents_scale_x(), |
4240 gfx::Rect(layer_bounds)); | 4174 gfx::Rect(layer_bounds)); |
4241 iter; | 4175 iter; |
4242 ++iter) { | 4176 ++iter) { |
4243 if (!*iter) | 4177 if (!*iter) |
4244 continue; | 4178 continue; |
4245 const Tile* tile = *iter; | 4179 const Tile* tile = *iter; |
4246 | 4180 |
4247 Tile* twin_tile = active_layer_->GetPendingOrActiveTwinTiling(tiling) | 4181 Tile* twin_tile = |
4248 ->TileAt(iter.i(), iter.j()); | 4182 active_layer_->GetTwinTiling(tiling)->TileAt(iter.i(), iter.j()); |
4249 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( | 4183 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( |
4250 tile->content_rect(), 1.0f / tile->contents_scale()); | 4184 tile->content_rect(), 1.0f / tile->contents_scale()); |
4251 | 4185 |
4252 // Since we've already checked the shared tiles, only consider tiles in | 4186 // Since we've already checked the shared tiles, only consider tiles in |
4253 // the invalidation rect. | 4187 // the invalidation rect. |
4254 if (scaled_content_rect.Intersects(invalidation_rect)) { | 4188 if (scaled_content_rect.Intersects(invalidation_rect)) { |
4255 // Tiles inside the invalidation rect are only on the active tree. | 4189 // Tiles inside the invalidation rect are only on the active tree. |
4256 EXPECT_NE(tile, twin_tile); | 4190 EXPECT_NE(tile, twin_tile); |
4257 | 4191 |
4258 // Unshared tiles should be unoccluded on the pending tree by default. | 4192 // Unshared tiles should be unoccluded on the pending tree by default. |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4415 } | 4349 } |
4416 | 4350 |
4417 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 4351 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
4418 | 4352 |
4419 VerifyEvictionConsidersOcclusion(pending_layer_, | 4353 VerifyEvictionConsidersOcclusion(pending_layer_, |
4420 total_expected_occluded_tile_count); | 4354 total_expected_occluded_tile_count); |
4421 VerifyEvictionConsidersOcclusion(active_layer_, | 4355 VerifyEvictionConsidersOcclusion(active_layer_, |
4422 total_expected_occluded_tile_count); | 4356 total_expected_occluded_tile_count); |
4423 } | 4357 } |
4424 | 4358 |
4425 TEST_F(PictureLayerImplTest, PendingOrActiveTwinLayer) { | |
4426 gfx::Size tile_size(102, 102); | |
4427 gfx::Size layer_bounds(1000, 1000); | |
4428 | |
4429 scoped_refptr<FakePicturePileImpl> pile = | |
4430 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | |
4431 SetupPendingTree(pile); | |
4432 EXPECT_FALSE(pending_layer_->GetPendingOrActiveTwinLayer()); | |
4433 | |
4434 ActivateTree(); | |
4435 EXPECT_FALSE(active_layer_->GetPendingOrActiveTwinLayer()); | |
4436 | |
4437 SetupPendingTree(pile); | |
4438 EXPECT_TRUE(pending_layer_->GetPendingOrActiveTwinLayer()); | |
4439 EXPECT_TRUE(active_layer_->GetPendingOrActiveTwinLayer()); | |
4440 EXPECT_EQ(pending_layer_, active_layer_->GetPendingOrActiveTwinLayer()); | |
4441 EXPECT_EQ(active_layer_, pending_layer_->GetPendingOrActiveTwinLayer()); | |
4442 | |
4443 ActivateTree(); | |
4444 EXPECT_FALSE(active_layer_->GetPendingOrActiveTwinLayer()); | |
4445 | |
4446 // Make an empty pending tree. | |
4447 host_impl_.CreatePendingTree(); | |
4448 host_impl_.pending_tree()->DetachLayerTree(); | |
4449 EXPECT_FALSE(active_layer_->GetPendingOrActiveTwinLayer()); | |
4450 } | |
4451 | |
4452 TEST_F(PictureLayerImplTest, RecycledTwinLayer) { | 4359 TEST_F(PictureLayerImplTest, RecycledTwinLayer) { |
4453 gfx::Size tile_size(102, 102); | 4360 gfx::Size tile_size(102, 102); |
4454 gfx::Size layer_bounds(1000, 1000); | 4361 gfx::Size layer_bounds(1000, 1000); |
4455 | 4362 |
4456 scoped_refptr<FakePicturePileImpl> pile = | 4363 scoped_refptr<FakePicturePileImpl> pile = |
4457 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 4364 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
4458 SetupPendingTree(pile); | 4365 SetupPendingTree(pile); |
4459 EXPECT_FALSE(pending_layer_->GetRecycledTwinLayer()); | 4366 EXPECT_FALSE(pending_layer_->GetRecycledTwinLayer()); |
4460 | 4367 |
4461 ActivateTree(); | 4368 ActivateTree(); |
4462 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); | 4369 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); |
4463 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); | 4370 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); |
4464 | 4371 |
4465 SetupPendingTree(pile); | 4372 SetupPendingTree(pile); |
4466 EXPECT_FALSE(pending_layer_->GetRecycledTwinLayer()); | 4373 EXPECT_FALSE(pending_layer_->GetRecycledTwinLayer()); |
4467 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); | 4374 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); |
4468 | 4375 |
4469 ActivateTree(); | 4376 ActivateTree(); |
4470 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); | 4377 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); |
4471 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); | 4378 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); |
4472 | 4379 |
4473 // Make an empty pending tree. | 4380 host_impl_.ResetRecycleTreeForTesting(); |
4474 host_impl_.CreatePendingTree(); | |
4475 host_impl_.pending_tree()->DetachLayerTree(); | |
4476 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); | 4381 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); |
4477 } | 4382 } |
4478 | 4383 |
4479 void PictureLayerImplTest::TestQuadsForSolidColor(bool test_for_solid) { | 4384 void PictureLayerImplTest::TestQuadsForSolidColor(bool test_for_solid) { |
4480 base::TimeTicks time_ticks; | 4385 base::TimeTicks time_ticks; |
4481 time_ticks += base::TimeDelta::FromMilliseconds(1); | 4386 time_ticks += base::TimeDelta::FromMilliseconds(1); |
4482 host_impl_.SetCurrentBeginFrameArgs( | 4387 host_impl_.SetCurrentBeginFrameArgs( |
4483 CreateBeginFrameArgsForTesting(time_ticks)); | 4388 CreateBeginFrameArgsForTesting(time_ticks)); |
4484 | 4389 |
4485 gfx::Size tile_size(100, 100); | 4390 gfx::Size tile_size(100, 100); |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4742 result = layer->CalculateTileSize(gfx::Size(447, 400)); | 4647 result = layer->CalculateTileSize(gfx::Size(447, 400)); |
4743 EXPECT_EQ(result.width(), 448); | 4648 EXPECT_EQ(result.width(), 448); |
4744 EXPECT_EQ(result.height(), 448); | 4649 EXPECT_EQ(result.height(), 448); |
4745 result = layer->CalculateTileSize(gfx::Size(500, 499)); | 4650 result = layer->CalculateTileSize(gfx::Size(500, 499)); |
4746 EXPECT_EQ(result.width(), 512); | 4651 EXPECT_EQ(result.width(), 512); |
4747 EXPECT_EQ(result.height(), 500 + 2); | 4652 EXPECT_EQ(result.height(), 500 + 2); |
4748 } | 4653 } |
4749 | 4654 |
4750 } // namespace | 4655 } // namespace |
4751 } // namespace cc | 4656 } // namespace cc |
OLD | NEW |