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

Side by Side Diff: cc/layer_tree_host_impl_unittest.cc

Issue 11529006: [cc] Fold more update calls into updateDrawProperties (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase yet again ughhh Created 8 years 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.cc ('k') | cc/layer_tree_host_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 "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 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 } 199 }
200 200
201 void pinchZoomPanViewportForcesCommitRedraw(const float deviceScaleFactor); 201 void pinchZoomPanViewportForcesCommitRedraw(const float deviceScaleFactor);
202 void pinchZoomPanViewportTest(const float deviceScaleFactor); 202 void pinchZoomPanViewportTest(const float deviceScaleFactor);
203 void pinchZoomPanViewportAndScrollTest(const float deviceScaleFactor); 203 void pinchZoomPanViewportAndScrollTest(const float deviceScaleFactor);
204 void pinchZoomPanViewportAndScrollBoundaryTest(const float deviceScaleFactor ); 204 void pinchZoomPanViewportAndScrollBoundaryTest(const float deviceScaleFactor );
205 205
206 protected: 206 protected:
207 virtual scoped_ptr<OutputSurface> createOutputSurface() { return createFakeO utputSurface(); } 207 virtual scoped_ptr<OutputSurface> createOutputSurface() { return createFakeO utputSurface(); }
208 208
209 void drawOneFrame() {
210 LayerTreeHostImpl::FrameData frameData;
211 m_hostImpl->prepareToDraw(frameData);
212 m_hostImpl->didDrawAllLayers(frameData);
213 }
214
209 FakeProxy m_proxy; 215 FakeProxy m_proxy;
210 DebugScopedSetImplThread m_alwaysImplThread; 216 DebugScopedSetImplThread m_alwaysImplThread;
211 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; 217 DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked;
212 218
213 scoped_ptr<LayerTreeHostImpl> m_hostImpl; 219 scoped_ptr<LayerTreeHostImpl> m_hostImpl;
214 bool m_onCanDrawStateChangedCalled; 220 bool m_onCanDrawStateChangedCalled;
215 bool m_didRequestCommit; 221 bool m_didRequestCommit;
216 bool m_didRequestRedraw; 222 bool m_didRequestRedraw;
217 bool m_reduceMemoryResult; 223 bool m_reduceMemoryResult;
218 }; 224 };
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 gfx::Vector2d expectedScrollDelta(scrollDelta); 1289 gfx::Vector2d expectedScrollDelta(scrollDelta);
1284 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 1290 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
1285 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted); 1291 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted);
1286 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 1292 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
1287 m_hostImpl->scrollEnd(); 1293 m_hostImpl->scrollEnd();
1288 1294
1289 // Set new page scale on impl thread by pinching. 1295 // Set new page scale on impl thread by pinching.
1290 m_hostImpl->pinchGestureBegin(); 1296 m_hostImpl->pinchGestureBegin();
1291 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 1297 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
1292 m_hostImpl->pinchGestureEnd(); 1298 m_hostImpl->pinchGestureEnd();
1293 m_hostImpl->updateRootScrollLayerImplTransform(); 1299 drawOneFrame();
1294 1300
1295 // The scroll delta is not scaled because the main thread did not scale. 1301 // The scroll delta is not scaled because the main thread did not scale.
1296 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 1302 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
1297 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 1303 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
1298 1304
1299 // The scroll range should also have been updated. 1305 // The scroll range should also have been updated.
1300 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); 1306 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll);
1301 1307
1302 // The page scale delta should match the new scale on the impl side. 1308 // The page scale delta should match the new scale on the impl side.
1303 gfx::Transform expectedScale; 1309 gfx::Transform expectedScale;
(...skipping 17 matching lines...) Expand all
1321 LayerImpl* child = root->children()[0]; 1327 LayerImpl* child = root->children()[0];
1322 1328
1323 scoped_ptr<LayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize ); 1329 scoped_ptr<LayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize );
1324 child->addChild(scrollableChild.Pass()); 1330 child->addChild(scrollableChild.Pass());
1325 LayerImpl* grandChild = child->children()[0]; 1331 LayerImpl* grandChild = child->children()[0];
1326 1332
1327 // Set new page scale on impl thread by pinching. 1333 // Set new page scale on impl thread by pinching.
1328 m_hostImpl->pinchGestureBegin(); 1334 m_hostImpl->pinchGestureBegin();
1329 m_hostImpl->pinchGestureUpdate(newPageScale, gfx::Point()); 1335 m_hostImpl->pinchGestureUpdate(newPageScale, gfx::Point());
1330 m_hostImpl->pinchGestureEnd(); 1336 m_hostImpl->pinchGestureEnd();
1331 m_hostImpl->updateRootScrollLayerImplTransform(); 1337 drawOneFrame();
1332 1338
1333 // The page scale delta should only be applied to the scrollable root layer. 1339 // The page scale delta should only be applied to the scrollable root layer.
1334 EXPECT_EQ(root->implTransform(), newPageScaleMatrix); 1340 EXPECT_EQ(root->implTransform(), newPageScaleMatrix);
1335 EXPECT_EQ(child->implTransform(), defaultPageScaleMatrix); 1341 EXPECT_EQ(child->implTransform(), defaultPageScaleMatrix);
1336 EXPECT_EQ(grandChild->implTransform(), defaultPageScaleMatrix); 1342 EXPECT_EQ(grandChild->implTransform(), defaultPageScaleMatrix);
1337 1343
1338 // Make sure all the layers are drawn with the page scale delta applied, i.e ., the page scale 1344 // Make sure all the layers are drawn with the page scale delta applied, i.e ., the page scale
1339 // delta on the root layer is applied hierarchically. 1345 // delta on the root layer is applied hierarchically.
1340 LayerTreeHostImpl::FrameData frame; 1346 LayerTreeHostImpl::FrameData frame;
1341 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 1347 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
(...skipping 27 matching lines...) Expand all
1369 gfx::Vector2d scrollDelta(0, 10); 1375 gfx::Vector2d scrollDelta(0, 10);
1370 gfx::Vector2d expectedScrollDelta(scrollDelta); 1376 gfx::Vector2d expectedScrollDelta(scrollDelta);
1371 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset()); 1377 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset());
1372 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted); 1378 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted);
1373 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 1379 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
1374 m_hostImpl->scrollEnd(); 1380 m_hostImpl->scrollEnd();
1375 1381
1376 float pageScale = 2; 1382 float pageScale = 2;
1377 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); 1383 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale);
1378 1384
1379 m_hostImpl->updateRootScrollLayerImplTransform(); 1385 drawOneFrame();
1380 1386
1381 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { 1387 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) {
1382 // The scale should apply to the scroll delta. 1388 // The scale should apply to the scroll delta.
1383 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale)); 1389 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale));
1384 } 1390 }
1385 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 1391 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
1386 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); 1392 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta);
1387 1393
1388 // The scroll range should not have changed. 1394 // The scroll range should not have changed.
1389 EXPECT_EQ(child->maxScrollOffset(), expectedMaxScroll); 1395 EXPECT_EQ(child->maxScrollOffset(), expectedMaxScroll);
(...skipping 3152 matching lines...) Expand 10 before | Expand all | Expand 10 after
4542 root->setMaxScrollOffset(gfx::Vector2d()); 4548 root->setMaxScrollOffset(gfx::Vector2d());
4543 m_hostImpl->setRootLayer(root.Pass()); 4549 m_hostImpl->setRootLayer(root.Pass());
4544 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4550 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4545 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4551 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4546 initializeRendererAndDrawFrame(); 4552 initializeRendererAndDrawFrame();
4547 4553
4548 // Set new page scale on impl thread by pinching. 4554 // Set new page scale on impl thread by pinching.
4549 m_hostImpl->pinchGestureBegin(); 4555 m_hostImpl->pinchGestureBegin();
4550 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4556 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
4551 m_hostImpl->pinchGestureEnd(); 4557 m_hostImpl->pinchGestureEnd();
4552 m_hostImpl->updateRootScrollLayerImplTransform(); 4558 drawOneFrame();
4553 4559
4554 gfx::Transform expectedImplTransform; 4560 gfx::Transform expectedImplTransform;
4555 expectedImplTransform.Scale(pageScale, pageScale); 4561 expectedImplTransform.Scale(pageScale, pageScale);
4556 4562
4557 // Verify the pinch zoom took place. 4563 // Verify the pinch zoom took place.
4558 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4564 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4559 4565
4560 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, 4566 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled,
4561 // so no point in continuing without it. 4567 // so no point in continuing without it.
4562 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) 4568 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4614 root->setMaxScrollOffset(gfx::Vector2d()); 4620 root->setMaxScrollOffset(gfx::Vector2d());
4615 m_hostImpl->setRootLayer(root.Pass()); 4621 m_hostImpl->setRootLayer(root.Pass());
4616 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4622 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4617 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4623 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4618 initializeRendererAndDrawFrame(); 4624 initializeRendererAndDrawFrame();
4619 4625
4620 // Set new page scale on impl thread by pinching. 4626 // Set new page scale on impl thread by pinching.
4621 m_hostImpl->pinchGestureBegin(); 4627 m_hostImpl->pinchGestureBegin();
4622 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4628 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
4623 m_hostImpl->pinchGestureEnd(); 4629 m_hostImpl->pinchGestureEnd();
4624 m_hostImpl->updateRootScrollLayerImplTransform(); 4630 drawOneFrame();
4625 4631
4626 gfx::Transform expectedImplTransform; 4632 gfx::Transform expectedImplTransform;
4627 expectedImplTransform.Scale(pageScale, pageScale); 4633 expectedImplTransform.Scale(pageScale, pageScale);
4628 4634
4629 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); 4635 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform);
4630 4636
4631 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, 4637 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled,
4632 // so no point in continuing without it. 4638 // so no point in continuing without it.
4633 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) 4639 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
4634 return; 4640 return;
4635 4641
4636 gfx::Vector2d scrollDelta(5, 0); 4642 gfx::Vector2d scrollDelta(5, 0);
4643 // TODO(wjmaclean): Fix the math here so that the expectedTranslation is
4644 // scaled instead of the scroll input.
4645 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting()));
4637 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 4646 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
4638 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4647 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4639 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4648 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4640 m_hostImpl->scrollEnd(); 4649 m_hostImpl->scrollEnd();
4641 m_hostImpl->updateRootScrollLayerImplTransform(); 4650 drawOneFrame();
4642 4651
4643 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI mpl->deviceScaleFactor()); 4652 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostI mpl->deviceScaleFactor());
4644 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4653 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4645 4654
4646 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4655 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4647 // No change expected. 4656 // No change expected.
4648 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4657 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4649 // None of the scroll delta should have been used for document scroll. 4658 // None of the scroll delta should have been used for document scroll.
4650 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 4659 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
4651 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); 4660 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id());
4652 4661
4653 // Test scroll in y-direction also. 4662 // Test scroll in y-direction also.
4654 scrollDelta = gfx::Vector2d(0, 5); 4663 scrollDelta = gfx::Vector2d(0, 5);
4664 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel ta, m_hostImpl->totalPageScaleFactorForTesting()));
4655 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4665 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4656 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4666 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4657 m_hostImpl->scrollEnd(); 4667 m_hostImpl->scrollEnd();
4658 m_hostImpl->updateRootScrollLayerImplTransform(); 4668 drawOneFrame();
4659 4669
4660 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal eFactor()); 4670 expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScal eFactor());
4661 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4671 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4662 4672
4663 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4673 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4664 // No change expected. 4674 // No change expected.
4665 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4675 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4666 // None of the scroll delta should have been used for document scroll. 4676 // None of the scroll delta should have been used for document scroll.
4667 scrollInfo = m_hostImpl->processScrollDeltas(); 4677 scrollInfo = m_hostImpl->processScrollDeltas();
4668 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id()); 4678 expectNone(*scrollInfo.get(), m_hostImpl->rootLayer()->id());
(...skipping 25 matching lines...) Expand all
4694 root->setMaxScrollOffset(gfx::Vector2d(3, 4)); 4704 root->setMaxScrollOffset(gfx::Vector2d(3, 4));
4695 m_hostImpl->setRootLayer(root.Pass()); 4705 m_hostImpl->setRootLayer(root.Pass());
4696 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4706 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4697 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4707 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4698 initializeRendererAndDrawFrame(); 4708 initializeRendererAndDrawFrame();
4699 4709
4700 // Set new page scale on impl thread by pinching. 4710 // Set new page scale on impl thread by pinching.
4701 m_hostImpl->pinchGestureBegin(); 4711 m_hostImpl->pinchGestureBegin();
4702 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4712 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
4703 m_hostImpl->pinchGestureEnd(); 4713 m_hostImpl->pinchGestureEnd();
4704 m_hostImpl->updateRootScrollLayerImplTransform(); 4714 drawOneFrame();
4705 4715
4706 gfx::Transform expectedImplTransform; 4716 gfx::Transform expectedImplTransform;
4707 expectedImplTransform.Scale(pageScale, pageScale); 4717 expectedImplTransform.Scale(pageScale, pageScale);
4708 4718
4709 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4719 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4710 4720
4711 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, 4721 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled,
4712 // so no point in continuing without it. 4722 // so no point in continuing without it.
4713 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) 4723 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
4714 return; 4724 return;
4715 4725
4716 // Scroll document only: scrollDelta chosen to move document horizontally 4726 // Scroll document only: scrollDelta chosen to move document horizontally
4717 // to its max scroll offset. 4727 // to its max scroll offset.
4718 gfx::Vector2d scrollDelta(3, 0); 4728 gfx::Vector2d scrollDelta(3, 0);
4729 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting()));
4719 gfx::Vector2d expectedScrollDelta(scrollDelta); 4730 gfx::Vector2d expectedScrollDelta(scrollDelta);
4720 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 4731 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
4721 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4732 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4722 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4733 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4723 m_hostImpl->scrollEnd(); 4734 m_hostImpl->scrollEnd();
4724 m_hostImpl->updateRootScrollLayerImplTransform(); 4735 drawOneFrame();
4725 4736
4726 // The scroll delta is not scaled because the main thread did not scale. 4737 // The scroll delta is not scaled because the main thread did not scale.
4727 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 4738 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
4728 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4739 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
4729 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4740 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4730 4741
4731 // Verify we did not change the implTransform this time. 4742 // Verify we did not change the implTransform this time.
4732 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4743 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4733 4744
4734 // Further scrolling should move the pinchZoomViewport only. 4745 // Further scrolling should move the pinchZoomViewport only.
4735 scrollDelta = gfx::Vector2d(2, 0); 4746 scrollDelta = gfx::Vector2d(2, 0);
4747 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel ta, m_hostImpl->totalPageScaleFactorForTesting()));
4736 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4748 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4737 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4749 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4738 m_hostImpl->scrollEnd(); 4750 m_hostImpl->scrollEnd();
4739 m_hostImpl->updateRootScrollLayerImplTransform(); 4751 drawOneFrame();
4740 4752
4741 gfx::Vector2d expectedPanDelta(scrollDelta); 4753 gfx::Vector2d expectedPanDelta(scrollDelta);
4742 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_ hostImpl->deviceScaleFactor()); 4754 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_ hostImpl->deviceScaleFactor());
4743 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4755 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4744 4756
4745 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); 4757 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform);
4746 4758
4747 // The scroll delta on the main thread should not have been affected by this . 4759 // The scroll delta on the main thread should not have been affected by this .
4748 scrollInfo = m_hostImpl->processScrollDeltas(); 4760 scrollInfo = m_hostImpl->processScrollDeltas();
4749 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4761 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
4750 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4762 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4751 4763
4752 // Perform same test sequence in y-direction also. 4764 // Perform same test sequence in y-direction also.
4753 // Document only scroll. 4765 // Document only scroll.
4754 scrollDelta = gfx::Vector2d(0, 4); 4766 scrollDelta = gfx::Vector2d(0, 4);
4767 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel ta, m_hostImpl->totalPageScaleFactorForTesting()));
4755 expectedScrollDelta += scrollDelta; 4768 expectedScrollDelta += scrollDelta;
4756 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4769 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4757 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4770 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4758 m_hostImpl->scrollEnd(); 4771 m_hostImpl->scrollEnd();
4759 m_hostImpl->updateRootScrollLayerImplTransform(); 4772 drawOneFrame();
4760 4773
4761 // The scroll delta is not scaled because the main thread did not scale. 4774 // The scroll delta is not scaled because the main thread did not scale.
4762 scrollInfo = m_hostImpl->processScrollDeltas(); 4775 scrollInfo = m_hostImpl->processScrollDeltas();
4763 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4776 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
4764 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4777 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4765 4778
4766 // Verify we did not change the implTransform this time. 4779 // Verify we did not change the implTransform this time.
4767 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4780 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4768 4781
4769 // pinchZoomViewport scroll only. 4782 // pinchZoomViewport scroll only.
4770 scrollDelta = gfx::Vector2d(0, 1); 4783 scrollDelta = gfx::Vector2d(0, 1);
4784 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel ta, m_hostImpl->totalPageScaleFactorForTesting()));
4771 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4785 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4772 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4786 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4773 m_hostImpl->scrollEnd(); 4787 m_hostImpl->scrollEnd();
4774 m_hostImpl->updateRootScrollLayerImplTransform(); 4788 drawOneFrame();
4775 4789
4776 expectedPanDelta = scrollDelta; 4790 expectedPanDelta = scrollDelta;
4777 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic eScaleFactor()); 4791 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic eScaleFactor());
4778 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4792 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4779 4793
4780 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4794 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4781 4795
4782 // The scroll delta on the main thread should not have been affected by this . 4796 // The scroll delta on the main thread should not have been affected by this .
4783 scrollInfo = m_hostImpl->processScrollDeltas(); 4797 scrollInfo = m_hostImpl->processScrollDeltas();
4784 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4798 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
(...skipping 28 matching lines...) Expand all
4813 root->setMaxScrollOffset(gfx::Vector2d(3, 4)); 4827 root->setMaxScrollOffset(gfx::Vector2d(3, 4));
4814 m_hostImpl->setRootLayer(root.Pass()); 4828 m_hostImpl->setRootLayer(root.Pass());
4815 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4829 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4816 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4830 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4817 initializeRendererAndDrawFrame(); 4831 initializeRendererAndDrawFrame();
4818 4832
4819 // Set new page scale on impl thread by pinching. 4833 // Set new page scale on impl thread by pinching.
4820 m_hostImpl->pinchGestureBegin(); 4834 m_hostImpl->pinchGestureBegin();
4821 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4835 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
4822 m_hostImpl->pinchGestureEnd(); 4836 m_hostImpl->pinchGestureEnd();
4823 m_hostImpl->updateRootScrollLayerImplTransform(); 4837 drawOneFrame();
4824 4838
4825 gfx::Transform expectedImplTransform; 4839 gfx::Transform expectedImplTransform;
4826 expectedImplTransform.Scale(pageScale, pageScale); 4840 expectedImplTransform.Scale(pageScale, pageScale);
4827 4841
4828 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform()); 4842 EXPECT_EQ(expectedImplTransform, m_hostImpl->rootLayer()->implTransform());
4829 4843
4830 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled, 4844 // The implTransform ignores the scroll if !pageScalePinchZoomEnabled,
4831 // so no point in continuing without it. 4845 // so no point in continuing without it.
4832 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) 4846 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
4833 return; 4847 return;
4834 4848
4835 // Scroll document and pann zoomViewport in one scroll-delta. 4849 // Scroll document and pann zoomViewport in one scroll-delta.
4836 gfx::Vector2d scrollDelta(5, 0); 4850 gfx::Vector2d scrollDelta(5, 0);
4851 gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVect or2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting()));
4837 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge ts handled by document scroll. 4852 gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component ge ts handled by document scroll.
4838 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 4853 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
4839 4854
4840 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4855 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4841 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4856 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4842 m_hostImpl->scrollEnd(); 4857 m_hostImpl->scrollEnd();
4843 m_hostImpl->updateRootScrollLayerImplTransform(); 4858 drawOneFrame();
4844 4859
4845 // The scroll delta is not scaled because the main thread did not scale. 4860 // The scroll delta is not scaled because the main thread did not scale.
4846 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 4861 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
4847 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4862 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
4848 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4863 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4849 4864
4850 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom Viewport pan. 4865 gfx::Vector2d expectedPanDelta(2, 0); // This component gets handled by zoom Viewport pan.
4851 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_ hostImpl->deviceScaleFactor()); 4866 gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_ hostImpl->deviceScaleFactor());
4852 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4867 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4853 4868
4854 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform); 4869 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), expectedImplTransform);
4855 4870
4856 // Perform same test sequence in y-direction also. 4871 // Perform same test sequence in y-direction also.
4857 scrollDelta = gfx::Vector2d(0, 5); 4872 scrollDelta = gfx::Vector2d(0, 5);
4873 scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDel ta, m_hostImpl->totalPageScaleFactorForTesting()));
4858 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b y document scroll. 4874 expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled b y document scroll.
4859 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture)); 4875 EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Po int(0, 0), InputHandlerClient::Gesture));
4860 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 4876 m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport);
4861 m_hostImpl->scrollEnd(); 4877 m_hostImpl->scrollEnd();
4862 m_hostImpl->updateRootScrollLayerImplTransform(); 4878 drawOneFrame();
4863 4879
4864 // The scroll delta is not scaled because the main thread did not scale. 4880 // The scroll delta is not scaled because the main thread did not scale.
4865 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl ed by zoomViewport pan. 4881 scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handl ed by zoomViewport pan.
4866 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 4882 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
4867 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset()); 4883 EXPECT_EQ(expectedMaxScroll, m_hostImpl->rootLayer()->maxScrollOffset());
4868 4884
4869 expectedPanDelta = gfx::Vector2d(0, 1); 4885 expectedPanDelta = gfx::Vector2d(0, 1);
4870 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic eScaleFactor()); 4886 expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->devic eScaleFactor());
4871 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y()); 4887 expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslati on.y());
4872 4888
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
4921 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); 4937 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize());
4922 drawFrameAndTestDamage(noDamage); 4938 drawFrameAndTestDamage(noDamage);
4923 } 4939 }
4924 4940
4925 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, 4941 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests,
4926 LayerTreeHostImplTest, 4942 LayerTreeHostImplTest,
4927 ::testing::Values(false, true)); 4943 ::testing::Values(false, true));
4928 4944
4929 } // namespace 4945 } // namespace
4930 } // namespace cc 4946 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_host_impl.cc ('k') | cc/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698