summaryrefslogtreecommitdiffstats
path: root/cc/test/fake_picture_layer_tiling_client.cc
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 06:51:56 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 06:51:56 +0000
commit8b09c34460ec0f1a41fc9f01049ac52d6ecea660 (patch)
treed93adba84e5a33b6b2aa0c66eebb569f74eb5e6f /cc/test/fake_picture_layer_tiling_client.cc
parent25eaf9b34c24d45b5c6f4bdb1c98ae20ae539d1f (diff)
downloadchromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.zip
chromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.tar.gz
chromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.tar.bz2
Revert of cc: Replace recorded region with direct map lookup (https://codereview.chromium.org/196343005/)
Reason for revert: Probably broke telemetry's testMeasurementSmoke (which only runs on the cq and not the main waterfall for some reason): http://crbug.com/350697 Original issue's description: > cc: Replace recorded region with direct map lookup > > If the viewport is extremely large, then keeping track of the recorded > region in PicturePile with an actual Region becomes extremely slow due > to a large number of rects being inserted into it. > > The recorded region behaves as a cache to the picture map; it's a > simpler way to know the state of all of the recordings contained within. > > In practice, the recorded region is only used for two things: a "should > this pile bother to create tilings" optimization and a "can a tile be > rastered in this content rect" check aka CanRaster. > > The optimization for "should create tilings" is replaced by a > has_any_recordings_ boolean, which could have a false positive in theory > (resizing to a smaller but non-empty size), but which shouldn't happen > in practice. Even if it did, this would only be a performance penalty > for creating no-op tilings that can't create tiles (due to CanRaster). > > The CanRaster check is replaced by a viewport hint, as most tiles that > the tiling creates will be inside of the very large expanded viewport > during recording, turning an expensive Region.Contains check to a > Rect.Contains one. In the edge cases where tiles are being created > outside of that expanded viewport, it will check the picture map > directly. This should only happen when the user has scrolled thousands > of pixels without a commit. > > BUG=b/13302269 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=256953 TBR=danakj@chromium.org,vmpstr@chromium.org,enne@chromium.org NOTREECHECKS=true NOTRY=true BUG=b/13302269 Review URL: https://codereview.chromium.org/196023015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/test/fake_picture_layer_tiling_client.cc')
-rw-r--r--cc/test/fake_picture_layer_tiling_client.cc18
1 files changed, 15 insertions, 3 deletions
diff --git a/cc/test/fake_picture_layer_tiling_client.cc b/cc/test/fake_picture_layer_tiling_client.cc
index 4289b9d4..36d1eee 100644
--- a/cc/test/fake_picture_layer_tiling_client.cc
+++ b/cc/test/fake_picture_layer_tiling_client.cc
@@ -6,14 +6,26 @@
#include <limits>
-#include "cc/test/fake_picture_pile_impl.h"
#include "cc/test/fake_tile_manager.h"
namespace cc {
+class FakeInfinitePicturePileImpl : public PicturePileImpl {
+ public:
+ FakeInfinitePicturePileImpl() {
+ gfx::Size size(std::numeric_limits<int>::max(),
+ std::numeric_limits<int>::max());
+ Resize(size);
+ recorded_region_ = Region(gfx::Rect(size));
+ }
+
+ protected:
+ virtual ~FakeInfinitePicturePileImpl() {}
+};
+
FakePictureLayerTilingClient::FakePictureLayerTilingClient()
: tile_manager_(new FakeTileManager(&tile_manager_client_)),
- pile_(FakePicturePileImpl::CreateInfiniteFilledPile()),
+ pile_(new FakeInfinitePicturePileImpl()),
twin_tiling_(NULL),
allow_create_tile_(true),
max_tiles_for_interest_area_(10000),
@@ -24,7 +36,7 @@ FakePictureLayerTilingClient::FakePictureLayerTilingClient(
ResourceProvider* resource_provider)
: tile_manager_(
new FakeTileManager(&tile_manager_client_, resource_provider)),
- pile_(FakePicturePileImpl::CreateInfiniteFilledPile()),
+ pile_(new FakeInfinitePicturePileImpl()),
twin_tiling_(NULL),
allow_create_tile_(true),
max_tiles_for_interest_area_(10000),