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

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

Issue 555183002: cc: Fix layer raster tile iterator not to skip a tile erroneously. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 2480 matching lines...) Expand 10 before | Expand all | Expand 10 after
2491 2491
2492 SetContentsScaleOnBothLayers(contents_scale, 2492 SetContentsScaleOnBothLayers(contents_scale,
2493 device_scale, 2493 device_scale,
2494 page_scale, 2494 page_scale,
2495 maximum_animation_scale, 2495 maximum_animation_scale,
2496 animating_transform); 2496 animating_transform);
2497 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f); 2497 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f);
2498 } 2498 }
2499 2499
2500 TEST_F(PictureLayerImplTest, LayerRasterTileIterator) { 2500 TEST_F(PictureLayerImplTest, LayerRasterTileIterator) {
2501 base::TimeTicks time_ticks;
2502 time_ticks += base::TimeDelta::FromMilliseconds(1);
2503 host_impl_.SetCurrentBeginFrameArgs(
2504 CreateBeginFrameArgsForTesting(time_ticks));
2505
2501 gfx::Size tile_size(100, 100); 2506 gfx::Size tile_size(100, 100);
2502 gfx::Size layer_bounds(1000, 1000); 2507 gfx::Size layer_bounds(1000, 1000);
2503 2508
2504 scoped_refptr<FakePicturePileImpl> pending_pile = 2509 scoped_refptr<FakePicturePileImpl> pending_pile =
2505 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2510 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2506 2511
2507 SetupPendingTree(pending_pile); 2512 SetupPendingTree(pending_pile);
2508 2513
2509 ASSERT_TRUE(pending_layer_->CanHaveTilings()); 2514 ASSERT_TRUE(pending_layer_->CanHaveTilings());
2510 2515
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2556 unique_tiles.insert(tile); 2561 unique_tiles.insert(tile);
2557 } 2562 }
2558 2563
2559 EXPECT_TRUE(reached_prepaint); 2564 EXPECT_TRUE(reached_prepaint);
2560 EXPECT_EQ(0u, non_ideal_tile_count); 2565 EXPECT_EQ(0u, non_ideal_tile_count);
2561 EXPECT_EQ(1u, low_res_tile_count); 2566 EXPECT_EQ(1u, low_res_tile_count);
2562 EXPECT_EQ(16u, high_res_tile_count); 2567 EXPECT_EQ(16u, high_res_tile_count);
2563 EXPECT_EQ(low_res_tile_count + high_res_tile_count + non_ideal_tile_count, 2568 EXPECT_EQ(low_res_tile_count + high_res_tile_count + non_ideal_tile_count,
2564 unique_tiles.size()); 2569 unique_tiles.size());
2565 2570
2571 time_ticks += base::TimeDelta::FromMilliseconds(200);
2572 host_impl_.SetCurrentBeginFrameArgs(
2573 CreateBeginFrameArgsForTesting(time_ticks));
2574
2575 gfx::Rect viewport = gfx::Rect(1100, 1100, 500, 500);
2576 gfx::Transform transform;
2577 bool resourceless_software_draw = false;
2578 host_impl_.SetExternalDrawConstraints(transform,
vmpstr 2014/09/09 17:37:35 nit: Does host_impl_.SetViewportSize work here ins
USE eero AT chromium.org 2014/09/10 07:48:19 I don't see how as it is not about size but positi
2579 viewport,
2580 viewport,
2581 viewport,
2582 transform,
2583 resourceless_software_draw);
2584 pending_layer_->draw_properties().visible_content_rect = viewport;
2585 pending_layer_->draw_properties().screen_space_transform = transform;
vmpstr 2014/09/09 17:37:35 I don't think you need this?
USE eero AT chromium.org 2014/09/10 07:48:19 I'll check.
2586 pending_layer_->UpdateTiles(NULL);
2587
2588 unique_tiles.clear();
2589 reached_prepaint = false;
2590 non_ideal_tile_count = 0u;
2591 low_res_tile_count = 0u;
2592 high_res_tile_count = 0u;
2593 for (it = PictureLayerImpl::LayerRasterTileIterator(pending_layer_, false);
2594 it;
2595 ++it) {
2596 Tile* tile = *it;
2597 TilePriority priority = tile->priority(PENDING_TREE);
2598
2599 EXPECT_TRUE(tile);
2600
2601 // Non-high res tiles only get visible tiles. Also, prepaint should only
2602 // come at the end of the iteration.
2603 if (priority.resolution != HIGH_RESOLUTION)
2604 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
2605 else if (reached_prepaint)
2606 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
2607 else
2608 reached_prepaint = priority.priority_bin != TilePriority::NOW;
2609
2610 non_ideal_tile_count += priority.resolution == NON_IDEAL_RESOLUTION;
2611 low_res_tile_count += priority.resolution == LOW_RESOLUTION;
2612 high_res_tile_count += priority.resolution == HIGH_RESOLUTION;
2613
2614 unique_tiles.insert(tile);
2615 }
2616
2617 EXPECT_TRUE(reached_prepaint);
2618 EXPECT_EQ(0u, non_ideal_tile_count);
2619 EXPECT_EQ(0u, low_res_tile_count);
2620 EXPECT_EQ(16u, high_res_tile_count);
USE eero AT chromium.org 2014/09/09 17:13:45 Without the fix, the iterator returns only 15 high
vmpstr 2014/09/09 17:37:35 These are non-now ones, right?
USE eero AT chromium.org 2014/09/10 07:48:19 Yes, correct.
2621 EXPECT_EQ(low_res_tile_count + high_res_tile_count + non_ideal_tile_count,
2622 unique_tiles.size());
2623
2624 time_ticks += base::TimeDelta::FromMilliseconds(200);
2625 host_impl_.SetCurrentBeginFrameArgs(
2626 CreateBeginFrameArgsForTesting(time_ticks));
2627
2628 viewport = gfx::Rect(0, 0, 500, 500);
2629 host_impl_.SetExternalDrawConstraints(transform,
vmpstr 2014/09/09 17:37:35 Same comments here as above
USE eero AT chromium.org 2014/09/10 07:48:19 And the same reply.
2630 viewport,
2631 viewport,
2632 viewport,
2633 transform,
2634 resourceless_software_draw);
2635 pending_layer_->draw_properties().visible_content_rect = viewport;
2636 pending_layer_->draw_properties().screen_space_transform = transform;
2637 pending_layer_->UpdateTiles(NULL);
2638
2566 std::vector<Tile*> high_res_tiles = high_res_tiling->AllTilesForTesting(); 2639 std::vector<Tile*> high_res_tiles = high_res_tiling->AllTilesForTesting();
2567 for (std::vector<Tile*>::iterator tile_it = high_res_tiles.begin(); 2640 for (std::vector<Tile*>::iterator tile_it = high_res_tiles.begin();
2568 tile_it != high_res_tiles.end(); 2641 tile_it != high_res_tiles.end();
2569 ++tile_it) { 2642 ++tile_it) {
2570 Tile* tile = *tile_it; 2643 Tile* tile = *tile_it;
2571 ManagedTileState::TileVersion& tile_version = 2644 ManagedTileState::TileVersion& tile_version =
2572 tile->GetTileVersionForTesting( 2645 tile->GetTileVersionForTesting(
2573 tile->DetermineRasterModeForTree(ACTIVE_TREE)); 2646 tile->DetermineRasterModeForTree(ACTIVE_TREE));
2574 tile_version.SetSolidColorForTesting(SK_ColorRED); 2647 tile_version.SetSolidColorForTesting(SK_ColorRED);
2575 } 2648 }
(...skipping 1597 matching lines...) Expand 10 before | Expand all | Expand 10 after
4173 ActivateTree(); 4246 ActivateTree();
4174 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); 4247 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer());
4175 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); 4248 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer());
4176 4249
4177 host_impl_.ResetRecycleTreeForTesting(); 4250 host_impl_.ResetRecycleTreeForTesting();
4178 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); 4251 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer());
4179 } 4252 }
4180 4253
4181 } // namespace 4254 } // namespace
4182 } // namespace cc 4255 } // namespace cc
OLDNEW
« cc/layers/picture_layer_impl.cc ('K') | « cc/layers/picture_layer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698