| 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> | 
| 11 | 11 | 
| 12 #include "cc/layers/append_quads_data.h" | 12 #include "cc/layers/append_quads_data.h" | 
| 13 #include "cc/layers/picture_layer.h" | 13 #include "cc/layers/picture_layer.h" | 
| 14 #include "cc/test/fake_content_layer_client.h" | 14 #include "cc/test/fake_content_layer_client.h" | 
| 15 #include "cc/test/fake_impl_proxy.h" | 15 #include "cc/test/fake_impl_proxy.h" | 
| 16 #include "cc/test/fake_layer_tree_host_impl.h" | 16 #include "cc/test/fake_layer_tree_host_impl.h" | 
| 17 #include "cc/test/fake_output_surface.h" | 17 #include "cc/test/fake_output_surface.h" | 
| 18 #include "cc/test/fake_picture_layer_impl.h" | 18 #include "cc/test/fake_picture_layer_impl.h" | 
| 19 #include "cc/test/fake_picture_pile_impl.h" | 19 #include "cc/test/fake_picture_pile_impl.h" | 
| 20 #include "cc/test/geometry_test_utils.h" | 20 #include "cc/test/geometry_test_utils.h" | 
| 21 #include "cc/test/impl_side_painting_settings.h" | 21 #include "cc/test/impl_side_painting_settings.h" | 
| 22 #include "cc/test/layer_test_common.h" | 22 #include "cc/test/layer_test_common.h" | 
| 23 #include "cc/test/mock_quad_culler.h" | 23 #include "cc/test/mock_quad_culler.h" | 
| 24 #include "cc/test/test_shared_bitmap_manager.h" | 24 #include "cc/test/test_shared_bitmap_manager.h" | 
| 25 #include "cc/test/test_web_graphics_context_3d.h" | 25 #include "cc/test/test_web_graphics_context_3d.h" | 
| 26 #include "cc/trees/layer_tree_impl.h" | 26 #include "cc/trees/layer_tree_impl.h" | 
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" | 
| 28 #include "ui/gfx/rect_conversions.h" | 28 #include "ui/gfx/rect_conversions.h" | 
|  | 29 #include "ui/gfx/size_conversions.h" | 
| 29 | 30 | 
| 30 namespace cc { | 31 namespace cc { | 
| 31 namespace { | 32 namespace { | 
| 32 | 33 | 
| 33 class MockCanvas : public SkCanvas { | 34 class MockCanvas : public SkCanvas { | 
| 34  public: | 35  public: | 
| 35   explicit MockCanvas(int w, int h) : SkCanvas(w, h) {} | 36   explicit MockCanvas(int w, int h) : SkCanvas(w, h) {} | 
| 36 | 37 | 
| 37   virtual void drawRect(const SkRect& rect, const SkPaint& paint) OVERRIDE { | 38   virtual void drawRect(const SkRect& rect, const SkPaint& paint) OVERRIDE { | 
| 38     // Capture calls before SkCanvas quickReject() kicks in. | 39     // Capture calls before SkCanvas quickReject() kicks in. | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 132     scoped_ptr<FakePictureLayerImpl> pending_layer = | 133     scoped_ptr<FakePictureLayerImpl> pending_layer = | 
| 133         FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); | 134         FakePictureLayerImpl::CreateWithPile(pending_tree, id_, pile); | 
| 134     pending_layer->SetDrawsContent(true); | 135     pending_layer->SetDrawsContent(true); | 
| 135     pending_tree->SetRootLayer(pending_layer.PassAs<LayerImpl>()); | 136     pending_tree->SetRootLayer(pending_layer.PassAs<LayerImpl>()); | 
| 136 | 137 | 
| 137     pending_layer_ = static_cast<FakePictureLayerImpl*>( | 138     pending_layer_ = static_cast<FakePictureLayerImpl*>( | 
| 138         host_impl_.pending_tree()->LayerById(id_)); | 139         host_impl_.pending_tree()->LayerById(id_)); | 
| 139     pending_layer_->DoPostCommitInitializationIfNeeded(); | 140     pending_layer_->DoPostCommitInitializationIfNeeded(); | 
| 140   } | 141   } | 
| 141 | 142 | 
|  | 143   void SetupDrawPropertiesAndManageTilings( | 
|  | 144       FakePictureLayerImpl* layer, | 
|  | 145       float ideal_contents_scale, | 
|  | 146       float device_scale_factor, | 
|  | 147       float page_scale_factor, | 
|  | 148       float maximum_animation_contents_scale, | 
|  | 149       bool animating_transform_to_screen) { | 
|  | 150     layer->draw_properties().ideal_contents_scale = ideal_contents_scale; | 
|  | 151     layer->draw_properties().device_scale_factor = device_scale_factor; | 
|  | 152     layer->draw_properties().page_scale_factor = page_scale_factor; | 
|  | 153     layer->draw_properties().maximum_animation_contents_scale = | 
|  | 154         maximum_animation_contents_scale; | 
|  | 155     layer->draw_properties().screen_space_transform_is_animating = | 
|  | 156         animating_transform_to_screen; | 
|  | 157     layer->ScaleAndManageTilings(animating_transform_to_screen, | 
|  | 158                                  maximum_animation_contents_scale); | 
|  | 159   } | 
| 142   static void VerifyAllTilesExistAndHavePile( | 160   static void VerifyAllTilesExistAndHavePile( | 
| 143       const PictureLayerTiling* tiling, | 161       const PictureLayerTiling* tiling, | 
| 144       PicturePileImpl* pile) { | 162       PicturePileImpl* pile) { | 
| 145     for (PictureLayerTiling::CoverageIterator iter( | 163     for (PictureLayerTiling::CoverageIterator iter( | 
| 146              tiling, tiling->contents_scale(), tiling->TilingRect()); | 164              tiling, tiling->contents_scale(), tiling->TilingRect()); | 
| 147          iter; | 165          iter; | 
| 148          ++iter) { | 166          ++iter) { | 
| 149       EXPECT_TRUE(*iter); | 167       EXPECT_TRUE(*iter); | 
| 150       EXPECT_EQ(pile, iter->picture_pile()); | 168       EXPECT_EQ(pile, iter->picture_pile()); | 
| 151     } | 169     } | 
| 152   } | 170   } | 
| 153 | 171 | 
| 154   void SetContentsScaleOnBothLayers(float contents_scale, | 172   void SetContentsScaleOnBothLayers(float contents_scale, | 
| 155                                     float device_scale_factor, | 173                                     float device_scale_factor, | 
| 156                                     float page_scale_factor, | 174                                     float page_scale_factor, | 
| 157                                     float maximum_animation_contents_scale, | 175                                     float maximum_animation_contents_scale, | 
| 158                                     bool animating_transform) { | 176                                     bool animating_transform) { | 
| 159     float result_scale_x, result_scale_y; | 177     SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 160     gfx::Size result_bounds; | 178                                         contents_scale, | 
| 161     pending_layer_->CalculateContentsScale(contents_scale, | 179                                         device_scale_factor, | 
| 162                                            device_scale_factor, | 180                                         page_scale_factor, | 
| 163                                            page_scale_factor, | 181                                         maximum_animation_contents_scale, | 
| 164                                            maximum_animation_contents_scale, | 182                                         animating_transform); | 
| 165                                            animating_transform, | 183 | 
| 166                                            &result_scale_x, | 184     SetupDrawPropertiesAndManageTilings(active_layer_, | 
| 167                                            &result_scale_y, | 185                                         contents_scale, | 
| 168                                            &result_bounds); | 186                                         device_scale_factor, | 
| 169     active_layer_->CalculateContentsScale(contents_scale, | 187                                         page_scale_factor, | 
| 170                                           device_scale_factor, | 188                                         maximum_animation_contents_scale, | 
| 171                                           page_scale_factor, | 189                                         animating_transform); | 
| 172                                           maximum_animation_contents_scale, |  | 
| 173                                           animating_transform, |  | 
| 174                                           &result_scale_x, |  | 
| 175                                           &result_scale_y, |  | 
| 176                                           &result_bounds); |  | 
| 177   } | 190   } | 
| 178 | 191 | 
| 179   void ResetTilingsAndRasterScales() { | 192   void ResetTilingsAndRasterScales() { | 
| 180     pending_layer_->ReleaseResources(); | 193     pending_layer_->ReleaseResources(); | 
| 181     active_layer_->ReleaseResources(); | 194     active_layer_->ReleaseResources(); | 
| 182   } | 195   } | 
| 183 | 196 | 
| 184   void AssertAllTilesRequired(PictureLayerTiling* tiling) { | 197   void AssertAllTilesRequired(PictureLayerTiling* tiling) { | 
| 185     std::vector<Tile*> tiles = tiling->AllTilesForTesting(); | 198     std::vector<Tile*> tiles = tiling->AllTilesForTesting(); | 
| 186     for (size_t i = 0; i < tiles.size(); ++i) | 199     for (size_t i = 0; i < tiles.size(); ++i) | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 203         settings.default_tile_size.width() * 7 / 2, | 216         settings.default_tile_size.width() * 7 / 2, | 
| 204         settings.default_tile_size.height() * 7 / 2); | 217         settings.default_tile_size.height() * 7 / 2); | 
| 205 | 218 | 
| 206     scoped_refptr<FakePicturePileImpl> pending_pile = | 219     scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 207         FakePicturePileImpl::CreateFilledPile(layer_size, layer_size); | 220         FakePicturePileImpl::CreateFilledPile(layer_size, layer_size); | 
| 208     scoped_refptr<FakePicturePileImpl> active_pile = | 221     scoped_refptr<FakePicturePileImpl> active_pile = | 
| 209         FakePicturePileImpl::CreateFilledPile(layer_size, layer_size); | 222         FakePicturePileImpl::CreateFilledPile(layer_size, layer_size); | 
| 210 | 223 | 
| 211     SetupTrees(pending_pile, active_pile); | 224     SetupTrees(pending_pile, active_pile); | 
| 212 | 225 | 
| 213     float result_scale_x, result_scale_y; | 226     SetupDrawPropertiesAndManageTilings( | 
| 214     gfx::Size result_bounds; | 227         active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 215     active_layer_->CalculateContentsScale(1.f, |  | 
| 216                                           1.f, |  | 
| 217                                           1.f, |  | 
| 218                                           1.f, |  | 
| 219                                           false, |  | 
| 220                                           &result_scale_x, |  | 
| 221                                           &result_scale_y, |  | 
| 222                                           &result_bounds); |  | 
| 223 | 228 | 
| 224     // Add 1x1 rects at the centers of each tile, then re-record pile contents | 229     // Add 1x1 rects at the centers of each tile, then re-record pile contents | 
| 225     active_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 230     active_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 
| 226     std::vector<Tile*> tiles = | 231     std::vector<Tile*> tiles = | 
| 227         active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 232         active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 
| 228     EXPECT_EQ(16u, tiles.size()); | 233     EXPECT_EQ(16u, tiles.size()); | 
| 229     std::vector<SkRect> rects; | 234     std::vector<SkRect> rects; | 
| 230     std::vector<Tile*>::const_iterator tile_iter; | 235     std::vector<Tile*>::const_iterator tile_iter; | 
| 231     for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { | 236     for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { | 
| 232       gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint(); | 237       gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint(); | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 307   scoped_refptr<FakePicturePileImpl> active_pile = | 312   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 308       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 313       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 309 | 314 | 
| 310   SetupTrees(pending_pile, active_pile); | 315   SetupTrees(pending_pile, active_pile); | 
| 311 | 316 | 
| 312   std::vector<TileManager::PairedPictureLayer> paired_layers; | 317   std::vector<TileManager::PairedPictureLayer> paired_layers; | 
| 313   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 318   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 314   EXPECT_EQ(0u, paired_layers.size()); | 319   EXPECT_EQ(0u, paired_layers.size()); | 
| 315 | 320 | 
| 316   // Update tile priorities will force the layer to register itself. | 321   // Update tile priorities will force the layer to register itself. | 
| 317   float dummy_contents_scale_x; | 322   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 318   float dummy_contents_scale_y; |  | 
| 319   gfx::Size dummy_content_bounds; |  | 
| 320   active_layer_->CalculateContentsScale(1.f, |  | 
| 321                                         1.f, |  | 
| 322                                         1.f, |  | 
| 323                                         1.f, |  | 
| 324                                         false, |  | 
| 325                                         &dummy_contents_scale_x, |  | 
| 326                                         &dummy_contents_scale_y, |  | 
| 327                                         &dummy_content_bounds); |  | 
| 328   active_layer_->UpdateTilePriorities(); | 323   active_layer_->UpdateTilePriorities(); | 
| 329   host_impl_.pending_tree()->UpdateDrawProperties(); | 324   host_impl_.pending_tree()->UpdateDrawProperties(); | 
| 330   pending_layer_->CalculateContentsScale(1.f, | 325 | 
| 331                                          1.f, | 326   SetupDrawPropertiesAndManageTilings( | 
| 332                                          1.f, | 327       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 333                                          1.f, |  | 
| 334                                          false, |  | 
| 335                                          &dummy_contents_scale_x, |  | 
| 336                                          &dummy_contents_scale_y, |  | 
| 337                                          &dummy_content_bounds); |  | 
| 338   pending_layer_->UpdateTilePriorities(); | 328   pending_layer_->UpdateTilePriorities(); | 
| 339 | 329 | 
| 340   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 330   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 341   EXPECT_EQ(1u, paired_layers.size()); | 331   EXPECT_EQ(1u, paired_layers.size()); | 
| 342   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 332   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 
| 343   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 333   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 
| 344 | 334 | 
| 345   // Destroy and recreate tile manager. | 335   // Destroy and recreate tile manager. | 
| 346   host_impl_.DidLoseOutputSurface(); | 336   host_impl_.DidLoseOutputSurface(); | 
| 347   scoped_ptr<TestWebGraphicsContext3D> context = | 337   scoped_ptr<TestWebGraphicsContext3D> context = | 
| 348       TestWebGraphicsContext3D::Create(); | 338       TestWebGraphicsContext3D::Create(); | 
| 349   host_impl_.InitializeRenderer( | 339   host_impl_.InitializeRenderer( | 
| 350       FakeOutputSurface::Create3d(context.Pass()).PassAs<OutputSurface>()); | 340       FakeOutputSurface::Create3d(context.Pass()).PassAs<OutputSurface>()); | 
| 351 | 341 | 
| 352   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 342   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 353   EXPECT_EQ(0u, paired_layers.size()); | 343   EXPECT_EQ(0u, paired_layers.size()); | 
| 354 | 344 | 
| 355   active_layer_->CalculateContentsScale(1.f, | 345   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 356                                         1.f, |  | 
| 357                                         1.f, |  | 
| 358                                         1.f, |  | 
| 359                                         false, |  | 
| 360                                         &dummy_contents_scale_x, |  | 
| 361                                         &dummy_contents_scale_y, |  | 
| 362                                         &dummy_content_bounds); |  | 
| 363   active_layer_->UpdateTilePriorities(); | 346   active_layer_->UpdateTilePriorities(); | 
| 364   host_impl_.pending_tree()->UpdateDrawProperties(); | 347   host_impl_.pending_tree()->UpdateDrawProperties(); | 
| 365   pending_layer_->CalculateContentsScale(1.f, | 348 | 
| 366                                          1.f, | 349   SetupDrawPropertiesAndManageTilings( | 
| 367                                          1.f, | 350       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 368                                          1.f, |  | 
| 369                                          false, |  | 
| 370                                          &dummy_contents_scale_x, |  | 
| 371                                          &dummy_contents_scale_y, |  | 
| 372                                          &dummy_content_bounds); |  | 
| 373   pending_layer_->UpdateTilePriorities(); | 351   pending_layer_->UpdateTilePriorities(); | 
| 374 | 352 | 
| 375   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 353   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 376   EXPECT_EQ(1u, paired_layers.size()); | 354   EXPECT_EQ(1u, paired_layers.size()); | 
| 377   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 355   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 
| 378   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 356   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 
| 379 } | 357 } | 
| 380 | 358 | 
| 381 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 359 TEST_F(PictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 
| 382   base::TimeTicks time_ticks; | 360   base::TimeTicks time_ticks; | 
| 383   host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 361   host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 
| 384 | 362 | 
| 385   gfx::Size tile_size(100, 100); | 363   gfx::Size tile_size(100, 100); | 
| 386   gfx::Size layer_bounds(400, 400); | 364   gfx::Size layer_bounds(400, 400); | 
| 387 | 365 | 
| 388   scoped_refptr<FakePicturePileImpl> pending_pile = | 366   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 389       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 367       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 390   scoped_refptr<FakePicturePileImpl> active_pile = | 368   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 391       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 369       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 392 | 370 | 
| 393   SetupTrees(pending_pile, active_pile); | 371   SetupTrees(pending_pile, active_pile); | 
| 394 | 372 | 
| 395   Region invalidation; | 373   Region invalidation; | 
| 396   AddDefaultTilingsWithInvalidation(invalidation); | 374   AddDefaultTilingsWithInvalidation(invalidation); | 
| 397   float dummy_contents_scale_x; | 375   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 398   float dummy_contents_scale_y; |  | 
| 399   gfx::Size dummy_content_bounds; |  | 
| 400   active_layer_->CalculateContentsScale(1.f, |  | 
| 401                                         1.f, |  | 
| 402                                         1.f, |  | 
| 403                                         1.f, |  | 
| 404                                         false, |  | 
| 405                                         &dummy_contents_scale_x, |  | 
| 406                                         &dummy_contents_scale_y, |  | 
| 407                                         &dummy_content_bounds); |  | 
| 408 | 376 | 
| 409   // UpdateTilePriorities with valid viewport. Should update tile viewport. | 377   // UpdateTilePriorities with valid viewport. Should update tile viewport. | 
| 410   bool valid_for_tile_management = true; | 378   bool valid_for_tile_management = true; | 
| 411   gfx::Rect viewport = gfx::Rect(layer_bounds); | 379   gfx::Rect viewport = gfx::Rect(layer_bounds); | 
| 412   gfx::Transform transform; | 380   gfx::Transform transform; | 
| 413   host_impl_.SetExternalDrawConstraints( | 381   host_impl_.SetExternalDrawConstraints( | 
| 414       transform, viewport, viewport, valid_for_tile_management); | 382       transform, viewport, viewport, valid_for_tile_management); | 
| 415   active_layer_->draw_properties().visible_content_rect = viewport; | 383   active_layer_->draw_properties().visible_content_rect = viewport; | 
| 416   active_layer_->draw_properties().screen_space_transform = transform; | 384   active_layer_->draw_properties().screen_space_transform = transform; | 
| 417   active_layer_->UpdateTilePriorities(); | 385   active_layer_->UpdateTilePriorities(); | 
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 654 | 622 | 
| 655 TEST_F(PictureLayerImplTest, ManageTilingsWithNoRecording) { | 623 TEST_F(PictureLayerImplTest, ManageTilingsWithNoRecording) { | 
| 656   gfx::Size tile_size(400, 400); | 624   gfx::Size tile_size(400, 400); | 
| 657   gfx::Size layer_bounds(1300, 1900); | 625   gfx::Size layer_bounds(1300, 1900); | 
| 658 | 626 | 
| 659   scoped_refptr<FakePicturePileImpl> pending_pile = | 627   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 660       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 628       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 
| 661   scoped_refptr<FakePicturePileImpl> active_pile = | 629   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 662       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 630       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 
| 663 | 631 | 
| 664   float result_scale_x, result_scale_y; |  | 
| 665   gfx::Size result_bounds; |  | 
| 666 |  | 
| 667   SetupTrees(pending_pile, active_pile); | 632   SetupTrees(pending_pile, active_pile); | 
| 668 | 633 | 
| 669   pending_layer_->CalculateContentsScale(1.f, | 634   SetupDrawPropertiesAndManageTilings( | 
| 670                                          1.f, | 635       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 671                                          1.f, |  | 
| 672                                          1.f, |  | 
| 673                                          false, |  | 
| 674                                          &result_scale_x, |  | 
| 675                                          &result_scale_y, |  | 
| 676                                          &result_bounds); |  | 
| 677 | 636 | 
| 678   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 637   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 679 } | 638 } | 
| 680 | 639 | 
| 681 TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { | 640 TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { | 
| 682   gfx::Size tile_size(400, 400); | 641   gfx::Size tile_size(400, 400); | 
| 683   gfx::Size layer_bounds(1300, 1900); | 642   gfx::Size layer_bounds(1300, 1900); | 
| 684 | 643 | 
| 685   scoped_refptr<FakePicturePileImpl> pending_pile = | 644   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 686       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 645       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 687   scoped_refptr<FakePicturePileImpl> active_pile = | 646   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 688       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 647       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 689 | 648 | 
| 690   float result_scale_x, result_scale_y; |  | 
| 691   gfx::Size result_bounds; |  | 
| 692 |  | 
| 693   SetupTrees(pending_pile, active_pile); | 649   SetupTrees(pending_pile, active_pile); | 
| 694   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 650   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 695 | 651 | 
| 696   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 652   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 697   EXPECT_LT(low_res_factor, 1.f); | 653   EXPECT_LT(low_res_factor, 1.f); | 
| 698 | 654 | 
| 699   pending_layer_->CalculateContentsScale(6.f,  // ideal contents scale | 655   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 700                                          3.f,  // device scale | 656                                       6.f,  // ideal contents scale | 
| 701                                          2.f,  // page scale | 657                                       3.f,  // device scale | 
| 702                                          1.f,  // maximum animation scale | 658                                       2.f,  // page scale | 
| 703                                          false, | 659                                       1.f,  // maximum animation scale | 
| 704                                          &result_scale_x, | 660                                       false); | 
| 705                                          &result_scale_y, |  | 
| 706                                          &result_bounds); |  | 
| 707   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 661   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 708   EXPECT_FLOAT_EQ(6.f, | 662   EXPECT_FLOAT_EQ(6.f, | 
| 709                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 663                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 710   EXPECT_FLOAT_EQ(6.f * low_res_factor, | 664   EXPECT_FLOAT_EQ(6.f * low_res_factor, | 
| 711                   pending_layer_->tilings()->tiling_at(1)->contents_scale()); | 665                   pending_layer_->tilings()->tiling_at(1)->contents_scale()); | 
| 712 | 666 | 
| 713   // If we change the page scale factor, then we should get new tilings. | 667   // If we change the page scale factor, then we should get new tilings. | 
| 714   pending_layer_->CalculateContentsScale(6.6f,  // ideal contents scale | 668   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 715                                          3.f,   // device scale | 669                                       6.6f,  // ideal contents scale | 
| 716                                          2.2f,  // page scale | 670                                       3.f,   // device scale | 
| 717                                          1.f,   // maximum animation scale | 671                                       2.2f,  // page scale | 
| 718                                          false, | 672                                       1.f,   // maximum animation scale | 
| 719                                          &result_scale_x, | 673                                       false); | 
| 720                                          &result_scale_y, |  | 
| 721                                          &result_bounds); |  | 
| 722   ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); | 674   ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); | 
| 723   EXPECT_FLOAT_EQ(6.6f, | 675   EXPECT_FLOAT_EQ(6.6f, | 
| 724                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 676                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 725   EXPECT_FLOAT_EQ(6.6f * low_res_factor, | 677   EXPECT_FLOAT_EQ(6.6f * low_res_factor, | 
| 726                   pending_layer_->tilings()->tiling_at(2)->contents_scale()); | 678                   pending_layer_->tilings()->tiling_at(2)->contents_scale()); | 
| 727 | 679 | 
| 728   // If we change the device scale factor, then we should get new tilings. | 680   // If we change the device scale factor, then we should get new tilings. | 
| 729   pending_layer_->CalculateContentsScale(7.26f,  // ideal contents scale | 681   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 730                                          3.3f,   // device scale | 682                                       7.26f,  // ideal contents scale | 
| 731                                          2.2f,   // page scale | 683                                       3.3f,   // device scale | 
| 732                                          1.f,    // maximum animation scale | 684                                       2.2f,   // page scale | 
| 733                                          false, | 685                                       1.f,    // maximum animation scale | 
| 734                                          &result_scale_x, | 686                                       false); | 
| 735                                          &result_scale_y, |  | 
| 736                                          &result_bounds); |  | 
| 737   ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); | 687   ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); | 
| 738   EXPECT_FLOAT_EQ(7.26f, | 688   EXPECT_FLOAT_EQ(7.26f, | 
| 739                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 689                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 740   EXPECT_FLOAT_EQ(7.26f * low_res_factor, | 690   EXPECT_FLOAT_EQ(7.26f * low_res_factor, | 
| 741                   pending_layer_->tilings()->tiling_at(3)->contents_scale()); | 691                   pending_layer_->tilings()->tiling_at(3)->contents_scale()); | 
| 742 | 692 | 
| 743   // If we change the device scale factor, but end up at the same total scale | 693   // If we change the device scale factor, but end up at the same total scale | 
| 744   // factor somehow, then we don't get new tilings. | 694   // factor somehow, then we don't get new tilings. | 
| 745   pending_layer_->CalculateContentsScale(7.26f,  // ideal contents scale | 695   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 746                                          2.2f,   // device scale | 696                                       7.26f,  // ideal contents scale | 
| 747                                          3.3f,   // page scale | 697                                       2.2f,   // device scale | 
| 748                                          1.f,    // maximum animation scale | 698                                       3.3f,   // page scale | 
| 749                                          false, | 699                                       1.f,    // maximum animation scale | 
| 750                                          &result_scale_x, | 700                                       false); | 
| 751                                          &result_scale_y, |  | 
| 752                                          &result_bounds); |  | 
| 753   ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); | 701   ASSERT_EQ(6u, pending_layer_->tilings()->num_tilings()); | 
| 754   EXPECT_FLOAT_EQ(7.26f, | 702   EXPECT_FLOAT_EQ(7.26f, | 
| 755                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 703                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 756   EXPECT_FLOAT_EQ(7.26f * low_res_factor, | 704   EXPECT_FLOAT_EQ(7.26f * low_res_factor, | 
| 757                   pending_layer_->tilings()->tiling_at(3)->contents_scale()); | 705                   pending_layer_->tilings()->tiling_at(3)->contents_scale()); | 
| 758 } | 706 } | 
| 759 | 707 | 
| 760 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { | 708 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { | 
| 761   // This test makes sure that if a layer can have tilings, then a commit makes | 709   // This test makes sure that if a layer can have tilings, then a commit makes | 
| 762   // it not able to have tilings (empty size), and then a future commit that | 710   // it not able to have tilings (empty size), and then a future commit that | 
| 763   // makes it valid again should be able to create tilings. | 711   // makes it valid again should be able to create tilings. | 
| 764   gfx::Size tile_size(400, 400); | 712   gfx::Size tile_size(400, 400); | 
| 765   gfx::Size layer_bounds(1300, 1900); | 713   gfx::Size layer_bounds(1300, 1900); | 
| 766 | 714 | 
| 767   scoped_refptr<FakePicturePileImpl> empty_pile = | 715   scoped_refptr<FakePicturePileImpl> empty_pile = | 
| 768       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 716       FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 
| 769   scoped_refptr<FakePicturePileImpl> valid_pile = | 717   scoped_refptr<FakePicturePileImpl> valid_pile = | 
| 770       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 718       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 771 | 719 | 
| 772   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 720   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 773   EXPECT_LT(low_res_factor, 1.f); | 721   EXPECT_LT(low_res_factor, 1.f); | 
| 774 | 722 | 
| 775   float high_res_scale = 1.3f; | 723   float high_res_scale = 1.3f; | 
| 776   float low_res_scale = high_res_scale * low_res_factor; | 724   float low_res_scale = high_res_scale * low_res_factor; | 
| 777   float device_scale = 1.7f; | 725   float device_scale = 1.7f; | 
| 778   float page_scale = 3.2f; | 726   float page_scale = 3.2f; | 
| 779   float maximum_animation_scale = 1.f; | 727   float maximum_animation_scale = 1.f; | 
| 780   float result_scale_x, result_scale_y; |  | 
| 781   gfx::Size result_bounds; |  | 
| 782 | 728 | 
| 783   SetupPendingTree(valid_pile); | 729   SetupPendingTree(valid_pile); | 
| 784   pending_layer_->CalculateContentsScale(high_res_scale, | 730   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 785                                          device_scale, | 731                                       high_res_scale, | 
| 786                                          page_scale, | 732                                       device_scale, | 
| 787                                          maximum_animation_scale, | 733                                       page_scale, | 
| 788                                          false, | 734                                       maximum_animation_scale, | 
| 789                                          &result_scale_x, | 735                                       false); | 
| 790                                          &result_scale_y, |  | 
| 791                                          &result_bounds); |  | 
| 792   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 736   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 793   EXPECT_FLOAT_EQ(high_res_scale, | 737   EXPECT_FLOAT_EQ(high_res_scale, | 
| 794                   pending_layer_->HighResTiling()->contents_scale()); | 738                   pending_layer_->HighResTiling()->contents_scale()); | 
| 795   EXPECT_FLOAT_EQ(low_res_scale, | 739   EXPECT_FLOAT_EQ(low_res_scale, | 
| 796                   pending_layer_->LowResTiling()->contents_scale()); | 740                   pending_layer_->LowResTiling()->contents_scale()); | 
| 797 | 741 | 
| 798   ActivateTree(); | 742   ActivateTree(); | 
| 799   SetupPendingTree(empty_pile); | 743   SetupPendingTree(empty_pile); | 
| 800   pending_layer_->CalculateContentsScale(high_res_scale, | 744   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 801                                          device_scale, | 745                                       high_res_scale, | 
| 802                                          page_scale, | 746                                       device_scale, | 
| 803                                          maximum_animation_scale, | 747                                       page_scale, | 
| 804                                          false, | 748                                       maximum_animation_scale, | 
| 805                                          &result_scale_x, | 749                                       false); | 
| 806                                          &result_scale_y, |  | 
| 807                                          &result_bounds); |  | 
| 808   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 750   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 
| 809   ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 751   ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 810 | 752 | 
| 811   ActivateTree(); | 753   ActivateTree(); | 
| 812   active_layer_->CalculateContentsScale(high_res_scale, | 754   SetupDrawPropertiesAndManageTilings(active_layer_, | 
| 813                                         device_scale, | 755                                       high_res_scale, | 
| 814                                         page_scale, | 756                                       device_scale, | 
| 815                                         maximum_animation_scale, | 757                                       page_scale, | 
| 816                                         false, | 758                                       maximum_animation_scale, | 
| 817                                         &result_scale_x, | 759                                       false); | 
| 818                                         &result_scale_y, |  | 
| 819                                         &result_bounds); |  | 
| 820   ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 760   ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 
| 821 | 761 | 
| 822   SetupPendingTree(valid_pile); | 762   SetupPendingTree(valid_pile); | 
| 823   pending_layer_->CalculateContentsScale(high_res_scale, | 763   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 824                                          device_scale, | 764                                       high_res_scale, | 
| 825                                          page_scale, | 765                                       device_scale, | 
| 826                                          maximum_animation_scale, | 766                                       page_scale, | 
| 827                                          false, | 767                                       maximum_animation_scale, | 
| 828                                          &result_scale_x, | 768                                       false); | 
| 829                                          &result_scale_y, |  | 
| 830                                          &result_bounds); |  | 
| 831   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 769   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 832   ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 770   ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 
| 833   EXPECT_FLOAT_EQ(high_res_scale, | 771   EXPECT_FLOAT_EQ(high_res_scale, | 
| 834                   pending_layer_->HighResTiling()->contents_scale()); | 772                   pending_layer_->HighResTiling()->contents_scale()); | 
| 835   EXPECT_FLOAT_EQ(low_res_scale, | 773   EXPECT_FLOAT_EQ(low_res_scale, | 
| 836                   pending_layer_->LowResTiling()->contents_scale()); | 774                   pending_layer_->LowResTiling()->contents_scale()); | 
| 837 } | 775 } | 
| 838 | 776 | 
| 839 TEST_F(PictureLayerImplTest, ZoomOutCrash) { | 777 TEST_F(PictureLayerImplTest, ZoomOutCrash) { | 
| 840   gfx::Size tile_size(400, 400); | 778   gfx::Size tile_size(400, 400); | 
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 954 | 892 | 
| 955 TEST_F(PictureLayerImplTest, CleanUpTilings) { | 893 TEST_F(PictureLayerImplTest, CleanUpTilings) { | 
| 956   gfx::Size tile_size(400, 400); | 894   gfx::Size tile_size(400, 400); | 
| 957   gfx::Size layer_bounds(1300, 1900); | 895   gfx::Size layer_bounds(1300, 1900); | 
| 958 | 896 | 
| 959   scoped_refptr<FakePicturePileImpl> pending_pile = | 897   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 960       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 898       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 961   scoped_refptr<FakePicturePileImpl> active_pile = | 899   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 962       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 900       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 963 | 901 | 
| 964   float result_scale_x, result_scale_y; |  | 
| 965   gfx::Size result_bounds; |  | 
| 966   std::vector<PictureLayerTiling*> used_tilings; | 902   std::vector<PictureLayerTiling*> used_tilings; | 
| 967 | 903 | 
| 968   SetupTrees(pending_pile, active_pile); | 904   SetupTrees(pending_pile, active_pile); | 
| 969   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 905   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 970 | 906 | 
| 971   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 907   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 972   EXPECT_LT(low_res_factor, 1.f); | 908   EXPECT_LT(low_res_factor, 1.f); | 
| 973 | 909 | 
| 974   float device_scale = 1.7f; | 910   float device_scale = 1.7f; | 
| 975   float page_scale = 3.2f; | 911   float page_scale = 3.2f; | 
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1029   // Now move the ideal scale to 1.0. Our target stays 1.2. | 965   // Now move the ideal scale to 1.0. Our target stays 1.2. | 
| 1030   SetContentsScaleOnBothLayers(1.f, device_scale, page_scale, 1.f, false); | 966   SetContentsScaleOnBothLayers(1.f, device_scale, page_scale, 1.f, false); | 
| 1031 | 967 | 
| 1032   // All the tilings are between are target and the ideal, so they are not | 968   // All the tilings are between are target and the ideal, so they are not | 
| 1033   // removed. | 969   // removed. | 
| 1034   used_tilings.clear(); | 970   used_tilings.clear(); | 
| 1035   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 971   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 1036   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 972   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 
| 1037 | 973 | 
| 1038   // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. | 974   // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. | 
| 1039   active_layer_->CalculateContentsScale(1.1f, | 975   SetupDrawPropertiesAndManageTilings( | 
| 1040                                         device_scale, | 976       active_layer_, 1.1f, device_scale, page_scale, 1.f, false); | 
| 1041                                         page_scale, |  | 
| 1042                                         1.f, |  | 
| 1043                                         false, |  | 
| 1044                                         &result_scale_x, |  | 
| 1045                                         &result_scale_y, |  | 
| 1046                                         &result_bounds); |  | 
| 1047 | 977 | 
| 1048   // Because the pending layer's ideal scale is still 1.0, our tilings fall | 978   // Because the pending layer's ideal scale is still 1.0, our tilings fall | 
| 1049   // in the range [1.0,1.2] and are kept. | 979   // in the range [1.0,1.2] and are kept. | 
| 1050   used_tilings.clear(); | 980   used_tilings.clear(); | 
| 1051   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 981   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 1052   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 982   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 
| 1053 | 983 | 
| 1054   // Move the ideal scale on the pending layer to 1.1 as well. Our target stays | 984   // Move the ideal scale on the pending layer to 1.1 as well. Our target stays | 
| 1055   // 1.2 still. | 985   // 1.2 still. | 
| 1056   pending_layer_->CalculateContentsScale(1.1f, | 986   SetupDrawPropertiesAndManageTilings( | 
| 1057                                          device_scale, | 987       pending_layer_, 1.1f, device_scale, page_scale, 1.f, false); | 
| 1058                                          page_scale, |  | 
| 1059                                          1.f, |  | 
| 1060                                          false, |  | 
| 1061                                          &result_scale_x, |  | 
| 1062                                          &result_scale_y, |  | 
| 1063                                          &result_bounds); |  | 
| 1064 | 988 | 
| 1065   // Our 1.0 tiling now falls outside the range between our ideal scale and our | 989   // Our 1.0 tiling now falls outside the range between our ideal scale and our | 
| 1066   // target raster scale. But it is in our used tilings set, so nothing is | 990   // target raster scale. But it is in our used tilings set, so nothing is | 
| 1067   // deleted. | 991   // deleted. | 
| 1068   used_tilings.clear(); | 992   used_tilings.clear(); | 
| 1069   used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 993   used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 
| 1070   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 994   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 1071   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 995   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 
| 1072 | 996 | 
| 1073   // If we remove it from our used tilings set, it is outside the range to keep | 997   // If we remove it from our used tilings set, it is outside the range to keep | 
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1207 | 1131 | 
| 1208 TEST_F(PictureLayerImplTest, ReleaseResources) { | 1132 TEST_F(PictureLayerImplTest, ReleaseResources) { | 
| 1209   gfx::Size tile_size(400, 400); | 1133   gfx::Size tile_size(400, 400); | 
| 1210   gfx::Size layer_bounds(1300, 1900); | 1134   gfx::Size layer_bounds(1300, 1900); | 
| 1211 | 1135 | 
| 1212   scoped_refptr<FakePicturePileImpl> pending_pile = | 1136   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 1213       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1137       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1214   scoped_refptr<FakePicturePileImpl> active_pile = | 1138   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 1215       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1139       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1216 | 1140 | 
| 1217   float result_scale_x, result_scale_y; |  | 
| 1218   gfx::Size result_bounds; |  | 
| 1219 |  | 
| 1220   SetupTrees(pending_pile, active_pile); | 1141   SetupTrees(pending_pile, active_pile); | 
| 1221   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1142   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1222 | 1143 | 
| 1223   pending_layer_->CalculateContentsScale(1.3f,  // ideal contents scale | 1144   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 1224                                          2.7f,  // device scale | 1145                                       1.3f,  // ideal contents scale | 
| 1225                                          3.2f,  // page scale | 1146                                       2.7f,  // device scale | 
| 1226                                          1.f,   // maximum animation scale | 1147                                       3.2f,  // page scale | 
| 1227                                          false, | 1148                                       1.f,   // maximum animation scale | 
| 1228                                          &result_scale_x, | 1149                                       false); | 
| 1229                                          &result_scale_y, |  | 
| 1230                                          &result_bounds); |  | 
| 1231   EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 1150   EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 1232 | 1151 | 
| 1233   // All tilings should be removed when losing output surface. | 1152   // All tilings should be removed when losing output surface. | 
| 1234   active_layer_->ReleaseResources(); | 1153   active_layer_->ReleaseResources(); | 
| 1235   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 1154   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 
| 1236   pending_layer_->ReleaseResources(); | 1155   pending_layer_->ReleaseResources(); | 
| 1237   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1156   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1238 | 1157 | 
| 1239   // This should create new tilings. | 1158   // This should create new tilings. | 
| 1240   pending_layer_->CalculateContentsScale(1.3f,  // ideal contents scale | 1159   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 1241                                          2.7f,  // device scale | 1160                                       1.3f,  // ideal contents scale | 
| 1242                                          3.2f,  // page scale | 1161                                       2.7f,  // device scale | 
| 1243                                          1.f,   // maximum animation scale | 1162                                       3.2f,  // page scale | 
| 1244                                          false, | 1163                                       1.f,   // maximum animation scale | 
| 1245                                          &result_scale_x, | 1164                                       false); | 
| 1246                                          &result_scale_y, |  | 
| 1247                                          &result_bounds); |  | 
| 1248   EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 1165   EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 1249 } | 1166 } | 
| 1250 | 1167 | 
| 1251 TEST_F(PictureLayerImplTest, ClampTilesToToMaxTileSize) { | 1168 TEST_F(PictureLayerImplTest, ClampTilesToToMaxTileSize) { | 
| 1252   // The default max tile size is larger than 400x400. | 1169   // The default max tile size is larger than 400x400. | 
| 1253   gfx::Size tile_size(400, 400); | 1170   gfx::Size tile_size(400, 400); | 
| 1254   gfx::Size layer_bounds(5000, 5000); | 1171   gfx::Size layer_bounds(5000, 5000); | 
| 1255 | 1172 | 
| 1256   scoped_refptr<FakePicturePileImpl> pending_pile = | 1173   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 1257       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1174       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1258   scoped_refptr<FakePicturePileImpl> active_pile = | 1175   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 1259       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1176       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1260 | 1177 | 
| 1261   float result_scale_x, result_scale_y; |  | 
| 1262   gfx::Size result_bounds; |  | 
| 1263 |  | 
| 1264   SetupTrees(pending_pile, active_pile); | 1178   SetupTrees(pending_pile, active_pile); | 
| 1265   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1179   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1266 | 1180 | 
| 1267   pending_layer_->CalculateContentsScale(1.f, | 1181   SetupDrawPropertiesAndManageTilings( | 
| 1268                                          1.f, | 1182       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1269                                          1.f, |  | 
| 1270                                          1.f, |  | 
| 1271                                          false, |  | 
| 1272                                          &result_scale_x, |  | 
| 1273                                          &result_scale_y, |  | 
| 1274                                          &result_bounds); |  | 
| 1275   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 1183   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 1276 | 1184 | 
| 1277   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 1185   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 
| 1278 | 1186 | 
| 1279   // The default value. | 1187   // The default value. | 
| 1280   EXPECT_EQ(gfx::Size(256, 256).ToString(), | 1188   EXPECT_EQ(gfx::Size(256, 256).ToString(), | 
| 1281             host_impl_.settings().default_tile_size.ToString()); | 1189             host_impl_.settings().default_tile_size.ToString()); | 
| 1282 | 1190 | 
| 1283   Tile* tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 1191   Tile* tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 
| 1284   EXPECT_EQ(gfx::Size(256, 256).ToString(), | 1192   EXPECT_EQ(gfx::Size(256, 256).ToString(), | 
| 1285             tile->content_rect().size().ToString()); | 1193             tile->content_rect().size().ToString()); | 
| 1286 | 1194 | 
| 1287   pending_layer_->ReleaseResources(); | 1195   pending_layer_->ReleaseResources(); | 
| 1288 | 1196 | 
| 1289   // Change the max texture size on the output surface context. | 1197   // Change the max texture size on the output surface context. | 
| 1290   scoped_ptr<TestWebGraphicsContext3D> context = | 1198   scoped_ptr<TestWebGraphicsContext3D> context = | 
| 1291       TestWebGraphicsContext3D::Create(); | 1199       TestWebGraphicsContext3D::Create(); | 
| 1292   context->set_max_texture_size(140); | 1200   context->set_max_texture_size(140); | 
| 1293   host_impl_.DidLoseOutputSurface(); | 1201   host_impl_.DidLoseOutputSurface(); | 
| 1294   host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( | 1202   host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( | 
| 1295       context.Pass()).PassAs<OutputSurface>()); | 1203       context.Pass()).PassAs<OutputSurface>()); | 
| 1296 | 1204 | 
| 1297   pending_layer_->CalculateContentsScale(1.f, | 1205   SetupDrawPropertiesAndManageTilings( | 
| 1298                                          1.f, | 1206       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1299                                          1.f, |  | 
| 1300                                          1.f, |  | 
| 1301                                          false, |  | 
| 1302                                          &result_scale_x, |  | 
| 1303                                          &result_scale_y, |  | 
| 1304                                          &result_bounds); |  | 
| 1305   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 1207   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 1306 | 1208 | 
| 1307   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 1209   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 
| 1308 | 1210 | 
| 1309   // Verify the tiles are not larger than the context's max texture size. | 1211   // Verify the tiles are not larger than the context's max texture size. | 
| 1310   tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 1212   tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 
| 1311   EXPECT_GE(140, tile->content_rect().width()); | 1213   EXPECT_GE(140, tile->content_rect().width()); | 
| 1312   EXPECT_GE(140, tile->content_rect().height()); | 1214   EXPECT_GE(140, tile->content_rect().height()); | 
| 1313 } | 1215 } | 
| 1314 | 1216 | 
| 1315 TEST_F(PictureLayerImplTest, ClampSingleTileToToMaxTileSize) { | 1217 TEST_F(PictureLayerImplTest, ClampSingleTileToToMaxTileSize) { | 
| 1316   // The default max tile size is larger than 400x400. | 1218   // The default max tile size is larger than 400x400. | 
| 1317   gfx::Size tile_size(400, 400); | 1219   gfx::Size tile_size(400, 400); | 
| 1318   gfx::Size layer_bounds(500, 500); | 1220   gfx::Size layer_bounds(500, 500); | 
| 1319 | 1221 | 
| 1320   scoped_refptr<FakePicturePileImpl> pending_pile = | 1222   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 1321       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1223       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1322   scoped_refptr<FakePicturePileImpl> active_pile = | 1224   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 1323       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1225       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1324 | 1226 | 
| 1325   float result_scale_x, result_scale_y; |  | 
| 1326   gfx::Size result_bounds; |  | 
| 1327 |  | 
| 1328   SetupTrees(pending_pile, active_pile); | 1227   SetupTrees(pending_pile, active_pile); | 
| 1329   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1228   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1330 | 1229 | 
| 1331   pending_layer_->CalculateContentsScale(1.f, | 1230   SetupDrawPropertiesAndManageTilings( | 
| 1332                                          1.f, | 1231       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1333                                          1.f, |  | 
| 1334                                          1.f, |  | 
| 1335                                          false, |  | 
| 1336                                          &result_scale_x, |  | 
| 1337                                          &result_scale_y, |  | 
| 1338                                          &result_bounds); |  | 
| 1339   ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); | 1232   ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); | 
| 1340 | 1233 | 
| 1341   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 1234   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 
| 1342 | 1235 | 
| 1343   // The default value. The layer is smaller than this. | 1236   // The default value. The layer is smaller than this. | 
| 1344   EXPECT_EQ(gfx::Size(512, 512).ToString(), | 1237   EXPECT_EQ(gfx::Size(512, 512).ToString(), | 
| 1345             host_impl_.settings().max_untiled_layer_size.ToString()); | 1238             host_impl_.settings().max_untiled_layer_size.ToString()); | 
| 1346 | 1239 | 
| 1347   // There should be a single tile since the layer is small. | 1240   // There should be a single tile since the layer is small. | 
| 1348   PictureLayerTiling* high_res_tiling = pending_layer_->tilings()->tiling_at(0); | 1241   PictureLayerTiling* high_res_tiling = pending_layer_->tilings()->tiling_at(0); | 
| 1349   EXPECT_EQ(1u, high_res_tiling->AllTilesForTesting().size()); | 1242   EXPECT_EQ(1u, high_res_tiling->AllTilesForTesting().size()); | 
| 1350 | 1243 | 
| 1351   pending_layer_->ReleaseResources(); | 1244   pending_layer_->ReleaseResources(); | 
| 1352 | 1245 | 
| 1353   // Change the max texture size on the output surface context. | 1246   // Change the max texture size on the output surface context. | 
| 1354   scoped_ptr<TestWebGraphicsContext3D> context = | 1247   scoped_ptr<TestWebGraphicsContext3D> context = | 
| 1355       TestWebGraphicsContext3D::Create(); | 1248       TestWebGraphicsContext3D::Create(); | 
| 1356   context->set_max_texture_size(140); | 1249   context->set_max_texture_size(140); | 
| 1357   host_impl_.DidLoseOutputSurface(); | 1250   host_impl_.DidLoseOutputSurface(); | 
| 1358   host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( | 1251   host_impl_.InitializeRenderer(FakeOutputSurface::Create3d( | 
| 1359       context.Pass()).PassAs<OutputSurface>()); | 1252       context.Pass()).PassAs<OutputSurface>()); | 
| 1360 | 1253 | 
| 1361   pending_layer_->CalculateContentsScale(1.f, | 1254   SetupDrawPropertiesAndManageTilings( | 
| 1362                                          1.f, | 1255       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1363                                          1.f, |  | 
| 1364                                          1.f, |  | 
| 1365                                          false, |  | 
| 1366                                          &result_scale_x, |  | 
| 1367                                          &result_scale_y, |  | 
| 1368                                          &result_bounds); |  | 
| 1369   ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); | 1256   ASSERT_LE(1u, pending_layer_->tilings()->num_tilings()); | 
| 1370 | 1257 | 
| 1371   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 1258   pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 
| 1372 | 1259 | 
| 1373   // There should be more than one tile since the max texture size won't cover | 1260   // There should be more than one tile since the max texture size won't cover | 
| 1374   // the layer. | 1261   // the layer. | 
| 1375   high_res_tiling = pending_layer_->tilings()->tiling_at(0); | 1262   high_res_tiling = pending_layer_->tilings()->tiling_at(0); | 
| 1376   EXPECT_LT(1u, high_res_tiling->AllTilesForTesting().size()); | 1263   EXPECT_LT(1u, high_res_tiling->AllTilesForTesting().size()); | 
| 1377 | 1264 | 
| 1378   // Verify the tiles are not larger than the context's max texture size. | 1265   // Verify the tiles are not larger than the context's max texture size. | 
| 1379   Tile* tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 1266   Tile* tile = pending_layer_->tilings()->tiling_at(0)->AllTilesForTesting()[0]; | 
| 1380   EXPECT_GE(140, tile->content_rect().width()); | 1267   EXPECT_GE(140, tile->content_rect().width()); | 
| 1381   EXPECT_GE(140, tile->content_rect().height()); | 1268   EXPECT_GE(140, tile->content_rect().height()); | 
| 1382 } | 1269 } | 
| 1383 | 1270 | 
| 1384 TEST_F(PictureLayerImplTest, DisallowTileDrawQuads) { | 1271 TEST_F(PictureLayerImplTest, DisallowTileDrawQuads) { | 
| 1385   MockQuadCuller quad_culler; | 1272   MockQuadCuller quad_culler; | 
| 1386 | 1273 | 
| 1387   gfx::Size tile_size(400, 400); | 1274   gfx::Size tile_size(400, 400); | 
| 1388   gfx::Size layer_bounds(1300, 1900); | 1275   gfx::Size layer_bounds(1300, 1900); | 
| 1389 | 1276 | 
| 1390   scoped_refptr<FakePicturePileImpl> pending_pile = | 1277   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 1391       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1278       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1392   scoped_refptr<FakePicturePileImpl> active_pile = | 1279   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 1393       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1280       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 1394 | 1281 | 
| 1395   SetupTrees(pending_pile, active_pile); | 1282   SetupTrees(pending_pile, active_pile); | 
| 1396 | 1283 | 
| 1397   active_layer_->SetContentBounds(layer_bounds); |  | 
| 1398   active_layer_->draw_properties().visible_content_rect = | 1284   active_layer_->draw_properties().visible_content_rect = | 
| 1399       gfx::Rect(layer_bounds); | 1285       gfx::Rect(layer_bounds); | 
| 1400 | 1286 | 
| 1401   gfx::Rect layer_invalidation(150, 200, 30, 180); | 1287   gfx::Rect layer_invalidation(150, 200, 30, 180); | 
| 1402   Region invalidation(layer_invalidation); | 1288   Region invalidation(layer_invalidation); | 
| 1403   AddDefaultTilingsWithInvalidation(invalidation); | 1289   AddDefaultTilingsWithInvalidation(invalidation); | 
| 1404 | 1290 | 
| 1405   AppendQuadsData data; | 1291   AppendQuadsData data; | 
| 1406   active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); | 1292   active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); | 
| 1407   active_layer_->AppendQuads(&quad_culler, &data); | 1293   active_layer_->AppendQuads(&quad_culler, &data); | 
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1752   host_impl_.SetUseGpuRasterization(false); | 1638   host_impl_.SetUseGpuRasterization(false); | 
| 1753   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1639   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1754   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 1640   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 
| 1755 } | 1641 } | 
| 1756 | 1642 | 
| 1757 TEST_F(PictureLayerImplTest, HighResCreatedWhenBoundsShrink) { | 1643 TEST_F(PictureLayerImplTest, HighResCreatedWhenBoundsShrink) { | 
| 1758   SetupDefaultTrees(gfx::Size(10, 10)); | 1644   SetupDefaultTrees(gfx::Size(10, 10)); | 
| 1759   host_impl_.active_tree()->UpdateDrawProperties(); | 1645   host_impl_.active_tree()->UpdateDrawProperties(); | 
| 1760   EXPECT_FALSE(host_impl_.active_tree()->needs_update_draw_properties()); | 1646   EXPECT_FALSE(host_impl_.active_tree()->needs_update_draw_properties()); | 
| 1761 | 1647 | 
| 1762   float result_scale_x; | 1648   SetupDrawPropertiesAndManageTilings( | 
| 1763   float result_scale_y; | 1649       active_layer_, 0.5f, 0.5f, 0.5f, 0.5f, false); | 
| 1764   gfx::Size result_bounds; |  | 
| 1765   active_layer_->CalculateContentsScale(0.5f, |  | 
| 1766                                         0.5f, |  | 
| 1767                                         0.5f, |  | 
| 1768                                         0.5f, |  | 
| 1769                                         false, |  | 
| 1770                                         &result_scale_x, |  | 
| 1771                                         &result_scale_y, |  | 
| 1772                                         &result_bounds); |  | 
| 1773   active_layer_->tilings()->RemoveAllTilings(); | 1650   active_layer_->tilings()->RemoveAllTilings(); | 
| 1774   PictureLayerTiling* tiling = active_layer_->tilings()->AddTiling(0.5f); | 1651   PictureLayerTiling* tiling = active_layer_->tilings()->AddTiling(0.5f); | 
| 1775   active_layer_->tilings()->AddTiling(1.5f); | 1652   active_layer_->tilings()->AddTiling(1.5f); | 
| 1776   active_layer_->tilings()->AddTiling(0.25f); | 1653   active_layer_->tilings()->AddTiling(0.25f); | 
| 1777   tiling->set_resolution(HIGH_RESOLUTION); | 1654   tiling->set_resolution(HIGH_RESOLUTION); | 
| 1778 | 1655 | 
| 1779   // Sanity checks. | 1656   // Sanity checks. | 
| 1780   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 1657   ASSERT_EQ(3u, active_layer_->tilings()->num_tilings()); | 
| 1781   ASSERT_EQ(tiling, active_layer_->tilings()->TilingAtScale(0.5f)); | 1658   ASSERT_EQ(tiling, active_layer_->tilings()->TilingAtScale(0.5f)); | 
| 1782 | 1659 | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 1805             pending_layer_->tilings()->TilingAtScale(1.0f)->resolution()); | 1682             pending_layer_->tilings()->TilingAtScale(1.0f)->resolution()); | 
| 1806   ASSERT_TRUE(pending_layer_->tilings()->TilingAtScale(1.5f)); | 1683   ASSERT_TRUE(pending_layer_->tilings()->TilingAtScale(1.5f)); | 
| 1807   EXPECT_EQ(NON_IDEAL_RESOLUTION, | 1684   EXPECT_EQ(NON_IDEAL_RESOLUTION, | 
| 1808             pending_layer_->tilings()->TilingAtScale(1.5f)->resolution()); | 1685             pending_layer_->tilings()->TilingAtScale(1.5f)->resolution()); | 
| 1809 } | 1686 } | 
| 1810 | 1687 | 
| 1811 TEST_F(PictureLayerImplTest, NoLowResTilingWithGpuRasterization) { | 1688 TEST_F(PictureLayerImplTest, NoLowResTilingWithGpuRasterization) { | 
| 1812   gfx::Size default_tile_size(host_impl_.settings().default_tile_size); | 1689   gfx::Size default_tile_size(host_impl_.settings().default_tile_size); | 
| 1813   gfx::Size layer_bounds(default_tile_size.width() * 4, | 1690   gfx::Size layer_bounds(default_tile_size.width() * 4, | 
| 1814                          default_tile_size.height() * 4); | 1691                          default_tile_size.height() * 4); | 
| 1815   float result_scale_x, result_scale_y; |  | 
| 1816   gfx::Size result_bounds; |  | 
| 1817 | 1692 | 
| 1818   SetupDefaultTrees(layer_bounds); | 1693   SetupDefaultTrees(layer_bounds); | 
| 1819   EXPECT_FALSE(host_impl_.use_gpu_rasterization()); | 1694   EXPECT_FALSE(host_impl_.use_gpu_rasterization()); | 
| 1820   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 1695   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 1821   pending_layer_->CalculateContentsScale(1.f, | 1696   SetupDrawPropertiesAndManageTilings( | 
| 1822                                          1.f, | 1697       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1823                                          1.f, |  | 
| 1824                                          1.f, |  | 
| 1825                                          false, |  | 
| 1826                                          &result_scale_x, |  | 
| 1827                                          &result_scale_y, |  | 
| 1828                                          &result_bounds); |  | 
| 1829   // Should have a low-res and a high-res tiling. | 1698   // Should have a low-res and a high-res tiling. | 
| 1830   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 1699   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 1831 | 1700 | 
| 1832   ResetTilingsAndRasterScales(); | 1701   ResetTilingsAndRasterScales(); | 
| 1833 | 1702 | 
| 1834   host_impl_.SetUseGpuRasterization(true); | 1703   host_impl_.SetUseGpuRasterization(true); | 
| 1835   EXPECT_TRUE(host_impl_.use_gpu_rasterization()); | 1704   EXPECT_TRUE(host_impl_.use_gpu_rasterization()); | 
| 1836   pending_layer_->CalculateContentsScale(1.f, | 1705   SetupDrawPropertiesAndManageTilings( | 
| 1837                                          1.f, | 1706       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 1838                                          1.f, | 1707 | 
| 1839                                          1.f, |  | 
| 1840                                          false, |  | 
| 1841                                          &result_scale_x, |  | 
| 1842                                          &result_scale_y, |  | 
| 1843                                          &result_bounds); |  | 
| 1844   // Should only have the high-res tiling. | 1708   // Should only have the high-res tiling. | 
| 1845   ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 1709   ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 
| 1846 } | 1710 } | 
| 1847 | 1711 | 
| 1848 TEST_F(PictureLayerImplTest, NoTilingIfDoesNotDrawContent) { | 1712 TEST_F(PictureLayerImplTest, NoTilingIfDoesNotDrawContent) { | 
| 1849   // Set up layers with tilings. | 1713   // Set up layers with tilings. | 
| 1850   SetupDefaultTrees(gfx::Size(10, 10)); | 1714   SetupDefaultTrees(gfx::Size(10, 10)); | 
| 1851   SetContentsScaleOnBothLayers(1.f, 1.f, 1.f, 1.f, false); | 1715   SetContentsScaleOnBothLayers(1.f, 1.f, 1.f, 1.f, false); | 
| 1852   pending_layer_->PushPropertiesTo(active_layer_); | 1716   pending_layer_->PushPropertiesTo(active_layer_); | 
| 1853   EXPECT_TRUE(pending_layer_->DrawsContent()); | 1717   EXPECT_TRUE(pending_layer_->DrawsContent()); | 
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2459 | 2323 | 
| 2460 TEST_F(NoLowResPictureLayerImplTest, ManageTilingsCreatesTilings) { | 2324 TEST_F(NoLowResPictureLayerImplTest, ManageTilingsCreatesTilings) { | 
| 2461   gfx::Size tile_size(400, 400); | 2325   gfx::Size tile_size(400, 400); | 
| 2462   gfx::Size layer_bounds(1300, 1900); | 2326   gfx::Size layer_bounds(1300, 1900); | 
| 2463 | 2327 | 
| 2464   scoped_refptr<FakePicturePileImpl> pending_pile = | 2328   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 2465       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2329       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2466   scoped_refptr<FakePicturePileImpl> active_pile = | 2330   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 2467       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2331       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2468 | 2332 | 
| 2469   float result_scale_x, result_scale_y; |  | 
| 2470   gfx::Size result_bounds; |  | 
| 2471 |  | 
| 2472   SetupTrees(pending_pile, active_pile); | 2333   SetupTrees(pending_pile, active_pile); | 
| 2473   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 2334   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 2474 | 2335 | 
| 2475   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 2336   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 2476   EXPECT_LT(low_res_factor, 1.f); | 2337   EXPECT_LT(low_res_factor, 1.f); | 
| 2477 | 2338 | 
| 2478   pending_layer_->CalculateContentsScale(6.f,  // ideal contents scale | 2339   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 2479                                          3.f,  // device scale | 2340                                       6.f,  // ideal contents scale | 
| 2480                                          2.f,  // page scale | 2341                                       3.f,  // device scale | 
| 2481                                          1.f,  // maximum animation scale | 2342                                       2.f,  // page scale | 
| 2482                                          false, | 2343                                       1.f,  // maximum animation scale | 
| 2483                                          &result_scale_x, | 2344                                       false); | 
| 2484                                          &result_scale_y, |  | 
| 2485                                          &result_bounds); |  | 
| 2486   ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 2345   ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 
| 2487   EXPECT_FLOAT_EQ(6.f, | 2346   EXPECT_FLOAT_EQ(6.f, | 
| 2488                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 2347                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 2489 | 2348 | 
| 2490   // If we change the page scale factor, then we should get new tilings. | 2349   // If we change the page scale factor, then we should get new tilings. | 
| 2491   pending_layer_->CalculateContentsScale(6.6f,  // ideal contents scale | 2350   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 2492                                          3.f,   // device scale | 2351                                       6.6f,  // ideal contents scale | 
| 2493                                          2.2f,  // page scale | 2352                                       3.f,   // device scale | 
| 2494                                          1.f,   // maximum animation scale | 2353                                       2.2f,  // page scale | 
| 2495                                          false, | 2354                                       1.f,   // maximum animation scale | 
| 2496                                          &result_scale_x, | 2355                                       false); | 
| 2497                                          &result_scale_y, |  | 
| 2498                                          &result_bounds); |  | 
| 2499   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 2356   ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); | 
| 2500   EXPECT_FLOAT_EQ(6.6f, | 2357   EXPECT_FLOAT_EQ(6.6f, | 
| 2501                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 2358                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 2502 | 2359 | 
| 2503   // If we change the device scale factor, then we should get new tilings. | 2360   // If we change the device scale factor, then we should get new tilings. | 
| 2504   pending_layer_->CalculateContentsScale(7.26f,  // ideal contents scale | 2361   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 2505                                          3.3f,   // device scale | 2362                                       7.26f,  // ideal contents scale | 
| 2506                                          2.2f,   // page scale | 2363                                       3.3f,   // device scale | 
| 2507                                          1.f,    // maximum animation scale | 2364                                       2.2f,   // page scale | 
| 2508                                          false, | 2365                                       1.f,    // maximum animation scale | 
| 2509                                          &result_scale_x, | 2366                                       false); | 
| 2510                                          &result_scale_y, |  | 
| 2511                                          &result_bounds); |  | 
| 2512   ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 2367   ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 
| 2513   EXPECT_FLOAT_EQ(7.26f, | 2368   EXPECT_FLOAT_EQ(7.26f, | 
| 2514                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 2369                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 2515 | 2370 | 
| 2516   // If we change the device scale factor, but end up at the same total scale | 2371   // If we change the device scale factor, but end up at the same total scale | 
| 2517   // factor somehow, then we don't get new tilings. | 2372   // factor somehow, then we don't get new tilings. | 
| 2518   pending_layer_->CalculateContentsScale(7.26f,  // ideal contents scale | 2373   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 2519                                          2.2f,   // device scale | 2374                                       7.26f,  // ideal contents scale | 
| 2520                                          3.3f,   // page scale | 2375                                       2.2f,   // device scale | 
| 2521                                          1.f,    // maximum animation scale | 2376                                       3.3f,   // page scale | 
| 2522                                          false, | 2377                                       1.f,    // maximum animation scale | 
| 2523                                          &result_scale_x, | 2378                                       false); | 
| 2524                                          &result_scale_y, |  | 
| 2525                                          &result_bounds); |  | 
| 2526   ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 2379   ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 
| 2527   EXPECT_FLOAT_EQ(7.26f, | 2380   EXPECT_FLOAT_EQ(7.26f, | 
| 2528                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 2381                   pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 2529 } | 2382 } | 
| 2530 | 2383 | 
| 2531 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredNullTiles) { | 2384 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredNullTiles) { | 
| 2532   gfx::Size tile_size(100, 100); | 2385   gfx::Size tile_size(100, 100); | 
| 2533   gfx::Size layer_bounds(1000, 1000); | 2386   gfx::Size layer_bounds(1000, 1000); | 
| 2534 | 2387 | 
| 2535   scoped_refptr<FakePicturePileImpl> pending_pile = | 2388   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2610   scoped_refptr<FakePicturePileImpl> active_pile = | 2463   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 2611       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2464       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2612 | 2465 | 
| 2613   SetupTrees(pending_pile, active_pile); | 2466   SetupTrees(pending_pile, active_pile); | 
| 2614 | 2467 | 
| 2615   std::vector<TileManager::PairedPictureLayer> paired_layers; | 2468   std::vector<TileManager::PairedPictureLayer> paired_layers; | 
| 2616   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 2469   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 2617   EXPECT_EQ(0u, paired_layers.size()); | 2470   EXPECT_EQ(0u, paired_layers.size()); | 
| 2618 | 2471 | 
| 2619   // Update tile priorities will force the layer to register itself. | 2472   // Update tile priorities will force the layer to register itself. | 
| 2620   float dummy_contents_scale_x; | 2473   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 2621   float dummy_contents_scale_y; |  | 
| 2622   gfx::Size dummy_content_bounds; |  | 
| 2623   active_layer_->CalculateContentsScale(1.f, |  | 
| 2624                                         1.f, |  | 
| 2625                                         1.f, |  | 
| 2626                                         1.f, |  | 
| 2627                                         false, |  | 
| 2628                                         &dummy_contents_scale_x, |  | 
| 2629                                         &dummy_contents_scale_y, |  | 
| 2630                                         &dummy_content_bounds); |  | 
| 2631   active_layer_->UpdateTilePriorities(); | 2474   active_layer_->UpdateTilePriorities(); | 
| 2632   host_impl_.pending_tree()->UpdateDrawProperties(); | 2475   host_impl_.pending_tree()->UpdateDrawProperties(); | 
| 2633   pending_layer_->CalculateContentsScale(1.f, | 2476   SetupDrawPropertiesAndManageTilings( | 
| 2634                                          1.f, | 2477       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 2635                                          1.f, |  | 
| 2636                                          1.f, |  | 
| 2637                                          false, |  | 
| 2638                                          &dummy_contents_scale_x, |  | 
| 2639                                          &dummy_contents_scale_y, |  | 
| 2640                                          &dummy_content_bounds); |  | 
| 2641   pending_layer_->UpdateTilePriorities(); | 2478   pending_layer_->UpdateTilePriorities(); | 
| 2642 | 2479 | 
| 2643   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 2480   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 2644   EXPECT_EQ(1u, paired_layers.size()); | 2481   EXPECT_EQ(1u, paired_layers.size()); | 
| 2645   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 2482   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 
| 2646   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 2483   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 
| 2647 | 2484 | 
| 2648   // Destroy and recreate tile manager. | 2485   // Destroy and recreate tile manager. | 
| 2649   host_impl_.DidLoseOutputSurface(); | 2486   host_impl_.DidLoseOutputSurface(); | 
| 2650   scoped_ptr<TestWebGraphicsContext3D> context = | 2487   scoped_ptr<TestWebGraphicsContext3D> context = | 
| 2651       TestWebGraphicsContext3D::Create(); | 2488       TestWebGraphicsContext3D::Create(); | 
| 2652   host_impl_.InitializeRenderer( | 2489   host_impl_.InitializeRenderer( | 
| 2653       FakeOutputSurface::Create3d(context.Pass()).PassAs<OutputSurface>()); | 2490       FakeOutputSurface::Create3d(context.Pass()).PassAs<OutputSurface>()); | 
| 2654 | 2491 | 
| 2655   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 2492   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 2656   EXPECT_EQ(0u, paired_layers.size()); | 2493   EXPECT_EQ(0u, paired_layers.size()); | 
| 2657 | 2494 | 
| 2658   active_layer_->CalculateContentsScale(1.f, | 2495   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 2659                                         1.f, |  | 
| 2660                                         1.f, |  | 
| 2661                                         1.f, |  | 
| 2662                                         false, |  | 
| 2663                                         &dummy_contents_scale_x, |  | 
| 2664                                         &dummy_contents_scale_y, |  | 
| 2665                                         &dummy_content_bounds); |  | 
| 2666   active_layer_->UpdateTilePriorities(); | 2496   active_layer_->UpdateTilePriorities(); | 
| 2667   host_impl_.pending_tree()->UpdateDrawProperties(); | 2497   host_impl_.pending_tree()->UpdateDrawProperties(); | 
| 2668   pending_layer_->CalculateContentsScale(1.f, | 2498   SetupDrawPropertiesAndManageTilings( | 
| 2669                                          1.f, | 2499       pending_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 2670                                          1.f, |  | 
| 2671                                          1.f, |  | 
| 2672                                          false, |  | 
| 2673                                          &dummy_contents_scale_x, |  | 
| 2674                                          &dummy_contents_scale_y, |  | 
| 2675                                          &dummy_content_bounds); |  | 
| 2676   pending_layer_->UpdateTilePriorities(); | 2500   pending_layer_->UpdateTilePriorities(); | 
| 2677 | 2501 | 
| 2678   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 2502   host_impl_.tile_manager()->GetPairedPictureLayers(&paired_layers); | 
| 2679   EXPECT_EQ(1u, paired_layers.size()); | 2503   EXPECT_EQ(1u, paired_layers.size()); | 
| 2680   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 2504   EXPECT_EQ(active_layer_, paired_layers[0].active_layer); | 
| 2681   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 2505   EXPECT_EQ(pending_layer_, paired_layers[0].pending_layer); | 
| 2682 } | 2506 } | 
| 2683 | 2507 | 
| 2684 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 2508 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 
| 2685   base::TimeTicks time_ticks; | 2509   base::TimeTicks time_ticks; | 
| 2686   host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2510   host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 
| 2687 | 2511 | 
| 2688   gfx::Size tile_size(100, 100); | 2512   gfx::Size tile_size(100, 100); | 
| 2689   gfx::Size layer_bounds(400, 400); | 2513   gfx::Size layer_bounds(400, 400); | 
| 2690 | 2514 | 
| 2691   scoped_refptr<FakePicturePileImpl> pending_pile = | 2515   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 2692       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2516       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2693   scoped_refptr<FakePicturePileImpl> active_pile = | 2517   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 2694       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2518       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2695 | 2519 | 
| 2696   SetupTrees(pending_pile, active_pile); | 2520   SetupTrees(pending_pile, active_pile); | 
| 2697 | 2521 | 
| 2698   Region invalidation; | 2522   Region invalidation; | 
| 2699   AddDefaultTilingsWithInvalidation(invalidation); | 2523   AddDefaultTilingsWithInvalidation(invalidation); | 
| 2700   float dummy_contents_scale_x; | 2524   SetupDrawPropertiesAndManageTilings(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 
| 2701   float dummy_contents_scale_y; |  | 
| 2702   gfx::Size dummy_content_bounds; |  | 
| 2703   active_layer_->CalculateContentsScale(1.f, |  | 
| 2704                                         1.f, |  | 
| 2705                                         1.f, |  | 
| 2706                                         1.f, |  | 
| 2707                                         false, |  | 
| 2708                                         &dummy_contents_scale_x, |  | 
| 2709                                         &dummy_contents_scale_y, |  | 
| 2710                                         &dummy_content_bounds); |  | 
| 2711 | 2525 | 
| 2712   // UpdateTilePriorities with valid viewport. Should update tile viewport. | 2526   // UpdateTilePriorities with valid viewport. Should update tile viewport. | 
| 2713   bool valid_for_tile_management = true; | 2527   bool valid_for_tile_management = true; | 
| 2714   gfx::Rect viewport = gfx::Rect(layer_bounds); | 2528   gfx::Rect viewport = gfx::Rect(layer_bounds); | 
| 2715   gfx::Transform transform; | 2529   gfx::Transform transform; | 
| 2716   host_impl_.SetExternalDrawConstraints( | 2530   host_impl_.SetExternalDrawConstraints( | 
| 2717       transform, viewport, viewport, valid_for_tile_management); | 2531       transform, viewport, viewport, valid_for_tile_management); | 
| 2718   active_layer_->draw_properties().visible_content_rect = viewport; | 2532   active_layer_->draw_properties().visible_content_rect = viewport; | 
| 2719   active_layer_->draw_properties().screen_space_transform = transform; | 2533   active_layer_->draw_properties().screen_space_transform = transform; | 
| 2720   active_layer_->UpdateTilePriorities(); | 2534   active_layer_->UpdateTilePriorities(); | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2799 | 2613 | 
| 2800 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { | 2614 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { | 
| 2801   gfx::Size tile_size(400, 400); | 2615   gfx::Size tile_size(400, 400); | 
| 2802   gfx::Size layer_bounds(1300, 1900); | 2616   gfx::Size layer_bounds(1300, 1900); | 
| 2803 | 2617 | 
| 2804   scoped_refptr<FakePicturePileImpl> pending_pile = | 2618   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 2805       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2619       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2806   scoped_refptr<FakePicturePileImpl> active_pile = | 2620   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 2807       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2621       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2808 | 2622 | 
| 2809   float result_scale_x, result_scale_y; |  | 
| 2810   gfx::Size result_bounds; |  | 
| 2811   std::vector<PictureLayerTiling*> used_tilings; | 2623   std::vector<PictureLayerTiling*> used_tilings; | 
| 2812 | 2624 | 
| 2813   SetupTrees(pending_pile, active_pile); | 2625   SetupTrees(pending_pile, active_pile); | 
| 2814   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 2626   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 2815 | 2627 | 
| 2816   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 2628   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 2817   EXPECT_LT(low_res_factor, 1.f); | 2629   EXPECT_LT(low_res_factor, 1.f); | 
| 2818 | 2630 | 
| 2819   float device_scale = 1.7f; | 2631   float device_scale = 1.7f; | 
| 2820   float page_scale = 3.2f; | 2632   float page_scale = 3.2f; | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2869   // Now move the ideal scale to 1.0. Our target stays 1.2. | 2681   // Now move the ideal scale to 1.0. Our target stays 1.2. | 
| 2870   SetContentsScaleOnBothLayers(1.f, device_scale, page_scale, 1.f, false); | 2682   SetContentsScaleOnBothLayers(1.f, device_scale, page_scale, 1.f, false); | 
| 2871 | 2683 | 
| 2872   // All the tilings are between are target and the ideal, so they are not | 2684   // All the tilings are between are target and the ideal, so they are not | 
| 2873   // removed. | 2685   // removed. | 
| 2874   used_tilings.clear(); | 2686   used_tilings.clear(); | 
| 2875   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 2687   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 2876   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 2688   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 
| 2877 | 2689 | 
| 2878   // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. | 2690   // Now move the ideal scale to 1.1 on the active layer. Our target stays 1.2. | 
| 2879   active_layer_->CalculateContentsScale(1.1f, | 2691   SetupDrawPropertiesAndManageTilings( | 
| 2880                                         device_scale, | 2692       active_layer_, 1.1f, device_scale, page_scale, 1.f, false); | 
| 2881                                         page_scale, |  | 
| 2882                                         1.f, |  | 
| 2883                                         false, |  | 
| 2884                                         &result_scale_x, |  | 
| 2885                                         &result_scale_y, |  | 
| 2886                                         &result_bounds); |  | 
| 2887 | 2693 | 
| 2888   // Because the pending layer's ideal scale is still 1.0, our tilings fall | 2694   // Because the pending layer's ideal scale is still 1.0, our tilings fall | 
| 2889   // in the range [1.0,1.2] and are kept. | 2695   // in the range [1.0,1.2] and are kept. | 
| 2890   used_tilings.clear(); | 2696   used_tilings.clear(); | 
| 2891   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 2697   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 2892   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 2698   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 
| 2893 | 2699 | 
| 2894   // Move the ideal scale on the pending layer to 1.1 as well. Our target stays | 2700   // Move the ideal scale on the pending layer to 1.1 as well. Our target stays | 
| 2895   // 1.2 still. | 2701   // 1.2 still. | 
| 2896   pending_layer_->CalculateContentsScale(1.1f, | 2702   SetupDrawPropertiesAndManageTilings( | 
| 2897                                          device_scale, | 2703       pending_layer_, 1.1f, device_scale, page_scale, 1.f, false); | 
| 2898                                          page_scale, |  | 
| 2899                                          1.f, |  | 
| 2900                                          false, |  | 
| 2901                                          &result_scale_x, |  | 
| 2902                                          &result_scale_y, |  | 
| 2903                                          &result_bounds); |  | 
| 2904 | 2704 | 
| 2905   // Our 1.0 tiling now falls outside the range between our ideal scale and our | 2705   // Our 1.0 tiling now falls outside the range between our ideal scale and our | 
| 2906   // target raster scale. But it is in our used tilings set, so nothing is | 2706   // target raster scale. But it is in our used tilings set, so nothing is | 
| 2907   // deleted. | 2707   // deleted. | 
| 2908   used_tilings.clear(); | 2708   used_tilings.clear(); | 
| 2909   used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 2709   used_tilings.push_back(active_layer_->tilings()->tiling_at(1)); | 
| 2910   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 2710   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 2911   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 2711   ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 
| 2912 | 2712 | 
| 2913   // If we remove it from our used tilings set, it is outside the range to keep | 2713   // If we remove it from our used tilings set, it is outside the range to keep | 
| 2914   // so it is deleted. | 2714   // so it is deleted. | 
| 2915   used_tilings.clear(); | 2715   used_tilings.clear(); | 
| 2916   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 2716   active_layer_->CleanUpTilingsOnActiveLayer(used_tilings); | 
| 2917   ASSERT_EQ(1u, active_layer_->tilings()->num_tilings()); | 2717   ASSERT_EQ(1u, active_layer_->tilings()->num_tilings()); | 
| 2918 } | 2718 } | 
| 2919 | 2719 | 
| 2920 TEST_F(PictureLayerImplTest, ScaleCollision) { | 2720 TEST_F(PictureLayerImplTest, ScaleCollision) { | 
| 2921   gfx::Size tile_size(400, 400); | 2721   gfx::Size tile_size(400, 400); | 
| 2922   gfx::Size layer_bounds(1300, 1900); | 2722   gfx::Size layer_bounds(1300, 1900); | 
| 2923 | 2723 | 
| 2924   scoped_refptr<FakePicturePileImpl> pending_pile = | 2724   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 2925       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2725       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2926   scoped_refptr<FakePicturePileImpl> active_pile = | 2726   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 2927       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2727       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 2928 | 2728 | 
| 2929   float result_scale_x, result_scale_y; |  | 
| 2930   gfx::Size result_bounds; |  | 
| 2931   std::vector<PictureLayerTiling*> used_tilings; | 2729   std::vector<PictureLayerTiling*> used_tilings; | 
| 2932 | 2730 | 
| 2933   SetupTrees(pending_pile, active_pile); | 2731   SetupTrees(pending_pile, active_pile); | 
| 2934 | 2732 | 
| 2935   float pending_contents_scale = 1.f; | 2733   float pending_contents_scale = 1.f; | 
| 2936   float active_contents_scale = 2.f; | 2734   float active_contents_scale = 2.f; | 
| 2937   float device_scale_factor = 1.f; | 2735   float device_scale_factor = 1.f; | 
| 2938   float page_scale_factor = 1.f; | 2736   float page_scale_factor = 1.f; | 
| 2939   float maximum_animation_contents_scale = 1.f; | 2737   float maximum_animation_contents_scale = 1.f; | 
| 2940   bool animating_transform = false; | 2738   bool animating_transform = false; | 
| 2941 | 2739 | 
| 2942   EXPECT_TRUE(host_impl_.settings().create_low_res_tiling); | 2740   EXPECT_TRUE(host_impl_.settings().create_low_res_tiling); | 
| 2943   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 2741   float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 
| 2944   EXPECT_LT(low_res_factor, 1.f); | 2742   EXPECT_LT(low_res_factor, 1.f); | 
| 2945 | 2743 | 
| 2946   pending_layer_->CalculateContentsScale(pending_contents_scale, | 2744   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 2947                                          device_scale_factor, | 2745                                       pending_contents_scale, | 
| 2948                                          page_scale_factor, | 2746                                       device_scale_factor, | 
| 2949                                          maximum_animation_contents_scale, | 2747                                       page_scale_factor, | 
| 2950                                          animating_transform, | 2748                                       maximum_animation_contents_scale, | 
| 2951                                          &result_scale_x, | 2749                                       animating_transform); | 
| 2952                                          &result_scale_y, | 2750   SetupDrawPropertiesAndManageTilings(active_layer_, | 
| 2953                                          &result_bounds); | 2751                                       active_contents_scale, | 
| 2954   active_layer_->CalculateContentsScale(active_contents_scale, | 2752                                       device_scale_factor, | 
| 2955                                         device_scale_factor, | 2753                                       page_scale_factor, | 
| 2956                                         page_scale_factor, | 2754                                       maximum_animation_contents_scale, | 
| 2957                                         maximum_animation_contents_scale, | 2755                                       animating_transform); | 
| 2958                                         animating_transform, |  | 
| 2959                                         &result_scale_x, |  | 
| 2960                                         &result_scale_y, |  | 
| 2961                                         &result_bounds); |  | 
| 2962 | 2756 | 
| 2963   ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); | 2757   ASSERT_EQ(4u, pending_layer_->tilings()->num_tilings()); | 
| 2964   ASSERT_EQ(4u, active_layer_->tilings()->num_tilings()); | 2758   ASSERT_EQ(4u, active_layer_->tilings()->num_tilings()); | 
| 2965 | 2759 | 
| 2966   EXPECT_EQ(active_contents_scale, | 2760   EXPECT_EQ(active_contents_scale, | 
| 2967             pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 2761             pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 
| 2968   EXPECT_EQ(pending_contents_scale, | 2762   EXPECT_EQ(pending_contents_scale, | 
| 2969             pending_layer_->tilings()->tiling_at(1)->contents_scale()); | 2763             pending_layer_->tilings()->tiling_at(1)->contents_scale()); | 
| 2970   EXPECT_EQ(active_contents_scale * low_res_factor, | 2764   EXPECT_EQ(active_contents_scale * low_res_factor, | 
| 2971             pending_layer_->tilings()->tiling_at(2)->contents_scale()); | 2765             pending_layer_->tilings()->tiling_at(2)->contents_scale()); | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 2999 | 2793 | 
| 3000 TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { | 2794 TEST_F(NoLowResPictureLayerImplTest, ReleaseResources) { | 
| 3001   gfx::Size tile_size(400, 400); | 2795   gfx::Size tile_size(400, 400); | 
| 3002   gfx::Size layer_bounds(1300, 1900); | 2796   gfx::Size layer_bounds(1300, 1900); | 
| 3003 | 2797 | 
| 3004   scoped_refptr<FakePicturePileImpl> pending_pile = | 2798   scoped_refptr<FakePicturePileImpl> pending_pile = | 
| 3005       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2799       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 3006   scoped_refptr<FakePicturePileImpl> active_pile = | 2800   scoped_refptr<FakePicturePileImpl> active_pile = | 
| 3007       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2801       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
| 3008 | 2802 | 
| 3009   float result_scale_x, result_scale_y; |  | 
| 3010   gfx::Size result_bounds; |  | 
| 3011 |  | 
| 3012   SetupTrees(pending_pile, active_pile); | 2803   SetupTrees(pending_pile, active_pile); | 
| 3013   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 2804   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 3014 | 2805 | 
| 3015   pending_layer_->CalculateContentsScale(1.3f,  // ideal contents scale | 2806   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 3016                                          2.7f,  // device scale | 2807                                       1.3f,  // ideal contents scale | 
| 3017                                          3.2f,  // page scale | 2808                                       2.7f,  // device scale | 
| 3018                                          1.f,   // maximum animation scale | 2809                                       3.2f,  // page scale | 
| 3019                                          false, | 2810                                       1.f,   // maximum animation scale | 
| 3020                                          &result_scale_x, | 2811                                       false); | 
| 3021                                          &result_scale_y, |  | 
| 3022                                          &result_bounds); |  | 
| 3023   EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 2812   EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 
| 3024 | 2813 | 
| 3025   // All tilings should be removed when losing output surface. | 2814   // All tilings should be removed when losing output surface. | 
| 3026   active_layer_->ReleaseResources(); | 2815   active_layer_->ReleaseResources(); | 
| 3027   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 2816   EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 
| 3028   pending_layer_->ReleaseResources(); | 2817   pending_layer_->ReleaseResources(); | 
| 3029   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 2818   EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 
| 3030 | 2819 | 
| 3031   // This should create new tilings. | 2820   // This should create new tilings. | 
| 3032   pending_layer_->CalculateContentsScale(1.3f,  // ideal contents scale | 2821   SetupDrawPropertiesAndManageTilings(pending_layer_, | 
| 3033                                          2.7f,  // device scale | 2822                                       1.3f,  // ideal contents scale | 
| 3034                                          3.2f,  // page scale | 2823                                       2.7f,  // device scale | 
| 3035                                          1.f,   // maximum animation scale | 2824                                       3.2f,  // page scale | 
| 3036                                          false, | 2825                                       1.f,   // maximum animation scale | 
| 3037                                          &result_scale_x, | 2826                                       false); | 
| 3038                                          &result_scale_y, |  | 
| 3039                                          &result_bounds); |  | 
| 3040   EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 2827   EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 
| 3041 } | 2828 } | 
| 3042 | 2829 | 
|  | 2830 TEST_F(PictureLayerImplTest, SharedQuadStateContainsMaxTilingScale) { | 
|  | 2831   MockQuadCuller quad_culler; | 
|  | 2832 | 
|  | 2833   gfx::Size tile_size(400, 400); | 
|  | 2834   gfx::Size layer_bounds(1000, 2000); | 
|  | 2835 | 
|  | 2836   scoped_refptr<FakePicturePileImpl> pending_pile = | 
|  | 2837       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
|  | 2838   scoped_refptr<FakePicturePileImpl> active_pile = | 
|  | 2839       FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 
|  | 2840 | 
|  | 2841   SetupTrees(pending_pile, active_pile); | 
|  | 2842 | 
|  | 2843   SetupDrawPropertiesAndManageTilings( | 
|  | 2844       pending_layer_, 2.5f, 1.f, 1.f, 1.f, false); | 
|  | 2845   host_impl_.pending_tree()->UpdateDrawProperties(); | 
|  | 2846 | 
|  | 2847   active_layer_->draw_properties().visible_content_rect = | 
|  | 2848       gfx::Rect(layer_bounds); | 
|  | 2849   host_impl_.active_tree()->UpdateDrawProperties(); | 
|  | 2850 | 
|  | 2851   float max_contents_scale = active_layer_->MaximumTilingContentsScale(); | 
|  | 2852   gfx::Transform scaled_draw_transform = active_layer_->draw_transform(); | 
|  | 2853   scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale, | 
|  | 2854                               SK_MScalar1 / max_contents_scale); | 
|  | 2855 | 
|  | 2856   AppendQuadsData data; | 
|  | 2857   active_layer_->AppendQuads(&quad_culler, &data); | 
|  | 2858 | 
|  | 2859   // SharedQuadState should have be of size 1, as we are doing AppenQuad once. | 
|  | 2860   EXPECT_EQ(1u, quad_culler.shared_quad_state_list().size()); | 
|  | 2861   // The content_to_target_transform should be scaled by the | 
|  | 2862   // MaximumTilingContentsScale on the layer. | 
|  | 2863   EXPECT_EQ(scaled_draw_transform.ToString(), | 
|  | 2864             quad_culler.shared_quad_state_list()[0] | 
|  | 2865                 ->content_to_target_transform.ToString()); | 
|  | 2866   // The content_bounds should be scaled by the | 
|  | 2867   // MaximumTilingContentsScale on the layer. | 
|  | 2868   EXPECT_EQ(gfx::Size(2500u, 5000u).ToString(), | 
|  | 2869             quad_culler.shared_quad_state_list()[0]->content_bounds.ToString()); | 
|  | 2870   // The visible_content_rect should be scaled by the | 
|  | 2871   // MaximumTilingContentsScale on the layer. | 
|  | 2872   EXPECT_EQ( | 
|  | 2873       gfx::Rect(0u, 0u, 2500u, 5000u).ToString(), | 
|  | 2874       quad_culler.shared_quad_state_list()[0]->visible_content_rect.ToString()); | 
|  | 2875 } | 
|  | 2876 | 
| 3043 }  // namespace | 2877 }  // namespace | 
| 3044 }  // namespace cc | 2878 }  // namespace cc | 
| OLD | NEW | 
|---|