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

Side by Side Diff: cc/tiled_layer_unittest.cc

Issue 11366094: cc: Create a Region class that wraps SkRegion, to replace use of WebCore::Region. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « cc/tiled_layer.cc ('k') | cc/tree_synchronizer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/tiled_layer.h" 7 #include "cc/tiled_layer.h"
8 8
9 #include "cc/bitmap_content_layer_updater.h" 9 #include "cc/bitmap_content_layer_updater.h"
10 #include "cc/layer_painter.h" 10 #include "cc/layer_painter.h"
(...skipping 16 matching lines...) Expand all
27 27
28 namespace { 28 namespace {
29 29
30 class TestOcclusionTracker : public OcclusionTracker { 30 class TestOcclusionTracker : public OcclusionTracker {
31 public: 31 public:
32 TestOcclusionTracker() 32 TestOcclusionTracker()
33 : OcclusionTracker(gfx::Rect(0, 0, 1000, 1000), true) 33 : OcclusionTracker(gfx::Rect(0, 0, 1000, 1000), true)
34 , m_layerClipRectInTarget(gfx::Rect(0, 0, 1000, 1000)) 34 , m_layerClipRectInTarget(gfx::Rect(0, 0, 1000, 1000))
35 { 35 {
36 // Pretend we have visited a render surface. 36 // Pretend we have visited a render surface.
37 m_stack.append(StackObject()); 37 m_stack.push_back(StackObject());
38 } 38 }
39 39
40 void setOcclusion(const Region& occlusion) { m_stack.last().occlusionInTarge t = occlusion; } 40 void setOcclusion(const Region& occlusion) { m_stack.back().occlusionInTarge t = occlusion; }
41 41
42 protected: 42 protected:
43 virtual gfx::Rect layerClipRectInTarget(const Layer* layer) const OVERRIDE { return m_layerClipRectInTarget; } 43 virtual gfx::Rect layerClipRectInTarget(const Layer* layer) const OVERRIDE { return m_layerClipRectInTarget; }
44 44
45 private: 45 private:
46 gfx::Rect m_layerClipRectInTarget; 46 gfx::Rect m_layerClipRectInTarget;
47 }; 47 };
48 48
49 class TiledLayerTest : public testing::Test { 49 class TiledLayerTest : public testing::Test {
50 public: 50 public:
(...skipping 1212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 ); 1263 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 );
1264 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1264 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1265 1265
1266 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque. 1266 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque.
1267 opaquePaintRect = gfx::Rect(10, 10, 90, 190); 1267 opaquePaintRect = gfx::Rect(10, 10, 90, 190);
1268 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect); 1268 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect);
1269 layer->invalidateContentRect(contentBounds); 1269 layer->invalidateContentRect(contentBounds);
1270 layer->update(*m_queue.get(), &occluded, m_stats); 1270 layer->update(*m_queue.get(), &occluded, m_stats);
1271 updateTextures(); 1271 updateTextures();
1272 opaqueContents = layer->visibleContentOpaqueRegion(); 1272 opaqueContents = layer->visibleContentOpaqueRegion();
1273 EXPECT_RECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds), opaqueCo ntents.bounds()); 1273 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1274 EXPECT_EQ(1u, Region::Iterator(opaqueContents).size());
1275 1274
1276 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1275 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1);
1277 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1276 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1278 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1277 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1);
1279 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1278 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1280 1279
1281 // If we paint again without invalidating, the same stuff should be opaque. 1280 // If we paint again without invalidating, the same stuff should be opaque.
1282 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1281 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1283 layer->update(*m_queue.get(), &occluded, m_stats); 1282 layer->update(*m_queue.get(), &occluded, m_stats);
1284 updateTextures(); 1283 updateTextures();
1285 opaqueContents = layer->visibleContentOpaqueRegion(); 1284 opaqueContents = layer->visibleContentOpaqueRegion();
1286 EXPECT_RECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds), opaqueCo ntents.bounds()); 1285 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1287 EXPECT_EQ(1u, Region::Iterator(opaqueContents).size());
1288 1286
1289 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1287 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1);
1290 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1288 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1291 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1289 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1);
1292 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1290 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1293 1291
1294 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should 1292 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should
1295 // not be affected. 1293 // not be affected.
1296 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1294 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1297 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1295 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1));
1298 layer->update(*m_queue.get(), &occluded, m_stats); 1296 layer->update(*m_queue.get(), &occluded, m_stats);
1299 updateTextures(); 1297 updateTextures();
1300 opaqueContents = layer->visibleContentOpaqueRegion(); 1298 opaqueContents = layer->visibleContentOpaqueRegion();
1301 EXPECT_RECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds), opaqueCo ntents.bounds()); 1299 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1302 EXPECT_EQ(1u, Region::Iterator(opaqueContents).size());
1303 1300
1304 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1, 1); 1301 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1, 1);
1305 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1302 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1306 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1, 1); 1303 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1, 1);
1307 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1304 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1308 1305
1309 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still 1306 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still
1310 // not be affected. 1307 // not be affected.
1311 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1308 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1312 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1)); 1309 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1));
1313 layer->update(*m_queue.get(), &occluded, m_stats); 1310 layer->update(*m_queue.get(), &occluded, m_stats);
1314 updateTextures(); 1311 updateTextures();
1315 opaqueContents = layer->visibleContentOpaqueRegion(); 1312 opaqueContents = layer->visibleContentOpaqueRegion();
1316 EXPECT_RECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBound s), opaqueContents.bounds()); 1313 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString());
1317 EXPECT_EQ(1u, Region::Iterator(opaqueContents).size());
1318 1314
1319 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1 + 1, 1); 1315 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1 + 1, 1);
1320 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1316 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1321 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1 + 1, 1); 1317 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1 + 1, 1);
1322 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1318 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1323 } 1319 }
1324 1320
1325 TEST_F(TiledLayerTest, pixelsPaintedMetrics) 1321 TEST_F(TiledLayerTest, pixelsPaintedMetrics)
1326 { 1322 {
1327 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1323 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 updateTextures(); 1617 updateTextures();
1622 1618
1623 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds. 1619 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds.
1624 layer->setNeedsDisplayRect(layerRect); 1620 layer->setNeedsDisplayRect(layerRect);
1625 layer->update(*m_queue.get(), 0, m_stats); 1621 layer->update(*m_queue.get(), 0, m_stats);
1626 1622
1627 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1623 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1628 } 1624 }
1629 1625
1630 } // anonymous namespace 1626 } // anonymous namespace
OLDNEW
« no previous file with comments | « cc/tiled_layer.cc ('k') | cc/tree_synchronizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698