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

Side by Side Diff: cc/layer_tree_host_unittest.cc

Issue 11264056: cc: Use gfx:: Geometry types for positions, bounds, and related things. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ScaleAsVector 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/layer_tree_host_impl_unittest.cc ('k') | cc/layer_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/layer_tree_host.h" 7 #include "cc/layer_tree_host.h"
8 8
9 #include "base/synchronization/lock.h" 9 #include "base/synchronization/lock.h"
10 #include "cc/content_layer.h" 10 #include "cc/content_layer.h"
11 #include "cc/content_layer_client.h" 11 #include "cc/content_layer_client.h"
12 #include "cc/graphics_context.h" 12 #include "cc/graphics_context.h"
13 #include "cc/layer_tree_host_impl.h" 13 #include "cc/layer_tree_host_impl.h"
14 #include "cc/settings.h" 14 #include "cc/settings.h"
15 #include "cc/single_thread_proxy.h" 15 #include "cc/single_thread_proxy.h"
16 #include "cc/test/fake_web_compositor_output_surface.h" 16 #include "cc/test/fake_web_compositor_output_surface.h"
17 #include "cc/test/geometry_test_utils.h" 17 #include "cc/test/geometry_test_utils.h"
18 #include "cc/test/layer_tree_test_common.h" 18 #include "cc/test/layer_tree_test_common.h"
19 #include "cc/test/occlusion_tracker_test_common.h" 19 #include "cc/test/occlusion_tracker_test_common.h"
20 #include "cc/resource_update_queue.h" 20 #include "cc/resource_update_queue.h"
21 #include "cc/timing_function.h" 21 #include "cc/timing_function.h"
22 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "third_party/khronos/GLES2/gl2.h" 23 #include "third_party/khronos/GLES2/gl2.h"
24 #include "third_party/khronos/GLES2/gl2ext.h" 24 #include "third_party/khronos/GLES2/gl2ext.h"
25 #include "ui/gfx/point_conversions.h"
26 #include "ui/gfx/size_conversions.h"
25 #include <public/WebLayerScrollClient.h> 27 #include <public/WebLayerScrollClient.h>
26 #include <public/WebSize.h> 28 #include <public/WebSize.h>
27 29
28 using namespace cc; 30 using namespace cc;
29 using namespace WebKit; 31 using namespace WebKit;
30 using namespace WebKitTests; 32 using namespace WebKitTests;
31 33
32 namespace { 34 namespace {
33 35
34 class LayerTreeHostTest : public ThreadedTest { }; 36 class LayerTreeHostTest : public ThreadedTest { };
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 // After the first commit, we should not be able to draw. 304 // After the first commit, we should not be able to draw.
303 EXPECT_FALSE(impl->canDraw()); 305 EXPECT_FALSE(impl->canDraw());
304 } 306 }
305 } 307 }
306 308
307 virtual void didCommit() OVERRIDE 309 virtual void didCommit() OVERRIDE
308 { 310 {
309 m_numCommits++; 311 m_numCommits++;
310 if (m_numCommits == 1) { 312 if (m_numCommits == 1) {
311 // Make the viewport empty so the host says it can't draw. 313 // Make the viewport empty so the host says it can't draw.
312 m_layerTreeHost->setViewportSize(IntSize(0, 0), IntSize(0, 0)); 314 m_layerTreeHost->setViewportSize(gfx::Size(0, 0), gfx::Size(0, 0));
313 315
314 scoped_array<char> pixels(new char[4]); 316 scoped_array<char> pixels(new char[4]);
315 m_layerTreeHost->compositeAndReadback(static_cast<void*>(pixels.get( )), IntRect(0, 0, 1, 1)); 317 m_layerTreeHost->compositeAndReadback(static_cast<void*>(pixels.get( )), IntRect(0, 0, 1, 1));
316 } else if (m_numCommits == 2) { 318 } else if (m_numCommits == 2) {
317 m_layerTreeHost->setNeedsRedraw(); 319 m_layerTreeHost->setNeedsRedraw();
318 m_layerTreeHost->setNeedsCommit(); 320 m_layerTreeHost->setNeedsCommit();
319 } else 321 } else
320 endTest(); 322 endTest();
321 } 323 }
322 324
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 } 985 }
984 986
985 // This test verifies that properties on the layer tree host are commited to the impl side. 987 // This test verifies that properties on the layer tree host are commited to the impl side.
986 class LayerTreeHostTestCommit : public LayerTreeHostTest { 988 class LayerTreeHostTestCommit : public LayerTreeHostTest {
987 public: 989 public:
988 990
989 LayerTreeHostTestCommit() { } 991 LayerTreeHostTestCommit() { }
990 992
991 virtual void beginTest() OVERRIDE 993 virtual void beginTest() OVERRIDE
992 { 994 {
993 m_layerTreeHost->setViewportSize(IntSize(20, 20), IntSize(20, 20)); 995 m_layerTreeHost->setViewportSize(gfx::Size(20, 20), gfx::Size(20, 20));
994 m_layerTreeHost->setBackgroundColor(SK_ColorGRAY); 996 m_layerTreeHost->setBackgroundColor(SK_ColorGRAY);
995 m_layerTreeHost->setPageScaleFactorAndLimits(5, 5, 5); 997 m_layerTreeHost->setPageScaleFactorAndLimits(5, 5, 5);
996 998
997 postSetNeedsCommitToMainThread(); 999 postSetNeedsCommitToMainThread();
998 } 1000 }
999 1001
1000 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE 1002 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
1001 { 1003 {
1002 EXPECT_EQ(IntSize(20, 20), impl->layoutViewportSize()); 1004 EXPECT_EQ(gfx::Size(20, 20), impl->layoutViewportSize());
1003 EXPECT_EQ(SK_ColorGRAY, impl->backgroundColor()); 1005 EXPECT_EQ(SK_ColorGRAY, impl->backgroundColor());
1004 EXPECT_EQ(5, impl->pageScaleFactor()); 1006 EXPECT_EQ(5, impl->pageScaleFactor());
1005 1007
1006 endTest(); 1008 endTest();
1007 } 1009 }
1008 1010
1009 virtual void afterTest() OVERRIDE { } 1011 virtual void afterTest() OVERRIDE { }
1010 }; 1012 };
1011 1013
1012 TEST_F(LayerTreeHostTestCommit, runTest) 1014 TEST_F(LayerTreeHostTestCommit, runTest)
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 { 1154 {
1153 ContentLayer::update(queue, occlusion, stats); 1155 ContentLayer::update(queue, occlusion, stats);
1154 m_paintContentsCount++; 1156 m_paintContentsCount++;
1155 } 1157 }
1156 1158
1157 private: 1159 private:
1158 explicit ContentLayerWithUpdateTracking(ContentLayerClient* client) 1160 explicit ContentLayerWithUpdateTracking(ContentLayerClient* client)
1159 : ContentLayer(client) 1161 : ContentLayer(client)
1160 , m_paintContentsCount(0) 1162 , m_paintContentsCount(0)
1161 { 1163 {
1162 setAnchorPoint(FloatPoint(0, 0)); 1164 setAnchorPoint(gfx::PointF(0, 0));
1163 setBounds(IntSize(10, 10)); 1165 setBounds(gfx::Size(10, 10));
1164 setIsDrawable(true); 1166 setIsDrawable(true);
1165 } 1167 }
1166 virtual ~ContentLayerWithUpdateTracking() 1168 virtual ~ContentLayerWithUpdateTracking()
1167 { 1169 {
1168 } 1170 }
1169 1171
1170 int m_paintContentsCount; 1172 int m_paintContentsCount;
1171 }; 1173 };
1172 1174
1173 // Layer opacity change during paint should not prevent compositor resources fro m being updated during commit. 1175 // Layer opacity change during paint should not prevent compositor resources fro m being updated during commit.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 bool drawsContent() const { return true; } 1219 bool drawsContent() const { return true; }
1218 MOCK_CONST_METHOD0(preserves3D, bool()); 1220 MOCK_CONST_METHOD0(preserves3D, bool());
1219 void paintContents(SkCanvas*, const gfx::Rect&, gfx::RectF&) OVERRIDE { } 1221 void paintContents(SkCanvas*, const gfx::Rect&, gfx::RectF&) OVERRIDE { }
1220 void notifySyncRequired() { } 1222 void notifySyncRequired() { }
1221 }; 1223 };
1222 1224
1223 class NoScaleContentLayer : public ContentLayer { 1225 class NoScaleContentLayer : public ContentLayer {
1224 public: 1226 public:
1225 static scoped_refptr<NoScaleContentLayer> create(ContentLayerClient* client) { return make_scoped_refptr(new NoScaleContentLayer(client)); } 1227 static scoped_refptr<NoScaleContentLayer> create(ContentLayerClient* client) { return make_scoped_refptr(new NoScaleContentLayer(client)); }
1226 1228
1227 virtual IntSize contentBounds() const OVERRIDE { return bounds(); } 1229 virtual gfx::Size contentBounds() const OVERRIDE { return bounds(); }
1228 virtual float contentsScaleX() const OVERRIDE { return 1.0; } 1230 virtual float contentsScaleX() const OVERRIDE { return 1.0; }
1229 virtual float contentsScaleY() const OVERRIDE { return 1.0; } 1231 virtual float contentsScaleY() const OVERRIDE { return 1.0; }
1230 1232
1231 private: 1233 private:
1232 explicit NoScaleContentLayer(ContentLayerClient* client) 1234 explicit NoScaleContentLayer(ContentLayerClient* client)
1233 : ContentLayer(client) { } 1235 : ContentLayer(client) { }
1234 virtual ~NoScaleContentLayer() { } 1236 virtual ~NoScaleContentLayer() { }
1235 }; 1237 };
1236 1238
1237 // Ensures that when opacity is being animated, this value does not cause the su btree to be skipped. 1239 // Ensures that when opacity is being animated, this value does not cause the su btree to be skipped.
1238 class LayerTreeHostTestDoNotSkipLayersWithAnimatedOpacity : public LayerTreeHost Test { 1240 class LayerTreeHostTestDoNotSkipLayersWithAnimatedOpacity : public LayerTreeHost Test {
1239 public: 1241 public:
1240 LayerTreeHostTestDoNotSkipLayersWithAnimatedOpacity() 1242 LayerTreeHostTestDoNotSkipLayersWithAnimatedOpacity()
1241 : m_updateCheckLayer(ContentLayerWithUpdateTracking::create(&m_client)) 1243 : m_updateCheckLayer(ContentLayerWithUpdateTracking::create(&m_client))
1242 { 1244 {
1243 } 1245 }
1244 1246
1245 virtual void beginTest() OVERRIDE 1247 virtual void beginTest() OVERRIDE
1246 { 1248 {
1247 m_layerTreeHost->setViewportSize(IntSize(10, 10), IntSize(10, 10)); 1249 m_layerTreeHost->setViewportSize(gfx::Size(10, 10), gfx::Size(10, 10));
1248 m_layerTreeHost->rootLayer()->addChild(m_updateCheckLayer); 1250 m_layerTreeHost->rootLayer()->addChild(m_updateCheckLayer);
1249 m_updateCheckLayer->setOpacity(0); 1251 m_updateCheckLayer->setOpacity(0);
1250 m_updateCheckLayer->setDrawOpacity(0); 1252 m_updateCheckLayer->setDrawOpacity(0);
1251 postAddAnimationToMainThread(m_updateCheckLayer.get()); 1253 postAddAnimationToMainThread(m_updateCheckLayer.get());
1252 } 1254 }
1253 1255
1254 virtual void commitCompleteOnThread(LayerTreeHostImpl*) OVERRIDE 1256 virtual void commitCompleteOnThread(LayerTreeHostImpl*) OVERRIDE
1255 { 1257 {
1256 endTest(); 1258 endTest();
1257 } 1259 }
(...skipping 22 matching lines...) Expand all
1280 public: 1282 public:
1281 1283
1282 LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers() 1284 LayerTreeHostTestDeviceScaleFactorScalesViewportAndLayers()
1283 : m_rootLayer(NoScaleContentLayer::create(&m_client)) 1285 : m_rootLayer(NoScaleContentLayer::create(&m_client))
1284 , m_childLayer(ContentLayer::create(&m_client)) 1286 , m_childLayer(ContentLayer::create(&m_client))
1285 { 1287 {
1286 } 1288 }
1287 1289
1288 virtual void beginTest() OVERRIDE 1290 virtual void beginTest() OVERRIDE
1289 { 1291 {
1290 m_layerTreeHost->setViewportSize(IntSize(40, 40), IntSize(60, 60)); 1292 m_layerTreeHost->setViewportSize(gfx::Size(40, 40), gfx::Size(60, 60));
1291 m_layerTreeHost->setDeviceScaleFactor(1.5); 1293 m_layerTreeHost->setDeviceScaleFactor(1.5);
1292 EXPECT_EQ(IntSize(40, 40), m_layerTreeHost->layoutViewportSize()); 1294 EXPECT_EQ(gfx::Size(40, 40), m_layerTreeHost->layoutViewportSize());
1293 EXPECT_EQ(IntSize(60, 60), m_layerTreeHost->deviceViewportSize()); 1295 EXPECT_EQ(gfx::Size(60, 60), m_layerTreeHost->deviceViewportSize());
1294 1296
1295 m_rootLayer->addChild(m_childLayer); 1297 m_rootLayer->addChild(m_childLayer);
1296 1298
1297 m_rootLayer->setIsDrawable(true); 1299 m_rootLayer->setIsDrawable(true);
1298 m_rootLayer->setBounds(IntSize(30, 30)); 1300 m_rootLayer->setBounds(gfx::Size(30, 30));
1299 m_rootLayer->setAnchorPoint(FloatPoint(0, 0)); 1301 m_rootLayer->setAnchorPoint(FloatPoint(0, 0));
1300 1302
1301 m_childLayer->setIsDrawable(true); 1303 m_childLayer->setIsDrawable(true);
1302 m_childLayer->setPosition(IntPoint(2, 2)); 1304 m_childLayer->setPosition(gfx::Point(2, 2));
1303 m_childLayer->setBounds(IntSize(10, 10)); 1305 m_childLayer->setBounds(gfx::Size(10, 10));
1304 m_childLayer->setAnchorPoint(FloatPoint(0, 0)); 1306 m_childLayer->setAnchorPoint(FloatPoint(0, 0));
1305 1307
1306 m_layerTreeHost->setRootLayer(m_rootLayer); 1308 m_layerTreeHost->setRootLayer(m_rootLayer);
1307 } 1309 }
1308 1310
1309 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE 1311 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
1310 { 1312 {
1311 // Get access to protected methods. 1313 // Get access to protected methods.
1312 MockLayerTreeHostImpl* mockImpl = static_cast<MockLayerTreeHostImpl*>(im pl); 1314 MockLayerTreeHostImpl* mockImpl = static_cast<MockLayerTreeHostImpl*>(im pl);
1313 1315
1314 // Should only do one commit. 1316 // Should only do one commit.
1315 EXPECT_EQ(0, impl->sourceFrameNumber()); 1317 EXPECT_EQ(0, impl->sourceFrameNumber());
1316 // Device scale factor should come over to impl. 1318 // Device scale factor should come over to impl.
1317 EXPECT_NEAR(impl->deviceScaleFactor(), 1.5, 0.00001); 1319 EXPECT_NEAR(impl->deviceScaleFactor(), 1.5, 0.00001);
1318 1320
1319 // Both layers are on impl. 1321 // Both layers are on impl.
1320 ASSERT_EQ(1u, impl->rootLayer()->children().size()); 1322 ASSERT_EQ(1u, impl->rootLayer()->children().size());
1321 1323
1322 // Device viewport is scaled. 1324 // Device viewport is scaled.
1323 EXPECT_EQ(IntSize(40, 40), impl->layoutViewportSize()); 1325 EXPECT_EQ(gfx::Size(40, 40), impl->layoutViewportSize());
1324 EXPECT_EQ(IntSize(60, 60), impl->deviceViewportSize()); 1326 EXPECT_EQ(gfx::Size(60, 60), impl->deviceViewportSize());
1325 1327
1326 LayerImpl* root = impl->rootLayer(); 1328 LayerImpl* root = impl->rootLayer();
1327 LayerImpl* child = impl->rootLayer()->children()[0]; 1329 LayerImpl* child = impl->rootLayer()->children()[0];
1328 1330
1329 // Positions remain in layout pixels. 1331 // Positions remain in layout pixels.
1330 EXPECT_EQ(IntPoint(0, 0), root->position()); 1332 EXPECT_EQ(gfx::Point(0, 0), root->position());
1331 EXPECT_EQ(IntPoint(2, 2), child->position()); 1333 EXPECT_EQ(gfx::Point(2, 2), child->position());
1332 1334
1333 // Compute all the layer transforms for the frame. 1335 // Compute all the layer transforms for the frame.
1334 MockLayerTreeHostImpl::LayerList renderSurfaceLayerList; 1336 MockLayerTreeHostImpl::LayerList renderSurfaceLayerList;
1335 mockImpl->calculateRenderSurfaceLayerList(renderSurfaceLayerList); 1337 mockImpl->calculateRenderSurfaceLayerList(renderSurfaceLayerList);
1336 1338
1337 // Both layers should be drawing into the root render surface. 1339 // Both layers should be drawing into the root render surface.
1338 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 1340 ASSERT_EQ(1u, renderSurfaceLayerList.size());
1339 ASSERT_EQ(root->renderSurface(), renderSurfaceLayerList[0]->renderSurfac e()); 1341 ASSERT_EQ(root->renderSurface(), renderSurfaceLayerList[0]->renderSurfac e());
1340 ASSERT_EQ(2u, root->renderSurface()->layerList().size()); 1342 ASSERT_EQ(2u, root->renderSurface()->layerList().size());
1341 1343
1342 // The root render surface is the size of the viewport. 1344 // The root render surface is the size of the viewport.
1343 EXPECT_RECT_EQ(IntRect(0, 0, 60, 60), root->renderSurface()->contentRect ()); 1345 EXPECT_RECT_EQ(gfx::Rect(0, 0, 60, 60), root->renderSurface()->contentRe ct());
1344 1346
1345 // The content bounds of the child should be scaled. 1347 // The content bounds of the child should be scaled.
1346 IntSize childBoundsScaled = child->bounds(); 1348 gfx::Size childBoundsScaled = child->bounds();
1347 childBoundsScaled.scale(1.5); 1349 childBoundsScaled = gfx::ToRoundedSize(childBoundsScaled.Scale(1.5));
1348 EXPECT_EQ(childBoundsScaled, child->contentBounds()); 1350 EXPECT_EQ(childBoundsScaled, child->contentBounds());
1349 1351
1350 WebTransformationMatrix scaleTransform; 1352 WebTransformationMatrix scaleTransform;
1351 scaleTransform.scale(impl->deviceScaleFactor()); 1353 scaleTransform.scale(impl->deviceScaleFactor());
1352 1354
1353 // The root layer is scaled by 2x. 1355 // The root layer is scaled by 2x.
1354 WebTransformationMatrix rootScreenSpaceTransform = scaleTransform; 1356 WebTransformationMatrix rootScreenSpaceTransform = scaleTransform;
1355 WebTransformationMatrix rootDrawTransform = scaleTransform; 1357 WebTransformationMatrix rootDrawTransform = scaleTransform;
1356 1358
1357 EXPECT_EQ(rootDrawTransform, root->drawTransform()); 1359 EXPECT_EQ(rootDrawTransform, root->drawTransform());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 LayerTreeHostTestAtomicCommit() 1394 LayerTreeHostTestAtomicCommit()
1393 : m_layer(ContentLayerWithUpdateTracking::create(&m_client)) 1395 : m_layer(ContentLayerWithUpdateTracking::create(&m_client))
1394 { 1396 {
1395 // Make sure partial texture updates are turned off. 1397 // Make sure partial texture updates are turned off.
1396 m_settings.maxPartialTextureUpdates = 0; 1398 m_settings.maxPartialTextureUpdates = 0;
1397 } 1399 }
1398 1400
1399 virtual void beginTest() OVERRIDE 1401 virtual void beginTest() OVERRIDE
1400 { 1402 {
1401 m_layerTreeHost->setRootLayer(m_layer); 1403 m_layerTreeHost->setRootLayer(m_layer);
1402 m_layerTreeHost->setViewportSize(IntSize(10, 10), IntSize(10, 10)); 1404 m_layerTreeHost->setViewportSize(gfx::Size(10, 10), gfx::Size(10, 10));
1403 1405
1404 postSetNeedsCommitToMainThread(); 1406 postSetNeedsCommitToMainThread();
1405 postSetNeedsRedrawToMainThread(); 1407 postSetNeedsRedrawToMainThread();
1406 } 1408 }
1407 1409
1408 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE 1410 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
1409 { 1411 {
1410 CompositorFakeWebGraphicsContext3DWithTextureTracking* context = static_ cast<CompositorFakeWebGraphicsContext3DWithTextureTracking*>(impl->context()->co ntext3D()); 1412 CompositorFakeWebGraphicsContext3DWithTextureTracking* context = static_ cast<CompositorFakeWebGraphicsContext3DWithTextureTracking*>(impl->context()->co ntext3D());
1411 1413
1412 switch (impl->sourceFrameNumber()) { 1414 switch (impl->sourceFrameNumber()) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1466 private: 1468 private:
1467 MockContentLayerClient m_client; 1469 MockContentLayerClient m_client;
1468 scoped_refptr<ContentLayerWithUpdateTracking> m_layer; 1470 scoped_refptr<ContentLayerWithUpdateTracking> m_layer;
1469 }; 1471 };
1470 1472
1471 TEST_F(LayerTreeHostTestAtomicCommit, runMultiThread) 1473 TEST_F(LayerTreeHostTestAtomicCommit, runMultiThread)
1472 { 1474 {
1473 runTest(true); 1475 runTest(true);
1474 } 1476 }
1475 1477
1476 static void setLayerPropertiesForTesting(Layer* layer, Layer* parent, const WebT ransformationMatrix& transform, const FloatPoint& anchor, const FloatPoint& posi tion, const IntSize& bounds, bool opaque) 1478 static void setLayerPropertiesForTesting(Layer* layer, Layer* parent, const WebT ransformationMatrix& transform, const gfx::PointF& anchor, const gfx::PointF& po sition, const gfx::Size& bounds, bool opaque)
1477 { 1479 {
1478 layer->removeAllChildren(); 1480 layer->removeAllChildren();
1479 if (parent) 1481 if (parent)
1480 parent->addChild(layer); 1482 parent->addChild(layer);
1481 layer->setTransform(transform); 1483 layer->setTransform(transform);
1482 layer->setAnchorPoint(anchor); 1484 layer->setAnchorPoint(anchor);
1483 layer->setPosition(position); 1485 layer->setPosition(position);
1484 layer->setBounds(bounds); 1486 layer->setBounds(bounds);
1485 layer->setContentsOpaque(opaque); 1487 layer->setContentsOpaque(opaque);
1486 } 1488 }
1487 1489
1488 class LayerTreeHostTestAtomicCommitWithPartialUpdate : public LayerTreeHostTest { 1490 class LayerTreeHostTestAtomicCommitWithPartialUpdate : public LayerTreeHostTest {
1489 public: 1491 public:
1490 LayerTreeHostTestAtomicCommitWithPartialUpdate() 1492 LayerTreeHostTestAtomicCommitWithPartialUpdate()
1491 : m_parent(ContentLayerWithUpdateTracking::create(&m_client)) 1493 : m_parent(ContentLayerWithUpdateTracking::create(&m_client))
1492 , m_child(ContentLayerWithUpdateTracking::create(&m_client)) 1494 , m_child(ContentLayerWithUpdateTracking::create(&m_client))
1493 , m_numCommits(0) 1495 , m_numCommits(0)
1494 { 1496 {
1495 // Allow one partial texture update. 1497 // Allow one partial texture update.
1496 m_settings.maxPartialTextureUpdates = 1; 1498 m_settings.maxPartialTextureUpdates = 1;
1497 } 1499 }
1498 1500
1499 virtual void beginTest() OVERRIDE 1501 virtual void beginTest() OVERRIDE
1500 { 1502 {
1501 m_layerTreeHost->setRootLayer(m_parent); 1503 m_layerTreeHost->setRootLayer(m_parent);
1502 m_layerTreeHost->setViewportSize(IntSize(10, 20), IntSize(10, 20)); 1504 m_layerTreeHost->setViewportSize(gfx::Size(10, 20), gfx::Size(10, 20));
1503 1505
1504 WebTransformationMatrix identityMatrix; 1506 WebTransformationMatrix identityMatrix;
1505 setLayerPropertiesForTesting(m_parent.get(), 0, identityMatrix, FloatPoi nt(0, 0), FloatPoint(0, 0), IntSize(10, 20), true); 1507 setLayerPropertiesForTesting(m_parent.get(), 0, identityMatrix, gfx::Poi ntF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 20), true);
1506 setLayerPropertiesForTesting(m_child.get(), m_parent.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(0, 10), IntSize(10, 10), false); 1508 setLayerPropertiesForTesting(m_child.get(), m_parent.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(0, 10), gfx::Size(10, 10), false);
1507 1509
1508 postSetNeedsCommitToMainThread(); 1510 postSetNeedsCommitToMainThread();
1509 postSetNeedsRedrawToMainThread(); 1511 postSetNeedsRedrawToMainThread();
1510 } 1512 }
1511 1513
1512 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE 1514 virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
1513 { 1515 {
1514 CompositorFakeWebGraphicsContext3DWithTextureTracking* context = static_ cast<CompositorFakeWebGraphicsContext3DWithTextureTracking*>(impl->context()->co ntext3D()); 1516 CompositorFakeWebGraphicsContext3DWithTextureTracking* context = static_ cast<CompositorFakeWebGraphicsContext3DWithTextureTracking*>(impl->context()->co ntext3D());
1515 1517
1516 switch (impl->sourceFrameNumber()) { 1518 switch (impl->sourceFrameNumber()) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 virtual void layout() OVERRIDE 1585 virtual void layout() OVERRIDE
1584 { 1586 {
1585 switch (m_numCommits++) { 1587 switch (m_numCommits++) {
1586 case 0: 1588 case 0:
1587 case 1: 1589 case 1:
1588 m_parent->setNeedsDisplay(); 1590 m_parent->setNeedsDisplay();
1589 m_child->setNeedsDisplay(); 1591 m_child->setNeedsDisplay();
1590 break; 1592 break;
1591 case 2: 1593 case 2:
1592 // Damage part of layers. 1594 // Damage part of layers.
1593 m_parent->setNeedsDisplayRect(FloatRect(0, 0, 5, 5)); 1595 m_parent->setNeedsDisplayRect(gfx::RectF(0, 0, 5, 5));
1594 m_child->setNeedsDisplayRect(FloatRect(0, 0, 5, 5)); 1596 m_child->setNeedsDisplayRect(gfx::RectF(0, 0, 5, 5));
1595 break; 1597 break;
1596 case 3: 1598 case 3:
1597 m_child->setNeedsDisplay(); 1599 m_child->setNeedsDisplay();
1598 m_layerTreeHost->setViewportSize(IntSize(10, 10), IntSize(10, 10)); 1600 m_layerTreeHost->setViewportSize(gfx::Size(10, 10), gfx::Size(10, 10 ));
1599 break; 1601 break;
1600 case 4: 1602 case 4:
1601 m_layerTreeHost->setViewportSize(IntSize(10, 20), IntSize(10, 20)); 1603 m_layerTreeHost->setViewportSize(gfx::Size(10, 20), gfx::Size(10, 20 ));
1602 break; 1604 break;
1603 default: 1605 default:
1604 NOTREACHED(); 1606 NOTREACHED();
1605 break; 1607 break;
1606 } 1608 }
1607 } 1609 }
1608 1610
1609 virtual void afterTest() OVERRIDE 1611 virtual void afterTest() OVERRIDE
1610 { 1612 {
1611 } 1613 }
(...skipping 26 matching lines...) Expand all
1638 const Region& occludedScreenSpace() const { return m_occludedScreenSpace; } 1640 const Region& occludedScreenSpace() const { return m_occludedScreenSpace; }
1639 void clearOccludedScreenSpace() { m_occludedScreenSpace = Region(); } 1641 void clearOccludedScreenSpace() { m_occludedScreenSpace = Region(); }
1640 1642
1641 private: 1643 private:
1642 TestLayer() : Layer() { } 1644 TestLayer() : Layer() { }
1643 virtual ~TestLayer() { } 1645 virtual ~TestLayer() { }
1644 1646
1645 Region m_occludedScreenSpace; 1647 Region m_occludedScreenSpace;
1646 }; 1648 };
1647 1649
1648 static void setTestLayerPropertiesForTesting(TestLayer* layer, Layer* parent, co nst WebTransformationMatrix& transform, const FloatPoint& anchor, const FloatPoi nt& position, const IntSize& bounds, bool opaque) 1650 static void setTestLayerPropertiesForTesting(TestLayer* layer, Layer* parent, co nst WebTransformationMatrix& transform, const gfx::PointF& anchor, const gfx::Po intF& position, const gfx::Size& bounds, bool opaque)
1649 { 1651 {
1650 setLayerPropertiesForTesting(layer, parent, transform, anchor, position, bou nds, opaque); 1652 setLayerPropertiesForTesting(layer, parent, transform, anchor, position, bou nds, opaque);
1651 layer->clearOccludedScreenSpace(); 1653 layer->clearOccludedScreenSpace();
1652 } 1654 }
1653 1655
1654 class LayerTreeHostTestLayerOcclusion : public LayerTreeHostTest { 1656 class LayerTreeHostTestLayerOcclusion : public LayerTreeHostTest {
1655 public: 1657 public:
1656 LayerTreeHostTestLayerOcclusion() { } 1658 LayerTreeHostTestLayerOcclusion() { }
1657 1659
1658 virtual void beginTest() OVERRIDE 1660 virtual void beginTest() OVERRIDE
1659 { 1661 {
1660 scoped_refptr<TestLayer> rootLayer = TestLayer::create(); 1662 scoped_refptr<TestLayer> rootLayer = TestLayer::create();
1661 scoped_refptr<TestLayer> child = TestLayer::create(); 1663 scoped_refptr<TestLayer> child = TestLayer::create();
1662 scoped_refptr<TestLayer> child2 = TestLayer::create(); 1664 scoped_refptr<TestLayer> child2 = TestLayer::create();
1663 scoped_refptr<TestLayer> grandChild = TestLayer::create(); 1665 scoped_refptr<TestLayer> grandChild = TestLayer::create();
1664 scoped_refptr<TestLayer> mask = TestLayer::create(); 1666 scoped_refptr<TestLayer> mask = TestLayer::create();
1665 1667
1666 WebTransformationMatrix identityMatrix; 1668 WebTransformationMatrix identityMatrix;
1667 WebTransformationMatrix childTransform; 1669 WebTransformationMatrix childTransform;
1668 childTransform.translate(250, 250); 1670 childTransform.translate(250, 250);
1669 childTransform.rotate(90); 1671 childTransform.rotate(90);
1670 childTransform.translate(-250, -250); 1672 childTransform.translate(-250, -250);
1671 1673
1672 child->setMasksToBounds(true); 1674 child->setMasksToBounds(true);
1673 1675
1674 // See LayerTreeHostCommonTest.layerAddsSelfToOccludedRegionWithRotatedS urface for a nice visual of these layers and how they end up 1676 // See LayerTreeHostCommonTest.layerAddsSelfToOccludedRegionWithRotatedS urface for a nice visual of these layers and how they end up
1675 // positioned on the screen. 1677 // positioned on the screen.
1676 1678
1677 // The child layer is rotated and the grandChild is opaque, but clipped to the child and rootLayer 1679 // The child layer is rotated and the grandChild is opaque, but clipped to the child and rootLayer
1678 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1680 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1679 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), false); 1681 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), false);
1680 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1682 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1681 1683
1682 m_layerTreeHost->setRootLayer(rootLayer); 1684 m_layerTreeHost->setRootLayer(rootLayer);
1683 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1685 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1684 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1686 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1685 ResourceUpdateQueue queue; 1687 ResourceUpdateQueue queue;
1686 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1688 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1687 m_layerTreeHost->commitComplete(); 1689 m_layerTreeHost->commitComplete();
1688 1690
1689 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1691 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1690 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1692 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1691 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1693 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1692 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1694 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1693 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), rootLayer->occludedScreenSpace ().bounds()); 1695 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), rootLayer->occludedScreenSpa ce().bounds());
1694 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1696 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1695 1697
1696 // If the child layer is opaque, then it adds to the occlusion seen by t he rootLayer. 1698 // If the child layer is opaque, then it adds to the occlusion seen by t he rootLayer.
1697 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, FloatPo int(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1699 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1698 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1700 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1699 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1701 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1700 1702
1701 m_layerTreeHost->setRootLayer(rootLayer); 1703 m_layerTreeHost->setRootLayer(rootLayer);
1702 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1704 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1703 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1705 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1704 m_layerTreeHost->commitComplete(); 1706 m_layerTreeHost->commitComplete();
1705 1707
1706 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1708 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1707 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1709 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1708 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1710 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1709 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1711 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1710 EXPECT_RECT_EQ(IntRect(30, 30, 170, 170), rootLayer->occludedScreenSpace ().bounds()); 1712 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), rootLayer->occludedScreenSpa ce().bounds());
1711 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1713 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1712 1714
1713 // Add a second child to the root layer and the regions should merge 1715 // Add a second child to the root layer and the regions should merge
1714 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1716 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1715 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(70, 20), IntSize(500, 500), true); 1717 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(70, 20), gfx::Size(500, 500), true);
1716 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1718 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1717 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1719 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1718 1720
1719 m_layerTreeHost->setRootLayer(rootLayer); 1721 m_layerTreeHost->setRootLayer(rootLayer);
1720 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1722 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1721 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1723 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1722 m_layerTreeHost->commitComplete(); 1724 m_layerTreeHost->commitComplete();
1723 1725
1724 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1726 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1725 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1727 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1726 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1728 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1727 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1729 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1728 EXPECT_RECT_EQ(IntRect(30, 30, 170, 170), child2->occludedScreenSpace(). bounds()); 1730 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), child2->occludedScreenSpace( ).bounds());
1729 EXPECT_EQ(1u, child2->occludedScreenSpace().rects().size()); 1731 EXPECT_EQ(1u, child2->occludedScreenSpace().rects().size());
1730 EXPECT_RECT_EQ(IntRect(30, 20, 170, 180), rootLayer->occludedScreenSpace ().bounds()); 1732 EXPECT_RECT_EQ(gfx::Rect(30, 20, 170, 180), rootLayer->occludedScreenSpa ce().bounds());
1731 EXPECT_EQ(2u, rootLayer->occludedScreenSpace().rects().size()); 1733 EXPECT_EQ(2u, rootLayer->occludedScreenSpace().rects().size());
1732 1734
1733 // Move the second child to be sure. 1735 // Move the second child to be sure.
1734 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1736 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1735 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1737 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1736 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1738 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1737 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1739 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1738 1740
1739 m_layerTreeHost->setRootLayer(rootLayer); 1741 m_layerTreeHost->setRootLayer(rootLayer);
1740 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1742 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1741 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1743 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1742 m_layerTreeHost->commitComplete(); 1744 m_layerTreeHost->commitComplete();
1743 1745
1744 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1746 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1745 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1747 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1746 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1748 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1747 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1749 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1748 EXPECT_RECT_EQ(IntRect(30, 30, 170, 170), child2->occludedScreenSpace(). bounds()); 1750 EXPECT_RECT_EQ(gfx::Rect(30, 30, 170, 170), child2->occludedScreenSpace( ).bounds());
1749 EXPECT_EQ(1u, child2->occludedScreenSpace().rects().size()); 1751 EXPECT_EQ(1u, child2->occludedScreenSpace().rects().size());
1750 EXPECT_RECT_EQ(IntRect(10, 30, 190, 170), rootLayer->occludedScreenSpace ().bounds()); 1752 EXPECT_RECT_EQ(gfx::Rect(10, 30, 190, 170), rootLayer->occludedScreenSpa ce().bounds());
1751 EXPECT_EQ(2u, rootLayer->occludedScreenSpace().rects().size()); 1753 EXPECT_EQ(2u, rootLayer->occludedScreenSpace().rects().size());
1752 1754
1753 // If the child layer has a mask on it, then it shouldn't contribute to occlusion on stuff below it 1755 // If the child layer has a mask on it, then it shouldn't contribute to occlusion on stuff below it
1754 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, FloatPo int(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1756 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1755 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1757 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1756 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1758 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1757 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1759 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1758 1760
1759 child->setMaskLayer(mask.get()); 1761 child->setMaskLayer(mask.get());
1760 1762
1761 m_layerTreeHost->setRootLayer(rootLayer); 1763 m_layerTreeHost->setRootLayer(rootLayer);
1762 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1764 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1763 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1765 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1764 m_layerTreeHost->commitComplete(); 1766 m_layerTreeHost->commitComplete();
1765 1767
1766 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1768 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1767 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1769 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1768 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1770 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1769 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1771 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1770 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1772 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1771 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1773 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1772 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1774 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1773 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1775 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1774 1776
1775 // If the child layer with a mask is below child2, then child2 should co ntribute to occlusion on everything, and child shouldn't contribute to the rootL ayer 1777 // If the child layer with a mask is below child2, then child2 should co ntribute to occlusion on everything, and child shouldn't contribute to the rootL ayer
1776 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, FloatPo int(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1778 setLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx::Po intF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1777 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1779 setLayerPropertiesForTesting(child.get(), rootLayer.get(), childTransfor m, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1778 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1780 setLayerPropertiesForTesting(grandChild.get(), child.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1779 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1781 setLayerPropertiesForTesting(child2.get(), rootLayer.get(), identityMatr ix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1780 1782
1781 child->setMaskLayer(mask.get()); 1783 child->setMaskLayer(mask.get());
1782 1784
1783 m_layerTreeHost->setRootLayer(rootLayer); 1785 m_layerTreeHost->setRootLayer(rootLayer);
1784 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1786 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1785 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1787 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1786 m_layerTreeHost->commitComplete(); 1788 m_layerTreeHost->commitComplete();
1787 1789
1788 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1790 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1789 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1791 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1790 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), grandChild->occludedScreenSpac e().bounds()); 1792 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds());
1791 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size()); 1793 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size());
1792 EXPECT_RECT_EQ(IntRect(10, 40, 190, 160), child->occludedScreenSpace().b ounds()); 1794 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1793 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size()); 1795 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size());
1794 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1796 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1795 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1797 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1796 1798
1797 // If the child layer has a non-opaque drawOpacity, then it shouldn't co ntribute to occlusion on stuff below it 1799 // If the child layer has a non-opaque drawOpacity, then it shouldn't co ntribute to occlusion on stuff below it
1798 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1800 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1799 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1801 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1800 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1802 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1801 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1803 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1802 1804
1803 child->setMaskLayer(0); 1805 child->setMaskLayer(0);
1804 child->setOpacity(0.5); 1806 child->setOpacity(0.5);
1805 1807
1806 m_layerTreeHost->setRootLayer(rootLayer); 1808 m_layerTreeHost->setRootLayer(rootLayer);
1807 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1809 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1808 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1810 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1809 m_layerTreeHost->commitComplete(); 1811 m_layerTreeHost->commitComplete();
1810 1812
1811 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1813 EXPECT_RECT_EQ(gfx::Rect(), grandChild->occludedScreenSpace().bounds());
1812 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1814 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1813 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1815 EXPECT_RECT_EQ(gfx::Rect(30, 40, 170, 160), child->occludedScreenSpace() .bounds());
1814 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1816 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1815 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1817 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1816 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1818 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1817 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1819 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1818 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1820 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1819 1821
1820 // If the child layer with non-opaque drawOpacity is below child2, then child2 should contribute to occlusion on everything, and child shouldn't contrib ute to the rootLayer 1822 // If the child layer with non-opaque drawOpacity is below child2, then child2 should contribute to occlusion on everything, and child shouldn't contrib ute to the rootLayer
1821 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1823 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1822 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1824 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1823 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1825 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1824 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1826 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1825 1827
1826 child->setMaskLayer(0); 1828 child->setMaskLayer(0);
1827 child->setOpacity(0.5); 1829 child->setOpacity(0.5);
1828 1830
1829 m_layerTreeHost->setRootLayer(rootLayer); 1831 m_layerTreeHost->setRootLayer(rootLayer);
1830 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1832 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1831 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1833 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1832 m_layerTreeHost->commitComplete(); 1834 m_layerTreeHost->commitComplete();
1833 1835
1834 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1836 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1835 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1837 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1836 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), grandChild->occludedScreenSpac e().bounds()); 1838 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds());
1837 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size()); 1839 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size());
1838 EXPECT_RECT_EQ(IntRect(10, 40, 190, 160), child->occludedScreenSpace().b ounds()); 1840 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1839 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size()); 1841 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size());
1840 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1842 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1841 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1843 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1842 1844
1843 // Kill the layerTreeHost immediately. 1845 // Kill the layerTreeHost immediately.
1844 m_layerTreeHost->setRootLayer(0); 1846 m_layerTreeHost->setRootLayer(0);
1845 m_layerTreeHost.reset(); 1847 m_layerTreeHost.reset();
1846 1848
1847 endTest(); 1849 endTest();
1848 } 1850 }
1849 1851
1850 virtual void afterTest() OVERRIDE 1852 virtual void afterTest() OVERRIDE
(...skipping 18 matching lines...) Expand all
1869 WebTransformationMatrix identityMatrix; 1871 WebTransformationMatrix identityMatrix;
1870 WebTransformationMatrix childTransform; 1872 WebTransformationMatrix childTransform;
1871 childTransform.translate(250, 250); 1873 childTransform.translate(250, 250);
1872 childTransform.rotate(90); 1874 childTransform.rotate(90);
1873 childTransform.translate(-250, -250); 1875 childTransform.translate(-250, -250);
1874 1876
1875 child->setMasksToBounds(true); 1877 child->setMasksToBounds(true);
1876 1878
1877 // If the child layer has a filter that changes alpha values, and is bel ow child2, then child2 should contribute to occlusion on everything, 1879 // If the child layer has a filter that changes alpha values, and is bel ow child2, then child2 should contribute to occlusion on everything,
1878 // and child shouldn't contribute to the rootLayer 1880 // and child shouldn't contribute to the rootLayer
1879 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1881 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1880 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1882 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1881 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1883 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1882 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1884 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1883 1885
1884 { 1886 {
1885 WebFilterOperations filters; 1887 WebFilterOperations filters;
1886 filters.append(WebFilterOperation::createOpacityFilter(0.5)); 1888 filters.append(WebFilterOperation::createOpacityFilter(0.5));
1887 child->setFilters(filters); 1889 child->setFilters(filters);
1888 } 1890 }
1889 1891
1890 m_layerTreeHost->setRootLayer(rootLayer); 1892 m_layerTreeHost->setRootLayer(rootLayer);
1891 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1893 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1892 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1894 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1893 ResourceUpdateQueue queue; 1895 ResourceUpdateQueue queue;
1894 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1896 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1895 m_layerTreeHost->commitComplete(); 1897 m_layerTreeHost->commitComplete();
1896 1898
1897 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1899 EXPECT_RECT_EQ(gfx::Rect(), child2->occludedScreenSpace().bounds());
1898 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1900 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1899 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), grandChild->occludedScreenSpac e().bounds()); 1901 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), grandChild->occludedScreenSp ace().bounds());
1900 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size()); 1902 EXPECT_EQ(1u, grandChild->occludedScreenSpace().rects().size());
1901 EXPECT_RECT_EQ(IntRect(10, 40, 190, 160), child->occludedScreenSpace().b ounds()); 1903 EXPECT_RECT_EQ(gfx::Rect(10, 40, 190, 160), child->occludedScreenSpace() .bounds());
1902 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size()); 1904 EXPECT_EQ(2u, child->occludedScreenSpace().rects().size());
1903 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1905 EXPECT_RECT_EQ(gfx::Rect(10, 70, 190, 130), rootLayer->occludedScreenSpa ce().bounds());
1904 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1906 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1905 1907
1906 // If the child layer has a filter that moves pixels/changes alpha, and is below child2, then child should not inherit occlusion from outside its subtre e, 1908 // If the child layer has a filter that moves pixels/changes alpha, and is below child2, then child should not inherit occlusion from outside its subtre e,
1907 // and should not contribute to the rootLayer 1909 // and should not contribute to the rootLayer
1908 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, Flo atPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1910 setTestLayerPropertiesForTesting(rootLayer.get(), 0, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1909 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, FloatPoint(0, 0), FloatPoint(30, 30), IntSize(500, 500), true); 1911 setTestLayerPropertiesForTesting(child.get(), rootLayer.get(), childTran sform, gfx::PointF(0, 0), gfx::PointF(30, 30), gfx::Size(500, 500), true);
1910 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 10), IntSize(500, 500), true); 1912 setTestLayerPropertiesForTesting(grandChild.get(), child.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 10), gfx::Size(500, 500), true);
1911 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, FloatPoint(0, 0), FloatPoint(10, 70), IntSize(500, 500), true); 1913 setTestLayerPropertiesForTesting(child2.get(), rootLayer.get(), identity Matrix, gfx::PointF(0, 0), gfx::PointF(10, 70), gfx::Size(500, 500), true);
1912 1914
1913 { 1915 {
1914 WebFilterOperations filters; 1916 WebFilterOperations filters;
1915 filters.append(WebFilterOperation::createBlurFilter(10)); 1917 filters.append(WebFilterOperation::createBlurFilter(10));
1916 child->setFilters(filters); 1918 child->setFilters(filters);
1917 } 1919 }
1918 1920
1919 m_layerTreeHost->setRootLayer(rootLayer); 1921 m_layerTreeHost->setRootLayer(rootLayer);
1920 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( )); 1922 m_layerTreeHost->setViewportSize(rootLayer->bounds(), rootLayer->bounds( ));
1921 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1923 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1922 m_layerTreeHost->commitComplete(); 1924 m_layerTreeHost->commitComplete();
1923 1925
1924 EXPECT_RECT_EQ(IntRect(), child2->occludedScreenSpace().bounds()); 1926 EXPECT_RECT_EQ(cc::IntRect(), child2->occludedScreenSpace().bounds());
1925 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size()); 1927 EXPECT_EQ(0u, child2->occludedScreenSpace().rects().size());
1926 EXPECT_RECT_EQ(IntRect(), grandChild->occludedScreenSpace().bounds()); 1928 EXPECT_RECT_EQ(cc::IntRect(), grandChild->occludedScreenSpace().bounds() );
1927 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size()); 1929 EXPECT_EQ(0u, grandChild->occludedScreenSpace().rects().size());
1928 EXPECT_RECT_EQ(IntRect(30, 40, 170, 160), child->occludedScreenSpace().b ounds()); 1930 EXPECT_RECT_EQ(cc::IntRect(30, 40, 170, 160), child->occludedScreenSpace ().bounds());
1929 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size()); 1931 EXPECT_EQ(1u, child->occludedScreenSpace().rects().size());
1930 EXPECT_RECT_EQ(IntRect(10, 70, 190, 130), rootLayer->occludedScreenSpace ().bounds()); 1932 EXPECT_RECT_EQ(cc::IntRect(10, 70, 190, 130), rootLayer->occludedScreenS pace().bounds());
1931 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size()); 1933 EXPECT_EQ(1u, rootLayer->occludedScreenSpace().rects().size());
1932 1934
1933 // Kill the layerTreeHost immediately. 1935 // Kill the layerTreeHost immediately.
1934 m_layerTreeHost->setRootLayer(0); 1936 m_layerTreeHost->setRootLayer(0);
1935 m_layerTreeHost.reset(); 1937 m_layerTreeHost.reset();
1936 1938
1937 LayerTreeHost::setNeedsFilterContext(false); 1939 LayerTreeHost::setNeedsFilterContext(false);
1938 endTest(); 1940 endTest();
1939 } 1941 }
1940 1942
(...skipping 14 matching lines...) Expand all
1955 Region occluded; 1957 Region occluded;
1956 const WebTransformationMatrix identityMatrix; 1958 const WebTransformationMatrix identityMatrix;
1957 std::vector<scoped_refptr<TestLayer> > layers; 1959 std::vector<scoped_refptr<TestLayer> > layers;
1958 std::vector<scoped_refptr<TestLayer> > children; 1960 std::vector<scoped_refptr<TestLayer> > children;
1959 int numSurfaces = 20; 1961 int numSurfaces = 20;
1960 scoped_refptr<TestLayer> replica = TestLayer::create(); 1962 scoped_refptr<TestLayer> replica = TestLayer::create();
1961 1963
1962 for (int i = 0; i < numSurfaces; ++i) { 1964 for (int i = 0; i < numSurfaces; ++i) {
1963 layers.push_back(TestLayer::create()); 1965 layers.push_back(TestLayer::create());
1964 if (!i) { 1966 if (!i) {
1965 setTestLayerPropertiesForTesting(layers.back().get(), 0, identit yMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(200, 200), true); 1967 setTestLayerPropertiesForTesting(layers.back().get(), 0, identit yMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(200, 200), true);
1966 layers.back()->createRenderSurface(); 1968 layers.back()->createRenderSurface();
1967 } else { 1969 } else {
1968 setTestLayerPropertiesForTesting(layers.back().get(), layers[lay ers.size()-2].get(), identityMatrix, FloatPoint(0, 0), FloatPoint(1, 1), IntSize (200-i, 200-i), true); 1970 setTestLayerPropertiesForTesting(layers.back().get(), layers[lay ers.size()-2].get(), identityMatrix, gfx::PointF(0, 0), gfx::PointF(1, 1), gfx:: Size(200-i, 200-i), true);
1969 layers.back()->setMasksToBounds(true); 1971 layers.back()->setMasksToBounds(true);
1970 layers.back()->setReplicaLayer(replica.get()); // Make it have a RenderSurfaceImpl 1972 layers.back()->setReplicaLayer(replica.get()); // Make it have a RenderSurfaceImpl
1971 } 1973 }
1972 } 1974 }
1973 1975
1974 for (int i = 1; i < numSurfaces; ++i) { 1976 for (int i = 1; i < numSurfaces; ++i) {
1975 children.push_back(TestLayer::create()); 1977 children.push_back(TestLayer::create());
1976 setTestLayerPropertiesForTesting(children.back().get(), layers[i].ge t(), identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(500, 500), fals e); 1978 setTestLayerPropertiesForTesting(children.back().get(), layers[i].ge t(), identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false);
1977 } 1979 }
1978 1980
1979 m_layerTreeHost->setRootLayer(layers[0].get()); 1981 m_layerTreeHost->setRootLayer(layers[0].get());
1980 m_layerTreeHost->setViewportSize(layers[0]->bounds(), layers[0]->bounds( )); 1982 m_layerTreeHost->setViewportSize(layers[0]->bounds(), layers[0]->bounds( ));
1981 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded()); 1983 ASSERT_TRUE(m_layerTreeHost->initializeRendererIfNeeded());
1982 ResourceUpdateQueue queue; 1984 ResourceUpdateQueue queue;
1983 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ; 1985 m_layerTreeHost->updateLayers(queue, std::numeric_limits<size_t>::max()) ;
1984 m_layerTreeHost->commitComplete(); 1986 m_layerTreeHost->commitComplete();
1985 1987
1986 for (int i = 0; i < numSurfaces-1; ++i) { 1988 for (int i = 0; i < numSurfaces-1; ++i) {
1987 IntRect expectedOcclusion(i+1, i+1, 200-i-1, 200-i-1); 1989 cc::IntRect expectedOcclusion(i+1, i+1, 200-i-1, 200-i-1);
1988 1990
1989 EXPECT_RECT_EQ(expectedOcclusion, layers[i]->occludedScreenSpace().b ounds()); 1991 EXPECT_RECT_EQ(expectedOcclusion, layers[i]->occludedScreenSpace().b ounds());
1990 EXPECT_EQ(1u, layers[i]->occludedScreenSpace().rects().size()); 1992 EXPECT_EQ(1u, layers[i]->occludedScreenSpace().rects().size());
1991 } 1993 }
1992 1994
1993 // Kill the layerTreeHost immediately. 1995 // Kill the layerTreeHost immediately.
1994 m_layerTreeHost->setRootLayer(0); 1996 m_layerTreeHost->setRootLayer(0);
1995 m_layerTreeHost.reset(); 1997 m_layerTreeHost.reset();
1996 1998
1997 endTest(); 1999 endTest();
(...skipping 1069 matching lines...) Expand 10 before | Expand all | Expand 10 after
3067 , m_numDrawLayers(0) 3069 , m_numDrawLayers(0)
3068 { 3070 {
3069 } 3071 }
3070 3072
3071 virtual void beginTest() OVERRIDE 3073 virtual void beginTest() OVERRIDE
3072 { 3074 {
3073 m_layerTreeHost->setViewportSize(IntSize(10, 10), IntSize(10, 10)); 3075 m_layerTreeHost->setViewportSize(IntSize(10, 10), IntSize(10, 10));
3074 m_layerTreeHost->rootLayer()->setBounds(IntSize(10, 10)); 3076 m_layerTreeHost->rootLayer()->setBounds(IntSize(10, 10));
3075 3077
3076 m_contentLayer = ContentLayer::create(&m_mockDelegate); 3078 m_contentLayer = ContentLayer::create(&m_mockDelegate);
3077 m_contentLayer->setBounds(IntSize(10, 10)); 3079 m_contentLayer->setBounds(gfx::Size(10, 10));
3078 m_contentLayer->setPosition(FloatPoint(0, 0)); 3080 m_contentLayer->setPosition(gfx::PointF(0, 0));
3079 m_contentLayer->setAnchorPoint(FloatPoint(0, 0)); 3081 m_contentLayer->setAnchorPoint(gfx::PointF(0, 0));
3080 m_contentLayer->setIsDrawable(true); 3082 m_contentLayer->setIsDrawable(true);
3081 m_layerTreeHost->rootLayer()->addChild(m_contentLayer); 3083 m_layerTreeHost->rootLayer()->addChild(m_contentLayer);
3082 3084
3083 postSetNeedsCommitToMainThread(); 3085 postSetNeedsCommitToMainThread();
3084 } 3086 }
3085 3087
3086 virtual void didCommit() OVERRIDE 3088 virtual void didCommit() OVERRIDE
3087 { 3089 {
3088 m_contentLayer->setNeedsDisplay(); 3090 m_contentLayer->setNeedsDisplay();
3089 } 3091 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3127 LayerTreeHostTestAdjustPointForZoom() 3129 LayerTreeHostTestAdjustPointForZoom()
3128 { 3130 {
3129 } 3131 }
3130 3132
3131 virtual void beginTest() OVERRIDE 3133 virtual void beginTest() OVERRIDE
3132 { 3134 {
3133 WebTransformationMatrix m; 3135 WebTransformationMatrix m;
3134 m.translate(250, 360); 3136 m.translate(250, 360);
3135 m.scale(2); 3137 m.scale(2);
3136 3138
3137 IntPoint point(400, 550); 3139 gfx::Point point(400, 550);
3138 IntPoint transformedPoint; 3140 gfx::Point transformedPoint;
3139 3141
3140 // Unit transform, no change expected. 3142 // Unit transform, no change expected.
3141 m_layerTreeHost->setImplTransform(WebTransformationMatrix()); 3143 m_layerTreeHost->setImplTransform(WebTransformationMatrix());
3142 transformedPoint = roundedIntPoint(m_layerTreeHost->adjustEventPointForP inchZoom(point)); 3144 transformedPoint = gfx::ToRoundedPoint(m_layerTreeHost->adjustEventPoint ForPinchZoom(point));
3143 EXPECT_EQ(point.x(), transformedPoint.x()); 3145 EXPECT_EQ(point.x(), transformedPoint.x());
3144 EXPECT_EQ(point.y(), transformedPoint.y()); 3146 EXPECT_EQ(point.y(), transformedPoint.y());
3145 3147
3146 m_layerTreeHost->setImplTransform(m); 3148 m_layerTreeHost->setImplTransform(m);
3147 3149
3148 // Apply m^(-1): 138 = 400/2 - 250/4; 185 = 550/2 - 360/4. 3150 // Apply m^(-1): 138 = 400/2 - 250/4; 185 = 550/2 - 360/4.
3149 transformedPoint = roundedIntPoint(m_layerTreeHost->adjustEventPointForP inchZoom(point)); 3151 transformedPoint = gfx::ToRoundedPoint(m_layerTreeHost->adjustEventPoint ForPinchZoom(point));
3150 EXPECT_EQ(138, transformedPoint.x()); 3152 EXPECT_EQ(138, transformedPoint.x());
3151 EXPECT_EQ(185, transformedPoint.y()); 3153 EXPECT_EQ(185, transformedPoint.y());
3152 endTest(); 3154 endTest();
3153 } 3155 }
3154 3156
3155 virtual void afterTest() OVERRIDE 3157 virtual void afterTest() OVERRIDE
3156 { 3158 {
3157 } 3159 }
3158 }; 3160 };
3159 3161
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
3264 int m_numCommitsDeferred; 3266 int m_numCommitsDeferred;
3265 int m_numCompleteCommits; 3267 int m_numCompleteCommits;
3266 }; 3268 };
3267 3269
3268 TEST_F(LayerTreeHostTestDeferCommits, runMultiThread) 3270 TEST_F(LayerTreeHostTestDeferCommits, runMultiThread)
3269 { 3271 {
3270 runTest(true); 3272 runTest(true);
3271 } 3273 }
3272 3274
3273 } // namespace 3275 } // namespace
OLDNEW
« no previous file with comments | « cc/layer_tree_host_impl_unittest.cc ('k') | cc/layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698