| Index: cc/region_unittest.cc
|
| diff --git a/cc/region_unittest.cc b/cc/region_unittest.cc
|
| index c73c5f26dd1209aa1d996e0478422139488b429b..7aacfd4ea5dadf1b307f466fbbbc6ad94095e525 100644
|
| --- a/cc/region_unittest.cc
|
| +++ b/cc/region_unittest.cc
|
| @@ -417,4 +417,53 @@ TEST(RegionTest, IsEmpty) {
|
| EXPECT_FALSE(SkIRect::MakeXYWH(0, 0, 2, 2).isEmpty());
|
| }
|
|
|
| -} // namespace
|
| +} // namespace
|
| +
|
| +#include "cc/layer.h"
|
| +#include "cc/layer_tree_host_common.h"
|
| +#include "cc/occlusion_tracker.h"
|
| +
|
| +void blah() {
|
| + static int count = 0;
|
| + ++count;
|
| +}
|
| +
|
| +namespace {
|
| +TEST(RegionTest, Speed) {
|
| + scoped_refptr<Layer> root_layer = Layer::create();
|
| +
|
| + for (int i = 0; i < 10000; ++i) {
|
| + scoped_refptr<Layer> layer = Layer::create();
|
| + layer->setIsDrawable(true);
|
| + layer->setAnchorPoint(gfx::Point());
|
| + layer->setBounds(gfx::Size(400, 400));
|
| + layer->setContentsOpaque(true);
|
| +
|
| + int x = i % 600;
|
| + int y = 600 - x;
|
| + layer->setPosition(gfx::Point(x, y));
|
| +
|
| + root_layer->addChild(layer);
|
| + }
|
| +
|
| + Layer::LayerList renderSurfaceLayerList;
|
| + gfx::Size device_viewport_size(1000, 1000);
|
| + LayerTreeHostCommon::calculateDrawTransforms(root_layer, device_viewport_size, 1, 1, 1000, renderSurfaceLayerList);
|
| +
|
| + bool recordMetrics = false;
|
| + OcclusionTracker occlusionTracker(gfx::Rect(device_viewport_size), recordMetrics);
|
| + occlusionTracker.setMinimumTrackingSize(gfx::Size());
|
| +
|
| + typedef LayerIterator<Layer, Layer::LayerList, RenderSurface, LayerIteratorActions::FrontToBack> LayerIteratorType;
|
| + LayerIteratorType end = LayerIteratorType::end(&renderSurfaceLayerList);
|
| + for (LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); it != end; ++it) {
|
| + occlusionTracker.enterLayer(it);
|
| +
|
| + bool occluded = occlusionTracker.occluded(it->renderTarget(), gfx::Rect(it->contentBounds()), it->drawTransform(), true, it->drawableContentRect(), NULL);
|
| + if (!occluded)
|
| + blah();
|
| +
|
| + occlusionTracker.leaveLayer(it);
|
| + }
|
| +}
|
| +} // namespace
|
|
|