| OLD | NEW |
| 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 "cc/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 return; | 545 return; |
| 546 | 546 |
| 547 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 547 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 548 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); | 548 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); |
| 549 initializeRendererAndDrawFrame(); | 549 initializeRendererAndDrawFrame(); |
| 550 | 550 |
| 551 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 551 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
| 552 DCHECK(scrollLayer); | 552 DCHECK(scrollLayer); |
| 553 | 553 |
| 554 const float minPageScale = 1, maxPageScale = 4; | 554 const float minPageScale = 1, maxPageScale = 4; |
| 555 const WebTransformationMatrix identityScaleTransform; | 555 const gfx::Transform identityScaleTransform; |
| 556 | 556 |
| 557 // The impl-based pinch zoom should not adjust the max scroll position. | 557 // The impl-based pinch zoom should not adjust the max scroll position. |
| 558 { | 558 { |
| 559 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 559 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 560 scrollLayer->setImplTransform(identityScaleTransform); | 560 scrollLayer->setImplTransform(identityScaleTransform); |
| 561 scrollLayer->setScrollDelta(gfx::Vector2d()); | 561 scrollLayer->setScrollDelta(gfx::Vector2d()); |
| 562 | 562 |
| 563 float pageScaleDelta = 2; | 563 float pageScaleDelta = 2; |
| 564 m_hostImpl->pinchGestureBegin(); | 564 m_hostImpl->pinchGestureBegin(); |
| 565 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); | 565 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 { | 599 { |
| 600 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 600 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 601 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); | 601 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); |
| 602 initializeRendererAndDrawFrame(); | 602 initializeRendererAndDrawFrame(); |
| 603 | 603 |
| 604 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 604 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
| 605 DCHECK(scrollLayer); | 605 DCHECK(scrollLayer); |
| 606 | 606 |
| 607 const float minPageScale = m_hostImpl->settings().pageScalePinchZoomEnabled
? 1 : 0.5; | 607 const float minPageScale = m_hostImpl->settings().pageScalePinchZoomEnabled
? 1 : 0.5; |
| 608 const float maxPageScale = 4; | 608 const float maxPageScale = 4; |
| 609 const WebTransformationMatrix identityScaleTransform; | 609 const gfx::Transform identityScaleTransform; |
| 610 | 610 |
| 611 // Basic pinch zoom in gesture | 611 // Basic pinch zoom in gesture |
| 612 { | 612 { |
| 613 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 613 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 614 scrollLayer->setImplTransform(identityScaleTransform); | 614 scrollLayer->setImplTransform(identityScaleTransform); |
| 615 scrollLayer->setScrollDelta(gfx::Vector2d()); | 615 scrollLayer->setScrollDelta(gfx::Vector2d()); |
| 616 | 616 |
| 617 float pageScaleDelta = 2; | 617 float pageScaleDelta = 2; |
| 618 m_hostImpl->pinchGestureBegin(); | 618 m_hostImpl->pinchGestureBegin(); |
| 619 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); | 619 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 711 | 711 |
| 712 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); | 712 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); |
| 713 DCHECK(scrollLayer); | 713 DCHECK(scrollLayer); |
| 714 | 714 |
| 715 const float minPageScale = 0.5; | 715 const float minPageScale = 0.5; |
| 716 const float maxPageScale = 4; | 716 const float maxPageScale = 4; |
| 717 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS
econds(1); | 717 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS
econds(1); |
| 718 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); | 718 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
| 719 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2; | 719 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2; |
| 720 const base::TimeTicks endTime = startTime + duration; | 720 const base::TimeTicks endTime = startTime + duration; |
| 721 const WebTransformationMatrix identityScaleTransform; | 721 const gfx::Transform identityScaleTransform; |
| 722 | 722 |
| 723 // Non-anchor zoom-in | 723 // Non-anchor zoom-in |
| 724 { | 724 { |
| 725 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); | 725 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); |
| 726 scrollLayer->setImplTransform(identityScaleTransform); | 726 scrollLayer->setImplTransform(identityScaleTransform); |
| 727 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50)); | 727 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50)); |
| 728 | 728 |
| 729 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(0, 0), false, 2, start
Time, duration); | 729 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(0, 0), false, 2, start
Time, duration); |
| 730 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); | 730 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); |
| 731 EXPECT_TRUE(m_didRequestRedraw); | 731 EXPECT_TRUE(m_didRequestRedraw); |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1173 EXPECT_FALSE(m_didRequestCommit); | 1173 EXPECT_FALSE(m_didRequestCommit); |
| 1174 } | 1174 } |
| 1175 | 1175 |
| 1176 TEST_P(LayerTreeHostImplTest, scrollMissesBackfacingChild) | 1176 TEST_P(LayerTreeHostImplTest, scrollMissesBackfacingChild) |
| 1177 { | 1177 { |
| 1178 gfx::Size surfaceSize(10, 10); | 1178 gfx::Size surfaceSize(10, 10); |
| 1179 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 1179 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
| 1180 scoped_ptr<LayerImpl> child = createScrollableLayer(2, surfaceSize); | 1180 scoped_ptr<LayerImpl> child = createScrollableLayer(2, surfaceSize); |
| 1181 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1181 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
| 1182 | 1182 |
| 1183 WebTransformationMatrix matrix; | 1183 gfx::Transform matrix; |
| 1184 matrix.rotate3d(180, 0, 0); | 1184 MathUtil::rotateEulerAngles(&matrix, 180, 0, 0); |
| 1185 child->setTransform(matrix); | 1185 child->setTransform(matrix); |
| 1186 child->setDoubleSided(false); | 1186 child->setDoubleSided(false); |
| 1187 | 1187 |
| 1188 root->addChild(child.Pass()); | 1188 root->addChild(child.Pass()); |
| 1189 m_hostImpl->setRootLayer(root.Pass()); | 1189 m_hostImpl->setRootLayer(root.Pass()); |
| 1190 initializeRendererAndDrawFrame(); | 1190 initializeRendererAndDrawFrame(); |
| 1191 | 1191 |
| 1192 // Scroll event is ignored because the scrollable layer is not facing the vi
ewer and there is | 1192 // Scroll event is ignored because the scrollable layer is not facing the vi
ewer and there is |
| 1193 // nothing scrollable behind it. | 1193 // nothing scrollable behind it. |
| 1194 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollIgnored); | 1194 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollIgnored); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1237 // The scale should apply to the scroll delta. | 1237 // The scale should apply to the scroll delta. |
| 1238 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); | 1238 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); |
| 1239 } | 1239 } |
| 1240 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1240 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 1241 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 1241 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 1242 | 1242 |
| 1243 // The scroll range should also have been updated. | 1243 // The scroll range should also have been updated. |
| 1244 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); | 1244 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); |
| 1245 | 1245 |
| 1246 // The page scale delta remains constant because the impl thread did not sca
le. | 1246 // The page scale delta remains constant because the impl thread did not sca
le. |
| 1247 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix(
)); | 1247 // TODO: If possible, use gfx::Transform() or Skia equality functions. At |
| 1248 // the moment we avoid that because skia does exact bit-wise equality |
| 1249 // checking that does not consider -0 == +0. |
| 1250 // http://code.google.com/p/chromium/issues/detail?id=162747 |
| 1251 EXPECT_EQ(1.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(0
, 0)); |
| 1252 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(0
, 1)); |
| 1253 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(0
, 2)); |
| 1254 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(0
, 3)); |
| 1255 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(1
, 0)); |
| 1256 EXPECT_EQ(1.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(1
, 1)); |
| 1257 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(1
, 2)); |
| 1258 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(1
, 3)); |
| 1259 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(2
, 0)); |
| 1260 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(2
, 1)); |
| 1261 EXPECT_EQ(1.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(2
, 2)); |
| 1262 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(2
, 3)); |
| 1263 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(3
, 0)); |
| 1264 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(3
, 1)); |
| 1265 EXPECT_EQ(0.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(3
, 2)); |
| 1266 EXPECT_EQ(1.0, m_hostImpl->rootLayer()->implTransform().matrix().getDouble(3
, 3)); |
| 1248 } | 1267 } |
| 1249 | 1268 |
| 1250 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) | 1269 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) |
| 1251 { | 1270 { |
| 1252 gfx::Size surfaceSize(10, 10); | 1271 gfx::Size surfaceSize(10, 10); |
| 1253 float pageScale = 2; | 1272 float pageScale = 2; |
| 1254 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); | 1273 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); |
| 1255 m_hostImpl->setRootLayer(root.Pass()); | 1274 m_hostImpl->setRootLayer(root.Pass()); |
| 1256 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1275 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
| 1257 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 1276 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1271 m_hostImpl->updateRootScrollLayerImplTransform(); | 1290 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 1272 | 1291 |
| 1273 // The scroll delta is not scaled because the main thread did not scale. | 1292 // The scroll delta is not scaled because the main thread did not scale. |
| 1274 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1293 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 1275 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 1294 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 1276 | 1295 |
| 1277 // The scroll range should also have been updated. | 1296 // The scroll range should also have been updated. |
| 1278 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); | 1297 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); |
| 1279 | 1298 |
| 1280 // The page scale delta should match the new scale on the impl side. | 1299 // The page scale delta should match the new scale on the impl side. |
| 1281 WebTransformationMatrix expectedScale; | 1300 gfx::Transform expectedScale; |
| 1282 expectedScale.scale(pageScale); | 1301 expectedScale.Scale(pageScale, pageScale); |
| 1283 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedScale); | 1302 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedScale); |
| 1284 } | 1303 } |
| 1285 | 1304 |
| 1286 TEST_P(LayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) | 1305 TEST_P(LayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) |
| 1287 { | 1306 { |
| 1288 gfx::Size surfaceSize(10, 10); | 1307 gfx::Size surfaceSize(10, 10); |
| 1289 float defaultPageScale = 1; | 1308 float defaultPageScale = 1; |
| 1290 WebTransformationMatrix defaultPageScaleMatrix; | 1309 gfx::Transform defaultPageScaleMatrix; |
| 1291 | 1310 |
| 1292 float newPageScale = 2; | 1311 float newPageScale = 2; |
| 1293 WebTransformationMatrix newPageScaleMatrix; | 1312 gfx::Transform newPageScaleMatrix; |
| 1294 newPageScaleMatrix.scale(newPageScale); | 1313 newPageScaleMatrix.Scale(newPageScale, newPageScale); |
| 1295 | 1314 |
| 1296 // Create a normal scrollable root layer and another scrollable child layer. | 1315 // Create a normal scrollable root layer and another scrollable child layer. |
| 1297 setupScrollAndContentsLayers(surfaceSize); | 1316 setupScrollAndContentsLayers(surfaceSize); |
| 1298 LayerImpl* root = m_hostImpl->rootLayer(); | 1317 LayerImpl* root = m_hostImpl->rootLayer(); |
| 1299 LayerImpl* child = root->children()[0]; | 1318 LayerImpl* child = root->children()[0]; |
| 1300 | 1319 |
| 1301 scoped_ptr<LayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize
); | 1320 scoped_ptr<LayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize
); |
| 1302 child->addChild(scrollableChild.Pass()); | 1321 child->addChild(scrollableChild.Pass()); |
| 1303 LayerImpl* grandChild = child->children()[0]; | 1322 LayerImpl* grandChild = child->children()[0]; |
| 1304 | 1323 |
| 1305 // Set new page scale on impl thread by pinching. | 1324 // Set new page scale on impl thread by pinching. |
| 1306 m_hostImpl->pinchGestureBegin(); | 1325 m_hostImpl->pinchGestureBegin(); |
| 1307 m_hostImpl->pinchGestureUpdate(newPageScale, gfx::Point()); | 1326 m_hostImpl->pinchGestureUpdate(newPageScale, gfx::Point()); |
| 1308 m_hostImpl->pinchGestureEnd(); | 1327 m_hostImpl->pinchGestureEnd(); |
| 1309 m_hostImpl->updateRootScrollLayerImplTransform(); | 1328 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 1310 | 1329 |
| 1311 // The page scale delta should only be applied to the scrollable root layer. | 1330 // The page scale delta should only be applied to the scrollable root layer. |
| 1312 EXPECT_EQ(root->implTransform(), newPageScaleMatrix); | 1331 EXPECT_EQ(root->implTransform(), newPageScaleMatrix); |
| 1313 EXPECT_EQ(child->implTransform(), defaultPageScaleMatrix); | 1332 EXPECT_EQ(child->implTransform(), defaultPageScaleMatrix); |
| 1314 EXPECT_EQ(grandChild->implTransform(), defaultPageScaleMatrix); | 1333 EXPECT_EQ(grandChild->implTransform(), defaultPageScaleMatrix); |
| 1315 | 1334 |
| 1316 // Make sure all the layers are drawn with the page scale delta applied, i.e
., the page scale | 1335 // Make sure all the layers are drawn with the page scale delta applied, i.e
., the page scale |
| 1317 // delta on the root layer is applied hierarchically. | 1336 // delta on the root layer is applied hierarchically. |
| 1318 LayerTreeHostImpl::FrameData frame; | 1337 LayerTreeHostImpl::FrameData frame; |
| 1319 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); | 1338 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); |
| 1320 m_hostImpl->drawLayers(frame); | 1339 m_hostImpl->drawLayers(frame); |
| 1321 m_hostImpl->didDrawAllLayers(frame); | 1340 m_hostImpl->didDrawAllLayers(frame); |
| 1322 | 1341 |
| 1323 EXPECT_EQ(root->drawTransform().m11(), newPageScale); | 1342 EXPECT_EQ(root->drawTransform().matrix().getDouble(0, 0), newPageScale); |
| 1324 EXPECT_EQ(root->drawTransform().m22(), newPageScale); | 1343 EXPECT_EQ(root->drawTransform().matrix().getDouble(1, 1), newPageScale); |
| 1325 EXPECT_EQ(child->drawTransform().m11(), newPageScale); | 1344 EXPECT_EQ(child->drawTransform().matrix().getDouble(0, 0), newPageScale); |
| 1326 EXPECT_EQ(child->drawTransform().m22(), newPageScale); | 1345 EXPECT_EQ(child->drawTransform().matrix().getDouble(1, 1), newPageScale); |
| 1327 EXPECT_EQ(grandChild->drawTransform().m11(), newPageScale); | 1346 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(0, 0), newPageScale
); |
| 1328 EXPECT_EQ(grandChild->drawTransform().m22(), newPageScale); | 1347 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(1, 1), newPageScale
); |
| 1329 } | 1348 } |
| 1330 | 1349 |
| 1331 TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread) | 1350 TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread) |
| 1332 { | 1351 { |
| 1333 gfx::Size surfaceSize(10, 10); | 1352 gfx::Size surfaceSize(10, 10); |
| 1334 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 1353 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
| 1335 root->setBounds(surfaceSize); | 1354 root->setBounds(surfaceSize); |
| 1336 root->setContentBounds(surfaceSize); | 1355 root->setContentBounds(surfaceSize); |
| 1337 // Also mark the root scrollable so it becomes the root scroll layer. | 1356 // Also mark the root scrollable so it becomes the root scroll layer. |
| 1338 root->setScrollable(true); | 1357 root->setScrollable(true); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1360 // The scale should apply to the scroll delta. | 1379 // The scale should apply to the scroll delta. |
| 1361 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); | 1380 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected
ScrollDelta, pageScale)); |
| 1362 } | 1381 } |
| 1363 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 1382 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 1364 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); | 1383 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); |
| 1365 | 1384 |
| 1366 // The scroll range should not have changed. | 1385 // The scroll range should not have changed. |
| 1367 EXPECT_EQ(child->maxScrollOffset(), expectedMaxScroll); | 1386 EXPECT_EQ(child->maxScrollOffset(), expectedMaxScroll); |
| 1368 | 1387 |
| 1369 // The page scale delta remains constant because the impl thread did not sca
le. | 1388 // The page scale delta remains constant because the impl thread did not sca
le. |
| 1370 WebTransformationMatrix identityTransform; | 1389 gfx::Transform identityTransform; |
| 1371 EXPECT_EQ(child->implTransform(), WebTransformationMatrix()); | 1390 EXPECT_EQ(child->implTransform(), gfx::Transform()); |
| 1372 } | 1391 } |
| 1373 | 1392 |
| 1374 TEST_P(LayerTreeHostImplTest, scrollChildBeyondLimit) | 1393 TEST_P(LayerTreeHostImplTest, scrollChildBeyondLimit) |
| 1375 { | 1394 { |
| 1376 // Scroll a child layer beyond its maximum scroll range and make sure the | 1395 // Scroll a child layer beyond its maximum scroll range and make sure the |
| 1377 // parent layer is scrolled on the axis on which the child was unable to | 1396 // parent layer is scrolled on the axis on which the child was unable to |
| 1378 // scroll. | 1397 // scroll. |
| 1379 gfx::Size surfaceSize(10, 10); | 1398 gfx::Size surfaceSize(10, 10); |
| 1380 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); | 1399 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); |
| 1381 | 1400 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1449 | 1468 |
| 1450 // Scrolling should still work even though we did not draw yet. | 1469 // Scrolling should still work even though we did not draw yet. |
| 1451 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); | 1470 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee
l), InputHandlerClient::ScrollStarted); |
| 1452 } | 1471 } |
| 1453 | 1472 |
| 1454 TEST_P(LayerTreeHostImplTest, scrollAxisAlignedRotatedLayer) | 1473 TEST_P(LayerTreeHostImplTest, scrollAxisAlignedRotatedLayer) |
| 1455 { | 1474 { |
| 1456 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 1475 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 1457 | 1476 |
| 1458 // Rotate the root layer 90 degrees counter-clockwise about its center. | 1477 // Rotate the root layer 90 degrees counter-clockwise about its center. |
| 1459 WebTransformationMatrix rotateTransform; | 1478 gfx::Transform rotateTransform; |
| 1460 rotateTransform.rotate(-90); | 1479 rotateTransform.Rotate(-90); |
| 1461 m_hostImpl->rootLayer()->setTransform(rotateTransform); | 1480 m_hostImpl->rootLayer()->setTransform(rotateTransform); |
| 1462 | 1481 |
| 1463 gfx::Size surfaceSize(50, 50); | 1482 gfx::Size surfaceSize(50, 50); |
| 1464 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1483 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
| 1465 initializeRendererAndDrawFrame(); | 1484 initializeRendererAndDrawFrame(); |
| 1466 | 1485 |
| 1467 // Scroll to the right in screen coordinates with a gesture. | 1486 // Scroll to the right in screen coordinates with a gesture. |
| 1468 gfx::Vector2d gestureScrollDelta(10, 0); | 1487 gfx::Vector2d gestureScrollDelta(10, 0); |
| 1469 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); | 1488 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); |
| 1470 m_hostImpl->scrollBy(gfx::Point(), gestureScrollDelta); | 1489 m_hostImpl->scrollBy(gfx::Point(), gestureScrollDelta); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1487 } | 1506 } |
| 1488 | 1507 |
| 1489 TEST_P(LayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer) | 1508 TEST_P(LayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer) |
| 1490 { | 1509 { |
| 1491 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 1510 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 1492 int childLayerId = 3; | 1511 int childLayerId = 3; |
| 1493 float childLayerAngle = -20; | 1512 float childLayerAngle = -20; |
| 1494 | 1513 |
| 1495 // Create a child layer that is rotated to a non-axis-aligned angle. | 1514 // Create a child layer that is rotated to a non-axis-aligned angle. |
| 1496 scoped_ptr<LayerImpl> child = createScrollableLayer(childLayerId, m_hostImpl
->rootLayer()->contentBounds()); | 1515 scoped_ptr<LayerImpl> child = createScrollableLayer(childLayerId, m_hostImpl
->rootLayer()->contentBounds()); |
| 1497 WebTransformationMatrix rotateTransform; | 1516 gfx::Transform rotateTransform; |
| 1498 rotateTransform.translate(-50, -50); | 1517 rotateTransform.Translate(-50, -50); |
| 1499 rotateTransform.rotate(childLayerAngle); | 1518 rotateTransform.Rotate(childLayerAngle); |
| 1500 rotateTransform.translate(50, 50); | 1519 rotateTransform.Translate(50, 50); |
| 1501 child->setTransform(rotateTransform); | 1520 child->setTransform(rotateTransform); |
| 1502 | 1521 |
| 1503 // Only allow vertical scrolling. | 1522 // Only allow vertical scrolling. |
| 1504 child->setMaxScrollOffset(gfx::Vector2d(0, child->contentBounds().height()))
; | 1523 child->setMaxScrollOffset(gfx::Vector2d(0, child->contentBounds().height()))
; |
| 1505 m_hostImpl->rootLayer()->addChild(child.Pass()); | 1524 m_hostImpl->rootLayer()->addChild(child.Pass()); |
| 1506 | 1525 |
| 1507 gfx::Size surfaceSize(50, 50); | 1526 gfx::Size surfaceSize(50, 50); |
| 1508 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1527 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
| 1509 initializeRendererAndDrawFrame(); | 1528 initializeRendererAndDrawFrame(); |
| 1510 | 1529 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1546 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expecte
dRootScrollDelta); | 1565 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expecte
dRootScrollDelta); |
| 1547 } | 1566 } |
| 1548 } | 1567 } |
| 1549 | 1568 |
| 1550 TEST_P(LayerTreeHostImplTest, scrollScaledLayer) | 1569 TEST_P(LayerTreeHostImplTest, scrollScaledLayer) |
| 1551 { | 1570 { |
| 1552 setupScrollAndContentsLayers(gfx::Size(100, 100)); | 1571 setupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 1553 | 1572 |
| 1554 // Scale the layer to twice its normal size. | 1573 // Scale the layer to twice its normal size. |
| 1555 int scale = 2; | 1574 int scale = 2; |
| 1556 WebTransformationMatrix scaleTransform; | 1575 gfx::Transform scaleTransform; |
| 1557 scaleTransform.scale(scale); | 1576 scaleTransform.Scale(scale, scale); |
| 1558 m_hostImpl->rootLayer()->setTransform(scaleTransform); | 1577 m_hostImpl->rootLayer()->setTransform(scaleTransform); |
| 1559 | 1578 |
| 1560 gfx::Size surfaceSize(50, 50); | 1579 gfx::Size surfaceSize(50, 50); |
| 1561 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); | 1580 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); |
| 1562 initializeRendererAndDrawFrame(); | 1581 initializeRendererAndDrawFrame(); |
| 1563 | 1582 |
| 1564 // Scroll down in screen coordinates with a gesture. | 1583 // Scroll down in screen coordinates with a gesture. |
| 1565 gfx::Vector2d scrollDelta(0, 10); | 1584 gfx::Vector2d scrollDelta(0, 10); |
| 1566 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); | 1585 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gest
ure), InputHandlerClient::ScrollStarted); |
| 1567 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 1586 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| (...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2740 : ScrollbarLayerImpl(id) | 2759 : ScrollbarLayerImpl(id) |
| 2741 { | 2760 { |
| 2742 } | 2761 } |
| 2743 }; | 2762 }; |
| 2744 | 2763 |
| 2745 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid
er* provider) | 2764 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid
er* provider) |
| 2746 { | 2765 { |
| 2747 ResourceProvider::ResourceId resourceId = provider->createResource(0, gfx::S
ize(1, 1), GL_RGBA, ResourceProvider::TextureUsageAny); | 2766 ResourceProvider::ResourceId resourceId = provider->createResource(0, gfx::S
ize(1, 1), GL_RGBA, ResourceProvider::TextureUsageAny); |
| 2748 | 2767 |
| 2749 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); | 2768 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 2750 pass->SetNew(RenderPass::Id(1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1,
1), WebTransformationMatrix()); | 2769 pass->SetNew(RenderPass::Id(1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1,
1), gfx::Transform()); |
| 2751 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create(); | 2770 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create(); |
| 2752 sharedState->SetAll(WebTransformationMatrix(), gfx::Rect(0, 0, 1, 1), gfx::R
ect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), false, 1); | 2771 sharedState->SetAll(gfx::Transform(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0,
1, 1), gfx::Rect(0, 0, 1, 1), false, 1); |
| 2753 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 2772 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
| 2754 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)
, resourceId, false, gfx::RectF(0, 0, 1, 1), false); | 2773 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)
, resourceId, false, gfx::RectF(0, 0, 1, 1), false); |
| 2755 | 2774 |
| 2756 pass->AppendSharedQuadState(sharedState.Pass()); | 2775 pass->AppendSharedQuadState(sharedState.Pass()); |
| 2757 pass->AppendQuad(quad.PassAs<DrawQuad>()); | 2776 pass->AppendQuad(quad.PassAs<DrawQuad>()); |
| 2758 | 2777 |
| 2759 return pass.PassAs<RenderPass>(); | 2778 return pass.PassAs<RenderPass>(); |
| 2760 } | 2779 } |
| 2761 | 2780 |
| 2762 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostContext) | 2781 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostContext) |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3162 | 3181 |
| 3163 // Surface layer is the layer that changes its opacity | 3182 // Surface layer is the layer that changes its opacity |
| 3164 // It will contain other layers that draw content. | 3183 // It will contain other layers that draw content. |
| 3165 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface | 3184 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface |
| 3166 | 3185 |
| 3167 addDrawingLayerTo(surfaceLayerPtr, 4, gfx::Rect(0, 0, 100, 3), 0); | 3186 addDrawingLayerTo(surfaceLayerPtr, 4, gfx::Rect(0, 0, 100, 3), 0); |
| 3168 addDrawingLayerTo(surfaceLayerPtr, 5, gfx::Rect(0, 97, 100, 3), 0); | 3187 addDrawingLayerTo(surfaceLayerPtr, 5, gfx::Rect(0, 97, 100, 3), 0); |
| 3169 | 3188 |
| 3170 // Rotation will put part of the child ouside the bounds of the root layer. | 3189 // Rotation will put part of the child ouside the bounds of the root layer. |
| 3171 // Nevertheless, the child layers should be drawn. | 3190 // Nevertheless, the child layers should be drawn. |
| 3172 WebTransformationMatrix transform = surfaceLayerPtr->transform(); | 3191 gfx::Transform transform = surfaceLayerPtr->transform(); |
| 3173 transform.translate(50, 50); | 3192 transform.Translate(50, 50); |
| 3174 transform.rotate(35); | 3193 transform.Rotate(35); |
| 3175 transform.translate(-50, -50); | 3194 transform.Translate(-50, -50); |
| 3176 surfaceLayerPtr->setTransform(transform); | 3195 surfaceLayerPtr->setTransform(transform); |
| 3177 | 3196 |
| 3178 { | 3197 { |
| 3179 LayerTreeHostImpl::FrameData frame; | 3198 LayerTreeHostImpl::FrameData frame; |
| 3180 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3199 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3181 | 3200 |
| 3182 // Must receive two render passes, each with one quad | 3201 // Must receive two render passes, each with one quad |
| 3183 ASSERT_EQ(2U, frame.renderPasses.size()); | 3202 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3184 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); | 3203 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3185 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); | 3204 ASSERT_EQ(1U, frame.renderPasses[1]->quad_list.size()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3196 | 3215 |
| 3197 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); | 3216 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[1]->quad_list[0]->ma
terial); |
| 3198 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); | 3217 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[1]->quad_list[0]); |
| 3199 EXPECT_FALSE(quad->contents_changed_since_last_frame.IsEmpty()); | 3218 EXPECT_FALSE(quad->contents_changed_since_last_frame.IsEmpty()); |
| 3200 | 3219 |
| 3201 myHostImpl->drawLayers(frame); | 3220 myHostImpl->drawLayers(frame); |
| 3202 myHostImpl->didDrawAllLayers(frame); | 3221 myHostImpl->didDrawAllLayers(frame); |
| 3203 } | 3222 } |
| 3204 | 3223 |
| 3205 transform = surfaceLayerPtr->transform(); | 3224 transform = surfaceLayerPtr->transform(); |
| 3206 transform.translate(50, 50); | 3225 transform.Translate(50, 50); |
| 3207 transform.rotate(-35); | 3226 transform.Rotate(-35); |
| 3208 transform.translate(-50, -50); | 3227 transform.Translate(-50, -50); |
| 3209 surfaceLayerPtr->setTransform(transform); | 3228 surfaceLayerPtr->setTransform(transform); |
| 3210 | 3229 |
| 3211 // The surface is now aligned again, and the clipped parts are exposed. | 3230 // The surface is now aligned again, and the clipped parts are exposed. |
| 3212 // Since the layers were clipped, even though the render surface size | 3231 // Since the layers were clipped, even though the render surface size |
| 3213 // was not changed, the texture should not be saved. | 3232 // was not changed, the texture should not be saved. |
| 3214 { | 3233 { |
| 3215 LayerTreeHostImpl::FrameData frame; | 3234 LayerTreeHostImpl::FrameData frame; |
| 3216 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3235 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3217 | 3236 |
| 3218 // Must receive two render passes, each with one quad | 3237 // Must receive two render passes, each with one quad |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3291 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); | 3310 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3292 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); | 3311 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3293 | 3312 |
| 3294 myHostImpl->drawLayers(frame); | 3313 myHostImpl->drawLayers(frame); |
| 3295 myHostImpl->didDrawAllLayers(frame); | 3314 myHostImpl->didDrawAllLayers(frame); |
| 3296 } | 3315 } |
| 3297 | 3316 |
| 3298 // "Unocclude" surface S1 and repeat draw. | 3317 // "Unocclude" surface S1 and repeat draw. |
| 3299 // Must remove S2's render pass since it's cached; | 3318 // Must remove S2's render pass since it's cached; |
| 3300 // Must keep S1 quads because texture contained external occlusion. | 3319 // Must keep S1 quads because texture contained external occlusion. |
| 3301 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3320 gfx::Transform transform = layerS2Ptr->transform(); |
| 3302 transform.translate(150, 150); | 3321 transform.Translate(150, 150); |
| 3303 layerS2Ptr->setTransform(transform); | 3322 layerS2Ptr->setTransform(transform); |
| 3304 { | 3323 { |
| 3305 LayerTreeHostImpl::FrameData frame; | 3324 LayerTreeHostImpl::FrameData frame; |
| 3306 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3325 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3307 | 3326 |
| 3308 // Must receive 2 render passes. | 3327 // Must receive 2 render passes. |
| 3309 // For Root, there are 2 quads | 3328 // For Root, there are 2 quads |
| 3310 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3329 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3311 // For S2, there is no render pass | 3330 // For S2, there is no render pass |
| 3312 ASSERT_EQ(2U, frame.renderPasses.size()); | 3331 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3313 | 3332 |
| 3314 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); | 3333 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); |
| 3315 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); | 3334 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3316 | 3335 |
| 3317 myHostImpl->drawLayers(frame); | 3336 myHostImpl->drawLayers(frame); |
| 3318 myHostImpl->didDrawAllLayers(frame); | 3337 myHostImpl->didDrawAllLayers(frame); |
| 3319 } | 3338 } |
| 3320 | 3339 |
| 3321 // "Re-occlude" surface S1 and repeat draw. | 3340 // "Re-occlude" surface S1 and repeat draw. |
| 3322 // Must remove S1's render pass since it is now available in full. | 3341 // Must remove S1's render pass since it is now available in full. |
| 3323 // S2 has no change so must also be removed. | 3342 // S2 has no change so must also be removed. |
| 3324 transform = layerS2Ptr->transform(); | 3343 transform = layerS2Ptr->transform(); |
| 3325 transform.translate(-15, -15); | 3344 transform.Translate(-15, -15); |
| 3326 layerS2Ptr->setTransform(transform); | 3345 layerS2Ptr->setTransform(transform); |
| 3327 { | 3346 { |
| 3328 LayerTreeHostImpl::FrameData frame; | 3347 LayerTreeHostImpl::FrameData frame; |
| 3329 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3348 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3330 | 3349 |
| 3331 // Must receive 1 render pass - for the root. | 3350 // Must receive 1 render pass - for the root. |
| 3332 ASSERT_EQ(1U, frame.renderPasses.size()); | 3351 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3333 | 3352 |
| 3334 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); | 3353 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3335 | 3354 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3406 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); | 3425 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); |
| 3407 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); | 3426 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3408 | 3427 |
| 3409 myHostImpl->drawLayers(frame); | 3428 myHostImpl->drawLayers(frame); |
| 3410 myHostImpl->didDrawAllLayers(frame); | 3429 myHostImpl->didDrawAllLayers(frame); |
| 3411 } | 3430 } |
| 3412 | 3431 |
| 3413 // "Unocclude" surface S1 and repeat draw. | 3432 // "Unocclude" surface S1 and repeat draw. |
| 3414 // Must remove S2's render pass since it's cached; | 3433 // Must remove S2's render pass since it's cached; |
| 3415 // Must keep S1 quads because texture contained external occlusion. | 3434 // Must keep S1 quads because texture contained external occlusion. |
| 3416 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3435 gfx::Transform transform = layerS2Ptr->transform(); |
| 3417 transform.translate(100, 100); | 3436 transform.Translate(100, 100); |
| 3418 layerS2Ptr->setTransform(transform); | 3437 layerS2Ptr->setTransform(transform); |
| 3419 { | 3438 { |
| 3420 LayerTreeHostImpl::FrameData frame; | 3439 LayerTreeHostImpl::FrameData frame; |
| 3421 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3440 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3422 | 3441 |
| 3423 // Must receive 2 render passes. | 3442 // Must receive 2 render passes. |
| 3424 // For Root, there are 2 quads | 3443 // For Root, there are 2 quads |
| 3425 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3444 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3426 // For S2, there is no render pass | 3445 // For S2, there is no render pass |
| 3427 ASSERT_EQ(2U, frame.renderPasses.size()); | 3446 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3428 | 3447 |
| 3429 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); | 3448 EXPECT_GT(frame.renderPasses[0]->quad_list.size(), 0U); |
| 3430 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); | 3449 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3431 | 3450 |
| 3432 myHostImpl->drawLayers(frame); | 3451 myHostImpl->drawLayers(frame); |
| 3433 myHostImpl->didDrawAllLayers(frame); | 3452 myHostImpl->didDrawAllLayers(frame); |
| 3434 } | 3453 } |
| 3435 | 3454 |
| 3436 // "Re-occlude" surface S1 and repeat draw. | 3455 // "Re-occlude" surface S1 and repeat draw. |
| 3437 // Must remove S1's render pass since it is now available in full. | 3456 // Must remove S1's render pass since it is now available in full. |
| 3438 // S2 has no change so must also be removed. | 3457 // S2 has no change so must also be removed. |
| 3439 transform = layerS2Ptr->transform(); | 3458 transform = layerS2Ptr->transform(); |
| 3440 transform.translate(-15, -15); | 3459 transform.Translate(-15, -15); |
| 3441 layerS2Ptr->setTransform(transform); | 3460 layerS2Ptr->setTransform(transform); |
| 3442 { | 3461 { |
| 3443 LayerTreeHostImpl::FrameData frame; | 3462 LayerTreeHostImpl::FrameData frame; |
| 3444 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3463 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3445 | 3464 |
| 3446 // Must receive 1 render pass - for the root. | 3465 // Must receive 1 render pass - for the root. |
| 3447 ASSERT_EQ(1U, frame.renderPasses.size()); | 3466 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3448 | 3467 |
| 3449 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); | 3468 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3450 | 3469 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3512 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); | 3531 EXPECT_EQ(3U, frame.renderPasses[1]->quad_list.size()); |
| 3513 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); | 3532 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3514 | 3533 |
| 3515 myHostImpl->drawLayers(frame); | 3534 myHostImpl->drawLayers(frame); |
| 3516 myHostImpl->didDrawAllLayers(frame); | 3535 myHostImpl->didDrawAllLayers(frame); |
| 3517 } | 3536 } |
| 3518 | 3537 |
| 3519 // "Unocclude" surface S1 and repeat draw. | 3538 // "Unocclude" surface S1 and repeat draw. |
| 3520 // Must remove S2's render pass since it's cached; | 3539 // Must remove S2's render pass since it's cached; |
| 3521 // Must keep S1 quads because texture contained external occlusion. | 3540 // Must keep S1 quads because texture contained external occlusion. |
| 3522 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3541 gfx::Transform transform = layerS2Ptr->transform(); |
| 3523 transform.translate(300, 0); | 3542 transform.Translate(300, 0); |
| 3524 layerS2Ptr->setTransform(transform); | 3543 layerS2Ptr->setTransform(transform); |
| 3525 { | 3544 { |
| 3526 LayerTreeHostImpl::FrameData frame; | 3545 LayerTreeHostImpl::FrameData frame; |
| 3527 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3546 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3528 | 3547 |
| 3529 // Must receive 2 render passes. | 3548 // Must receive 2 render passes. |
| 3530 // For Root, there are 2 quads | 3549 // For Root, there are 2 quads |
| 3531 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. | 3550 // For S1, the number of quads depends on what got unoccluded, so not as
serted beyond being positive. |
| 3532 // For S2, there is no render pass | 3551 // For S2, there is no render pass |
| 3533 ASSERT_EQ(2U, frame.renderPasses.size()); | 3552 ASSERT_EQ(2U, frame.renderPasses.size()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3566 root->setAnchorPoint(gfx::PointF(0, 0)); | 3585 root->setAnchorPoint(gfx::PointF(0, 0)); |
| 3567 root->setPosition(gfx::PointF(0, 0)); | 3586 root->setPosition(gfx::PointF(0, 0)); |
| 3568 root->setBounds(rootSize); | 3587 root->setBounds(rootSize); |
| 3569 root->setContentBounds(rootSize); | 3588 root->setContentBounds(rootSize); |
| 3570 root->setDrawsContent(true); | 3589 root->setDrawsContent(true); |
| 3571 root->setMasksToBounds(true); | 3590 root->setMasksToBounds(true); |
| 3572 myHostImpl->setRootLayer(root.Pass()); | 3591 myHostImpl->setRootLayer(root.Pass()); |
| 3573 | 3592 |
| 3574 addDrawingLayerTo(rootPtr, 2, gfx::Rect(0, 0, 400, 400), &layerS1Ptr); | 3593 addDrawingLayerTo(rootPtr, 2, gfx::Rect(0, 0, 400, 400), &layerS1Ptr); |
| 3575 layerS1Ptr->setForceRenderSurface(true); | 3594 layerS1Ptr->setForceRenderSurface(true); |
| 3576 WebTransformationMatrix transform = layerS1Ptr->transform(); | 3595 gfx::Transform transform = layerS1Ptr->transform(); |
| 3577 transform.translate(200, 200); | 3596 transform.Translate(200, 200); |
| 3578 transform.rotate(45); | 3597 transform.Rotate(45); |
| 3579 transform.translate(-200, -200); | 3598 transform.Translate(-200, -200); |
| 3580 layerS1Ptr->setTransform(transform); | 3599 layerS1Ptr->setTransform(transform); |
| 3581 | 3600 |
| 3582 addDrawingLayerTo(layerS1Ptr, 3, gfx::Rect(200, 0, 200, 400), 0); // L11 | 3601 addDrawingLayerTo(layerS1Ptr, 3, gfx::Rect(200, 0, 200, 400), 0); // L11 |
| 3583 | 3602 |
| 3584 // Initial draw - must receive all quads | 3603 // Initial draw - must receive all quads |
| 3585 { | 3604 { |
| 3586 LayerTreeHostImpl::FrameData frame; | 3605 LayerTreeHostImpl::FrameData frame; |
| 3587 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3606 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3588 | 3607 |
| 3589 // Must receive 2 render passes. | 3608 // Must receive 2 render passes. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3679 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); | 3698 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3680 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); | 3699 EXPECT_EQ(2U, frame.renderPasses[2]->quad_list.size()); |
| 3681 | 3700 |
| 3682 myHostImpl->drawLayers(frame); | 3701 myHostImpl->drawLayers(frame); |
| 3683 myHostImpl->didDrawAllLayers(frame); | 3702 myHostImpl->didDrawAllLayers(frame); |
| 3684 } | 3703 } |
| 3685 | 3704 |
| 3686 // "Unocclude" surface S1 and repeat draw. | 3705 // "Unocclude" surface S1 and repeat draw. |
| 3687 // Must remove S2's render pass since it's cached; | 3706 // Must remove S2's render pass since it's cached; |
| 3688 // Must keep S1 quads because texture contained external occlusion. | 3707 // Must keep S1 quads because texture contained external occlusion. |
| 3689 WebTransformationMatrix transform = layerS2Ptr->transform(); | 3708 gfx::Transform transform = layerS2Ptr->transform(); |
| 3690 transform.translate(150, 150); | 3709 transform.Translate(150, 150); |
| 3691 layerS2Ptr->setTransform(transform); | 3710 layerS2Ptr->setTransform(transform); |
| 3692 { | 3711 { |
| 3693 LayerTreeHostImpl::FrameData frame; | 3712 LayerTreeHostImpl::FrameData frame; |
| 3694 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3713 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3695 | 3714 |
| 3696 // Must receive 2 render passes. | 3715 // Must receive 2 render passes. |
| 3697 // For Root, there are 2 quads. | 3716 // For Root, there are 2 quads. |
| 3698 // For S1, there are 2 quads. | 3717 // For S1, there are 2 quads. |
| 3699 // For S2, there is no render pass | 3718 // For S2, there is no render pass |
| 3700 ASSERT_EQ(2U, frame.renderPasses.size()); | 3719 ASSERT_EQ(2U, frame.renderPasses.size()); |
| 3701 | 3720 |
| 3702 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); | 3721 EXPECT_EQ(2U, frame.renderPasses[0]->quad_list.size()); |
| 3703 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); | 3722 EXPECT_EQ(2U, frame.renderPasses[1]->quad_list.size()); |
| 3704 | 3723 |
| 3705 myHostImpl->drawLayers(frame); | 3724 myHostImpl->drawLayers(frame); |
| 3706 myHostImpl->didDrawAllLayers(frame); | 3725 myHostImpl->didDrawAllLayers(frame); |
| 3707 } | 3726 } |
| 3708 | 3727 |
| 3709 // "Re-occlude" surface S1 and repeat draw. | 3728 // "Re-occlude" surface S1 and repeat draw. |
| 3710 // Must remove S1's render pass since it is now available in full. | 3729 // Must remove S1's render pass since it is now available in full. |
| 3711 // S2 has no change so must also be removed. | 3730 // S2 has no change so must also be removed. |
| 3712 transform = layerS2Ptr->transform(); | 3731 transform = layerS2Ptr->transform(); |
| 3713 transform.translate(-15, -15); | 3732 transform.Translate(-15, -15); |
| 3714 layerS2Ptr->setTransform(transform); | 3733 layerS2Ptr->setTransform(transform); |
| 3715 { | 3734 { |
| 3716 LayerTreeHostImpl::FrameData frame; | 3735 LayerTreeHostImpl::FrameData frame; |
| 3717 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3736 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3718 | 3737 |
| 3719 // Root render pass only. | 3738 // Root render pass only. |
| 3720 ASSERT_EQ(1U, frame.renderPasses.size()); | 3739 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3721 | 3740 |
| 3722 myHostImpl->drawLayers(frame); | 3741 myHostImpl->drawLayers(frame); |
| 3723 myHostImpl->didDrawAllLayers(frame); | 3742 myHostImpl->didDrawAllLayers(frame); |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3961 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); | 3980 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| 3962 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); | 3981 const RenderPassDrawQuad* quad = RenderPassDrawQuad::MaterialCast(frame.
renderPasses[0]->quad_list[0]); |
| 3963 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); | 3982 RenderPass* targetPass = frame.renderPassesById.get(quad->render_pass_id
); |
| 3964 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); | 3983 EXPECT_TRUE(targetPass->damage_rect.IsEmpty()); |
| 3965 | 3984 |
| 3966 myHostImpl->drawLayers(frame); | 3985 myHostImpl->drawLayers(frame); |
| 3967 myHostImpl->didDrawAllLayers(frame); | 3986 myHostImpl->didDrawAllLayers(frame); |
| 3968 } | 3987 } |
| 3969 | 3988 |
| 3970 // Change location of the intermediate layer | 3989 // Change location of the intermediate layer |
| 3971 WebTransformationMatrix transform = intermediateLayerPtr->transform(); | 3990 gfx::Transform transform = intermediateLayerPtr->transform(); |
| 3972 transform.setM41(1.0001); | 3991 transform.matrix().setDouble(0, 3, 1.0001); |
| 3973 intermediateLayerPtr->setTransform(transform); | 3992 intermediateLayerPtr->setTransform(transform); |
| 3974 { | 3993 { |
| 3975 LayerTreeHostImpl::FrameData frame; | 3994 LayerTreeHostImpl::FrameData frame; |
| 3976 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 3995 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 3977 | 3996 |
| 3978 // Must receive one render pass, as the other one should be culled. | 3997 // Must receive one render pass, as the other one should be culled. |
| 3979 ASSERT_EQ(1U, frame.renderPasses.size()); | 3998 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 3980 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); | 3999 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 3981 | 4000 |
| 3982 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); | 4001 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4122 // One of the passes should be culled as a result, since contents didn't
change | 4141 // One of the passes should be culled as a result, since contents didn't
change |
| 4123 // and we have cached texture. | 4142 // and we have cached texture. |
| 4124 ASSERT_EQ(1U, frame.renderPasses.size()); | 4143 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4125 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); | 4144 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4126 | 4145 |
| 4127 myHostImpl->drawLayers(frame); | 4146 myHostImpl->drawLayers(frame); |
| 4128 myHostImpl->didDrawAllLayers(frame); | 4147 myHostImpl->didDrawAllLayers(frame); |
| 4129 } | 4148 } |
| 4130 | 4149 |
| 4131 // Change location of the intermediate layer | 4150 // Change location of the intermediate layer |
| 4132 WebTransformationMatrix transform = intermediateLayerPtr->transform(); | 4151 gfx::Transform transform = intermediateLayerPtr->transform(); |
| 4133 transform.setM41(1.0001); | 4152 transform.matrix().setDouble(0, 3, 1.0001); |
| 4134 intermediateLayerPtr->setTransform(transform); | 4153 intermediateLayerPtr->setTransform(transform); |
| 4135 { | 4154 { |
| 4136 LayerTreeHostImpl::FrameData frame; | 4155 LayerTreeHostImpl::FrameData frame; |
| 4137 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); | 4156 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); |
| 4138 | 4157 |
| 4139 // Must receive one render pass, as the other one should be culled. | 4158 // Must receive one render pass, as the other one should be culled. |
| 4140 ASSERT_EQ(1U, frame.renderPasses.size()); | 4159 ASSERT_EQ(1U, frame.renderPasses.size()); |
| 4141 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); | 4160 EXPECT_EQ(1U, frame.renderPasses[0]->quad_list.size()); |
| 4142 | 4161 |
| 4143 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); | 4162 EXPECT_EQ(DrawQuad::RENDER_PASS, frame.renderPasses[0]->quad_list[0]->ma
terial); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4217 gfx::Size m_viewportSize; | 4236 gfx::Size m_viewportSize; |
| 4218 base::hash_set<RenderPass::Id> m_textures; | 4237 base::hash_set<RenderPass::Id> m_textures; |
| 4219 }; | 4238 }; |
| 4220 | 4239 |
| 4221 static void configureRenderPassTestData(const char* testScript, RenderPassRemova
lTestData& testData, TestRenderer* renderer) | 4240 static void configureRenderPassTestData(const char* testScript, RenderPassRemova
lTestData& testData, TestRenderer* renderer) |
| 4222 { | 4241 { |
| 4223 renderer->clearCachedTextures(); | 4242 renderer->clearCachedTextures(); |
| 4224 | 4243 |
| 4225 // One shared state for all quads - we don't need the correct details | 4244 // One shared state for all quads - we don't need the correct details |
| 4226 testData.sharedQuadState = SharedQuadState::Create(); | 4245 testData.sharedQuadState = SharedQuadState::Create(); |
| 4227 testData.sharedQuadState->SetAll(WebTransformationMatrix(), gfx::Rect(), gfx
::Rect(), gfx::Rect(), false, 1.0); | 4246 testData.sharedQuadState->SetAll(gfx::Transform(), gfx::Rect(), gfx::Rect(),
gfx::Rect(), false, 1.0); |
| 4228 | 4247 |
| 4229 const char* currentChar = testScript; | 4248 const char* currentChar = testScript; |
| 4230 | 4249 |
| 4231 // Pre-create root pass | 4250 // Pre-create root pass |
| 4232 RenderPass::Id rootRenderPassId = RenderPass::Id(testScript[0], testScript[1
]); | 4251 RenderPass::Id rootRenderPassId = RenderPass::Id(testScript[0], testScript[1
]); |
| 4233 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); | 4252 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 4234 pass->SetNew(rootRenderPassId, gfx::Rect(), gfx::Rect(), WebTransformationMa
trix()); | 4253 pass->SetNew(rootRenderPassId, gfx::Rect(), gfx::Rect(), gfx::Transform()); |
| 4235 testData.renderPassCache.add(rootRenderPassId, pass.Pass()); | 4254 testData.renderPassCache.add(rootRenderPassId, pass.Pass()); |
| 4236 while (*currentChar) { | 4255 while (*currentChar) { |
| 4237 int layerId = *currentChar; | 4256 int layerId = *currentChar; |
| 4238 currentChar++; | 4257 currentChar++; |
| 4239 ASSERT_TRUE(currentChar); | 4258 ASSERT_TRUE(currentChar); |
| 4240 int index = *currentChar; | 4259 int index = *currentChar; |
| 4241 currentChar++; | 4260 currentChar++; |
| 4242 | 4261 |
| 4243 RenderPass::Id renderPassId = RenderPass::Id(layerId, index); | 4262 RenderPass::Id renderPassId = RenderPass::Id(layerId, index); |
| 4244 | 4263 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4284 } | 4303 } |
| 4285 if (*currentChar == ']') | 4304 if (*currentChar == ']') |
| 4286 currentChar++; | 4305 currentChar++; |
| 4287 } | 4306 } |
| 4288 | 4307 |
| 4289 if (testData.renderPassCache.find(newRenderPassId) == testData.r
enderPassCache.end()) { | 4308 if (testData.renderPassCache.find(newRenderPassId) == testData.r
enderPassCache.end()) { |
| 4290 if (hasTexture) | 4309 if (hasTexture) |
| 4291 renderer->setHaveCachedResourcesForRenderPassId(newRende
rPassId); | 4310 renderer->setHaveCachedResourcesForRenderPassId(newRende
rPassId); |
| 4292 | 4311 |
| 4293 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); | 4312 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); |
| 4294 pass->SetNew(newRenderPassId, gfx::Rect(), gfx::Rect(), WebT
ransformationMatrix()); | 4313 pass->SetNew(newRenderPassId, gfx::Rect(), gfx::Rect(), gfx:
:Transform()); |
| 4295 testData.renderPassCache.add(newRenderPassId, pass.Pass()); | 4314 testData.renderPassCache.add(newRenderPassId, pass.Pass()); |
| 4296 } | 4315 } |
| 4297 | 4316 |
| 4298 gfx::Rect quadRect = gfx::Rect(0, 0, 1, 1); | 4317 gfx::Rect quadRect = gfx::Rect(0, 0, 1, 1); |
| 4299 gfx::Rect contentsChangedRect = contentsChanged ? quadRect : gfx
::Rect(); | 4318 gfx::Rect contentsChangedRect = contentsChanged ? quadRect : gfx
::Rect(); |
| 4300 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create
(); | 4319 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create
(); |
| 4301 quad->SetNew(testData.sharedQuadState.get(), quadRect, newRender
PassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0); | 4320 quad->SetNew(testData.sharedQuadState.get(), quadRect, newRender
PassId, isReplica, 1, contentsChangedRect, 1, 1, 0, 0); |
| 4302 renderPass->AppendQuad(quad.PassAs<DrawQuad>()); | 4321 renderPass->AppendQuad(quad.PassAs<DrawQuad>()); |
| 4303 } | 4322 } |
| 4304 } | 4323 } |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4531 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); | 4550 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); |
| 4532 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 4551 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
| 4533 initializeRendererAndDrawFrame(); | 4552 initializeRendererAndDrawFrame(); |
| 4534 | 4553 |
| 4535 // Set new page scale on impl thread by pinching. | 4554 // Set new page scale on impl thread by pinching. |
| 4536 m_hostImpl->pinchGestureBegin(); | 4555 m_hostImpl->pinchGestureBegin(); |
| 4537 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); | 4556 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
| 4538 m_hostImpl->pinchGestureEnd(); | 4557 m_hostImpl->pinchGestureEnd(); |
| 4539 m_hostImpl->updateRootScrollLayerImplTransform(); | 4558 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4540 | 4559 |
| 4541 WebTransformationMatrix expectedImplTransform; | 4560 gfx::Transform expectedImplTransform; |
| 4542 expectedImplTransform.scale(pageScale); | 4561 expectedImplTransform.Scale(pageScale, pageScale); |
| 4543 | 4562 |
| 4544 // Verify the pinch zoom took place. | 4563 // Verify the pinch zoom took place. |
| 4545 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4564 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4546 | 4565 |
| 4547 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, | 4566 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, |
| 4548 // so no point in continuing without it. | 4567 // so no point in continuing without it. |
| 4549 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4568 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
| 4550 return; | 4569 return; |
| 4551 | 4570 |
| 4552 m_didRequestCommit = false; | 4571 m_didRequestCommit = false; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4603 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); | 4622 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); |
| 4604 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 4623 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
| 4605 initializeRendererAndDrawFrame(); | 4624 initializeRendererAndDrawFrame(); |
| 4606 | 4625 |
| 4607 // Set new page scale on impl thread by pinching. | 4626 // Set new page scale on impl thread by pinching. |
| 4608 m_hostImpl->pinchGestureBegin(); | 4627 m_hostImpl->pinchGestureBegin(); |
| 4609 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); | 4628 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
| 4610 m_hostImpl->pinchGestureEnd(); | 4629 m_hostImpl->pinchGestureEnd(); |
| 4611 m_hostImpl->updateRootScrollLayerImplTransform(); | 4630 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4612 | 4631 |
| 4613 WebTransformationMatrix expectedImplTransform; | 4632 gfx::Transform expectedImplTransform; |
| 4614 expectedImplTransform.scale(pageScale); | 4633 expectedImplTransform.Scale(pageScale, pageScale); |
| 4615 | 4634 |
| 4616 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); | 4635 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); |
| 4617 | 4636 |
| 4618 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, | 4637 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, |
| 4619 // so no point in continuing without it. | 4638 // so no point in continuing without it. |
| 4620 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4639 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
| 4621 return; | 4640 return; |
| 4622 | 4641 |
| 4623 gfx::Vector2d scrollDelta(5, 0); | 4642 gfx::Vector2d scrollDelta(5, 0); |
| 4624 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 4643 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4625 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4644 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4626 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4645 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4627 m_hostImpl->scrollEnd(); | 4646 m_hostImpl->scrollEnd(); |
| 4628 m_hostImpl->updateRootScrollLayerImplTransform(); | 4647 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4629 | 4648 |
| 4630 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI
mpl->deviceScaleFactor()); | 4649 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI
mpl->deviceScaleFactor()); |
| 4631 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4650 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4632 | 4651 |
| 4633 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4652 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4634 // No change expected. | 4653 // No change expected. |
| 4635 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4654 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4636 // None of the scroll delta should have been used for document scroll. | 4655 // None of the scroll delta should have been used for document scroll. |
| 4637 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 4656 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 4638 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); | 4657 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); |
| 4639 | 4658 |
| 4640 // Test scroll in y-direction also. | 4659 // Test scroll in y-direction also. |
| 4641 scrollDelta = gfx::Vector2d(0, 5); | 4660 scrollDelta = gfx::Vector2d(0, 5); |
| 4642 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4661 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4643 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4662 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4644 m_hostImpl->scrollEnd(); | 4663 m_hostImpl->scrollEnd(); |
| 4645 m_hostImpl->updateRootScrollLayerImplTransform(); | 4664 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4646 | 4665 |
| 4647 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal
eFactor()); | 4666 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal
eFactor()); |
| 4648 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4667 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4649 | 4668 |
| 4650 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4669 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4651 // No change expected. | 4670 // No change expected. |
| 4652 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4671 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4653 // None of the scroll delta should have been used for document scroll. | 4672 // None of the scroll delta should have been used for document scroll. |
| 4654 scrollInfo = m_hostImpl->processScrollDeltas(); | 4673 scrollInfo = m_hostImpl->processScrollDeltas(); |
| 4655 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); | 4674 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); |
| 4656 } | 4675 } |
| 4657 | 4676 |
| 4658 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportWithDeviceScaleFactor1) | 4677 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportWithDeviceScaleFactor1) |
| (...skipping 24 matching lines...) Expand all Loading... |
| 4683 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); | 4702 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); |
| 4684 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 4703 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
| 4685 initializeRendererAndDrawFrame(); | 4704 initializeRendererAndDrawFrame(); |
| 4686 | 4705 |
| 4687 // Set new page scale on impl thread by pinching. | 4706 // Set new page scale on impl thread by pinching. |
| 4688 m_hostImpl->pinchGestureBegin(); | 4707 m_hostImpl->pinchGestureBegin(); |
| 4689 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); | 4708 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
| 4690 m_hostImpl->pinchGestureEnd(); | 4709 m_hostImpl->pinchGestureEnd(); |
| 4691 m_hostImpl->updateRootScrollLayerImplTransform(); | 4710 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4692 | 4711 |
| 4693 WebTransformationMatrix expectedImplTransform; | 4712 gfx::Transform expectedImplTransform; |
| 4694 expectedImplTransform.scale(pageScale); | 4713 expectedImplTransform.Scale(pageScale, pageScale); |
| 4695 | 4714 |
| 4696 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4715 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4697 | 4716 |
| 4698 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, | 4717 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, |
| 4699 // so no point in continuing without it. | 4718 // so no point in continuing without it. |
| 4700 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4719 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
| 4701 return; | 4720 return; |
| 4702 | 4721 |
| 4703 // Scroll document only: scrollDelta chosen to move document horizontally | 4722 // Scroll document only: scrollDelta chosen to move document horizontally |
| 4704 // to its max scroll offset. | 4723 // to its max scroll offset. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 4720 | 4739 |
| 4721 // Further scrolling should move the pinchZoomViewport only. | 4740 // Further scrolling should move the pinchZoomViewport only. |
| 4722 scrollDelta = gfx::Vector2d(2, 0); | 4741 scrollDelta = gfx::Vector2d(2, 0); |
| 4723 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4742 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4724 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4743 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4725 m_hostImpl->scrollEnd(); | 4744 m_hostImpl->scrollEnd(); |
| 4726 m_hostImpl->updateRootScrollLayerImplTransform(); | 4745 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4727 | 4746 |
| 4728 gfx::Vector2d expectedPanDelta(scrollDelta); | 4747 gfx::Vector2d expectedPanDelta(scrollDelta); |
| 4729 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); | 4748 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); |
| 4730 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4749 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4731 | 4750 |
| 4732 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); | 4751 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); |
| 4733 | 4752 |
| 4734 // The scroll delta on the main thread should not have been affected by this
. | 4753 // The scroll delta on the main thread should not have been affected by this
. |
| 4735 scrollInfo = m_hostImpl->processScrollDeltas(); | 4754 scrollInfo = m_hostImpl->processScrollDeltas(); |
| 4736 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4755 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 4737 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4756 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4738 | 4757 |
| 4739 // Perform same test sequence in y-direction also. | 4758 // Perform same test sequence in y-direction also. |
| 4740 // Document only scroll. | 4759 // Document only scroll. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4755 | 4774 |
| 4756 // pinchZoomViewport scroll only. | 4775 // pinchZoomViewport scroll only. |
| 4757 scrollDelta = gfx::Vector2d(0, 1); | 4776 scrollDelta = gfx::Vector2d(0, 1); |
| 4758 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4777 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4759 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4778 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4760 m_hostImpl->scrollEnd(); | 4779 m_hostImpl->scrollEnd(); |
| 4761 m_hostImpl->updateRootScrollLayerImplTransform(); | 4780 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4762 | 4781 |
| 4763 expectedPanDelta = scrollDelta; | 4782 expectedPanDelta = scrollDelta; |
| 4764 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); | 4783 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); |
| 4765 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4784 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4766 | 4785 |
| 4767 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4786 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4768 | 4787 |
| 4769 // The scroll delta on the main thread should not have been affected by this
. | 4788 // The scroll delta on the main thread should not have been affected by this
. |
| 4770 scrollInfo = m_hostImpl->processScrollDeltas(); | 4789 scrollInfo = m_hostImpl->processScrollDeltas(); |
| 4771 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4790 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 4772 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4791 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4773 } | 4792 } |
| 4774 | 4793 |
| 4775 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollWithDeviceScaleFactor
) | 4794 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollWithDeviceScaleFactor
) |
| (...skipping 26 matching lines...) Expand all Loading... |
| 4802 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); | 4821 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); |
| 4803 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); | 4822 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); |
| 4804 initializeRendererAndDrawFrame(); | 4823 initializeRendererAndDrawFrame(); |
| 4805 | 4824 |
| 4806 // Set new page scale on impl thread by pinching. | 4825 // Set new page scale on impl thread by pinching. |
| 4807 m_hostImpl->pinchGestureBegin(); | 4826 m_hostImpl->pinchGestureBegin(); |
| 4808 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); | 4827 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
| 4809 m_hostImpl->pinchGestureEnd(); | 4828 m_hostImpl->pinchGestureEnd(); |
| 4810 m_hostImpl->updateRootScrollLayerImplTransform(); | 4829 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4811 | 4830 |
| 4812 WebTransformationMatrix expectedImplTransform; | 4831 gfx::Transform expectedImplTransform; |
| 4813 expectedImplTransform.scale(pageScale); | 4832 expectedImplTransform.Scale(pageScale, pageScale); |
| 4814 | 4833 |
| 4815 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4834 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4816 | 4835 |
| 4817 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, | 4836 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, |
| 4818 // so no point in continuing without it. | 4837 // so no point in continuing without it. |
| 4819 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) | 4838 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) |
| 4820 return; | 4839 return; |
| 4821 | 4840 |
| 4822 // Scroll document and pann zoomViewport in one scroll-delta. | 4841 // Scroll document and pann zoomViewport in one scroll-delta. |
| 4823 gfx::Vector2d scrollDelta(5, 0); | 4842 gfx::Vector2d scrollDelta(5, 0); |
| 4824 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge
ts handled by document scroll. | 4843 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge
ts handled by document scroll. |
| 4825 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); | 4844 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4826 | 4845 |
| 4827 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4846 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4828 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4847 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4829 m_hostImpl->scrollEnd(); | 4848 m_hostImpl->scrollEnd(); |
| 4830 m_hostImpl->updateRootScrollLayerImplTransform(); | 4849 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4831 | 4850 |
| 4832 // The scroll delta is not scaled because the main thread did not scale. | 4851 // The scroll delta is not scaled because the main thread did not scale. |
| 4833 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; | 4852 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas()
; |
| 4834 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4853 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 4835 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4854 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4836 | 4855 |
| 4837 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom
Viewport pan. | 4856 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom
Viewport pan. |
| 4838 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); | 4857 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_
hostImpl->deviceScaleFactor()); |
| 4839 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4858 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4840 | 4859 |
| 4841 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); | 4860 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); |
| 4842 | 4861 |
| 4843 // Perform same test sequence in y-direction also. | 4862 // Perform same test sequence in y-direction also. |
| 4844 scrollDelta = gfx::Vector2d(0, 5); | 4863 scrollDelta = gfx::Vector2d(0, 5); |
| 4845 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b
y document scroll. | 4864 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b
y document scroll. |
| 4846 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); | 4865 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po
int(0, 0), InputHandlerClient::Gesture)); |
| 4847 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); | 4866 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
| 4848 m_hostImpl->scrollEnd(); | 4867 m_hostImpl->scrollEnd(); |
| 4849 m_hostImpl->updateRootScrollLayerImplTransform(); | 4868 m_hostImpl->updateRootScrollLayerImplTransform(); |
| 4850 | 4869 |
| 4851 // The scroll delta is not scaled because the main thread did not scale. | 4870 // The scroll delta is not scaled because the main thread did not scale. |
| 4852 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl
ed by zoomViewport pan. | 4871 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl
ed by zoomViewport pan. |
| 4853 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); | 4872 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr
ollDelta); |
| 4854 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); | 4873 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); |
| 4855 | 4874 |
| 4856 expectedPanDelta = gfx::Vector2d(0, 1); | 4875 expectedPanDelta = gfx::Vector2d(0, 1); |
| 4857 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); | 4876 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic
eScaleFactor()); |
| 4858 expectedImplTransform.translate(-expectedTranslation.x(), -expectedTranslati
on.y()); | 4877 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati
on.y()); |
| 4859 | 4878 |
| 4860 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); | 4879 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); |
| 4861 } | 4880 } |
| 4862 | 4881 |
| 4863 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollBoundaryWithDeviceSca
leFactor) | 4882 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollBoundaryWithDeviceSca
leFactor) |
| 4864 { | 4883 { |
| 4865 pinchZoomPanViewportAndScrollBoundaryTest(1); | 4884 pinchZoomPanViewportAndScrollBoundaryTest(1); |
| 4866 } | 4885 } |
| 4867 | 4886 |
| 4868 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollBoundaryWithDeviceSca
leFactor2) | 4887 TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollBoundaryWithDeviceSca
leFactor2) |
| 4869 { | 4888 { |
| 4870 pinchZoomPanViewportAndScrollBoundaryTest(2); | 4889 pinchZoomPanViewportAndScrollBoundaryTest(2); |
| 4871 } | 4890 } |
| 4872 | 4891 |
| 4873 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, | 4892 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, |
| 4874 LayerTreeHostImplTest, | 4893 LayerTreeHostImplTest, |
| 4875 ::testing::Values(false, true)); | 4894 ::testing::Values(false, true)); |
| 4876 | 4895 |
| 4877 } // namespace | 4896 } // namespace |
| 4878 } // namespace cc | 4897 } // namespace cc |
| OLD | NEW |