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

Unified Diff: Source/core/frame/RootFrameViewportTest.cpp

Issue 1209293004: WIP - improve ScrollableArea handling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 5 years, 6 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/frame/RootFrameViewport.cpp ('k') | Source/core/input/EventHandler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/frame/RootFrameViewportTest.cpp
diff --git a/Source/core/frame/RootFrameViewportTest.cpp b/Source/core/frame/RootFrameViewportTest.cpp
index 6b33435751742048d37b518a728b5c0e2e1454ea..259ecd93f42f72d7790818f19c6ad0b7ddc87bf0 100644
--- a/Source/core/frame/RootFrameViewportTest.cpp
+++ b/Source/core/frame/RootFrameViewportTest.cpp
@@ -26,14 +26,12 @@
namespace blink {
-class ScrollableAreaStub : public ScrollableArea {
+class ScrollableAreaStub : public NoBaseWillBeGarbageCollectedFinalized<ScrollableAreaStub>, public ScrollableArea {
+ WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ScrollableAreaStub);
public:
- ScrollableAreaStub(const IntSize& viewportSize, const IntSize& contentsSize)
- : m_userInputScrollableX(true)
- , m_userInputScrollableY(true)
- , m_viewportSize(viewportSize)
- , m_contentsSize(contentsSize)
+ static PassOwnPtrWillBeRawPtr<ScrollableAreaStub> create(const IntSize& viewportSize, const IntSize& contentsSize)
{
+ return adoptPtrWillBeNoop(new ScrollableAreaStub(viewportSize, contentsSize));
}
void setViewportSize(const IntSize& viewportSize)
@@ -68,7 +66,20 @@ public:
m_contentsSize = contentsSize;
}
+ DEFINE_INLINE_VIRTUAL_TRACE()
+ {
+ ScrollableArea::trace(visitor);
+ }
+
protected:
+ ScrollableAreaStub(const IntSize& viewportSize, const IntSize& contentsSize)
+ : m_userInputScrollableX(true)
+ , m_userInputScrollableY(true)
+ , m_viewportSize(viewportSize)
+ , m_contentsSize(contentsSize)
+ {
+ }
+
void setScrollOffset(const IntPoint& offset, ScrollType) override { m_scrollPosition = offset; }
void setScrollOffset(const DoublePoint& offset, ScrollType) override { m_scrollPosition = offset; }
bool shouldUseIntegerScrollOffset() const override { return true; }
@@ -106,9 +117,9 @@ protected:
class RootFrameViewStub : public ScrollableAreaStub {
public:
- RootFrameViewStub(const IntSize& viewportSize, const IntSize& contentsSize)
- : ScrollableAreaStub(viewportSize, contentsSize)
+ static PassOwnPtrWillBeRawPtr<RootFrameViewStub> create(const IntSize& viewportSize, const IntSize& contentsSize)
{
+ return adoptPtrWillBeNoop(new RootFrameViewStub(viewportSize, contentsSize));
}
DoublePoint maximumScrollPositionDouble() const override
@@ -117,16 +128,20 @@ public:
}
private:
+ RootFrameViewStub(const IntSize& viewportSize, const IntSize& contentsSize)
+ : ScrollableAreaStub(viewportSize, contentsSize)
+ {
+ }
+
int visibleWidth() const override { return m_viewportSize.width(); }
int visibleHeight() const override { return m_viewportSize.height(); }
};
class VisualViewportStub : public ScrollableAreaStub {
public:
- VisualViewportStub(const IntSize& viewportSize, const IntSize& contentsSize)
- : ScrollableAreaStub(viewportSize, contentsSize)
- , m_scale(1)
+ static PassOwnPtrWillBeRawPtr<VisualViewportStub> create(const IntSize& viewportSize, const IntSize& contentsSize)
{
+ return adoptPtrWillBeNoop(new VisualViewportStub(viewportSize, contentsSize));
}
DoublePoint maximumScrollPositionDouble() const override
@@ -141,6 +156,12 @@ public:
void setScale(float scale) { m_scale = scale; }
private:
+ VisualViewportStub(const IntSize& viewportSize, const IntSize& contentsSize)
+ : ScrollableAreaStub(viewportSize, contentsSize)
+ , m_scale(1)
+ {
+ }
+
int visibleWidth() const override { return m_viewportSize.width() / m_scale; }
int visibleHeight() const override { return m_viewportSize.height() / m_scale; }
DoubleRect visibleContentRectDouble(IncludeScrollbarsInRect) const override
@@ -172,18 +193,17 @@ protected:
TEST_F(RootFrameViewportTest, UserInputScrollable)
{
IntSize viewportSize(100, 150);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(200, 300));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
- visualViewport.setScale(2);
+ visualViewport->setScale(2);
// Disable just the layout viewport's horizontal scrolling, the
// RootFrameViewport should remain scrollable overall.
- layoutViewport.setUserInputScrollable(false, true);
- visualViewport.setUserInputScrollable(true, true);
+ layoutViewport->setUserInputScrollable(false, true);
+ visualViewport->setUserInputScrollable(true, true);
EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
@@ -191,30 +211,30 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
// Layout viewport shouldn't scroll since it's not horizontally scrollable,
// but visual viewport should.
rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(50, 0), rootFrameViewport->scrollPositionDouble());
// Disable just the visual viewport's horizontal scrolling, only the layout
// viewport should scroll.
rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
- layoutViewport.setUserInputScrollable(true, true);
- visualViewport.setUserInputScrollable(false, true);
+ layoutViewport->setUserInputScrollable(true, true);
+ visualViewport->setUserInputScrollable(false, true);
rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(100, 0), rootFrameViewport->scrollPositionDouble());
// Disable both viewports' horizontal scrolling, all horizontal scrolling
// should now be blocked.
rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
- layoutViewport.setUserInputScrollable(false, true);
- visualViewport.setUserInputScrollable(false, true);
+ layoutViewport->setUserInputScrollable(false, true);
+ visualViewport->setUserInputScrollable(false, true);
rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble());
EXPECT_FALSE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
@@ -222,8 +242,8 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
// Vertical scrolling should be unaffected.
rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(0, 225), rootFrameViewport->scrollPositionDouble());
// Try the same checks as above but for the vertical direction.
@@ -233,8 +253,8 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
// Disable just the layout viewport's vertical scrolling, the
// RootFrameViewport should remain scrollable overall.
- layoutViewport.setUserInputScrollable(true, false);
- visualViewport.setUserInputScrollable(true, true);
+ layoutViewport->setUserInputScrollable(true, false);
+ visualViewport->setUserInputScrollable(true, true);
EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
@@ -242,30 +262,30 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
// Layout viewport shouldn't scroll since it's not vertically scrollable,
// but visual viewport should.
rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble());
// Disable just the visual viewport's vertical scrolling, only the layout
// viewport should scroll.
rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
- layoutViewport.setUserInputScrollable(true, true);
- visualViewport.setUserInputScrollable(true, false);
+ layoutViewport->setUserInputScrollable(true, true);
+ visualViewport->setUserInputScrollable(true, false);
rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble());
// Disable both viewports' horizontal scrolling, all vertical scrolling
// should now be blocked.
rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
- layoutViewport.setUserInputScrollable(true, false);
- visualViewport.setUserInputScrollable(true, false);
+ layoutViewport->setUserInputScrollable(true, false);
+ visualViewport->setUserInputScrollable(true, false);
rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble());
EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
@@ -273,8 +293,8 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
// Horizontal scrolling should be unaffected.
rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
- EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport->scrollPositionDouble());
EXPECT_POINT_EQ(DoublePoint(150, 0), rootFrameViewport->scrollPositionDouble());
}
@@ -284,33 +304,32 @@ TEST_F(RootFrameViewportTest, UserInputScrollable)
TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll)
{
IntSize viewportSize(100, 150);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(200, 300));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
- visualViewport.setScale(2);
+ visualViewport->setScale(2);
- visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
+ visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble());
// If the scroll animator doesn't update, it will still think it's at (0, 0) and so it
// may early exit.
rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll);
EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
// Try again for scroll()
- visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
+ visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble());
rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 50);
EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
// Try again for handleWheel.
- visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
+ visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble());
PlatformWheelEvent wheelEvent(
@@ -321,15 +340,15 @@ TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll)
false, false, false, false);
rootFrameViewport->handleWheel(wheelEvent);
EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
// Make sure the layout viewport is also accounted for.
- layoutViewport.setScrollPosition(DoublePoint(100, 150), ProgrammaticScroll);
+ layoutViewport->setScrollPosition(DoublePoint(100, 150), ProgrammaticScroll);
EXPECT_POINT_EQ(DoublePoint(100, 150), rootFrameViewport->scrollPositionDouble());
rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 100);
EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble());
}
// Test that the scrollIntoView correctly scrolls the main frame
@@ -337,111 +356,109 @@ TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll)
TEST_F(RootFrameViewportTest, ScrollIntoView)
{
IntSize viewportSize(100, 150);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(200, 300));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
// Test that the visual viewport is scrolled if the viewport has been
// resized (as is the case when the ChromeOS keyboard comes up) but not
// scaled.
- visualViewport.setViewportSize(IntSize(100, 100));
+ visualViewport->setViewportSize(IntSize(100, 100));
rootFrameViewport->scrollIntoView(
LayoutRect(100, 250, 50, 50),
ScrollAlignment::alignToEdgeIfNeeded,
ScrollAlignment::alignToEdgeIfNeeded);
- EXPECT_POINT_EQ(DoublePoint(50, 150), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 150), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport->scrollPositionDouble());
rootFrameViewport->scrollIntoView(
LayoutRect(25, 75, 50, 50),
ScrollAlignment::alignToEdgeIfNeeded,
ScrollAlignment::alignToEdgeIfNeeded);
- EXPECT_POINT_EQ(DoublePoint(25, 25), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(25, 25), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport->scrollPositionDouble());
// Reset the pinch viewport's size, scale the page and repeat the test
- visualViewport.setViewportSize(IntSize(100, 150));
- visualViewport.setScale(2);
+ visualViewport->setViewportSize(IntSize(100, 150));
+ visualViewport->setScale(2);
rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
rootFrameViewport->scrollIntoView(
LayoutRect(50, 75, 50, 75),
ScrollAlignment::alignToEdgeIfNeeded,
ScrollAlignment::alignToEdgeIfNeeded);
- EXPECT_POINT_EQ(DoublePoint(50, 75), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 75), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
rootFrameViewport->scrollIntoView(
LayoutRect(190, 290, 10, 10),
ScrollAlignment::alignToEdgeIfNeeded,
ScrollAlignment::alignToEdgeIfNeeded);
- EXPECT_POINT_EQ(DoublePoint(100, 150), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(50, 75), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(100, 150), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 75), visualViewport->scrollPositionDouble());
// Scrolling into view the viewport rect itself should be a no-op.
- visualViewport.setViewportSize(IntSize(100, 100));
- visualViewport.setScale(1.5f);
- visualViewport.setScrollPosition(DoublePoint(0, 10), ProgrammaticScroll);
- layoutViewport.setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll);
+ visualViewport->setViewportSize(IntSize(100, 100));
+ visualViewport->setScale(1.5f);
+ visualViewport->setScrollPosition(DoublePoint(0, 10), ProgrammaticScroll);
+ layoutViewport->setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll);
rootFrameViewport->setScrollPosition(rootFrameViewport->scrollPositionDouble(), ProgrammaticScroll);
rootFrameViewport->scrollIntoView(
LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars)),
ScrollAlignment::alignToEdgeIfNeeded,
ScrollAlignment::alignToEdgeIfNeeded);
- EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
rootFrameViewport->scrollIntoView(
LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars)),
ScrollAlignment::alignCenterAlways,
ScrollAlignment::alignCenterAlways);
- EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
rootFrameViewport->scrollIntoView(
LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars)),
ScrollAlignment::alignTopAlways,
ScrollAlignment::alignTopAlways);
- EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
}
// Tests that the setScrollPosition method works correctly with both viewports.
TEST_F(RootFrameViewportTest, SetScrollPosition)
{
IntSize viewportSize(500, 500);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(1000, 2000));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(1000, 2000));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
- visualViewport.setScale(2);
+ visualViewport->setScale(2);
// Ensure that the layout viewport scrolls first.
rootFrameViewport->setScrollPosition(DoublePoint(100, 100), ProgrammaticScroll);
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(100, 100), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(100, 100), layoutViewport->scrollPositionDouble());
// Scroll to the layout viewport's extent, the visual viewport should scroll the
// remainder.
rootFrameViewport->setScrollPosition(DoublePoint(700, 1700), ProgrammaticScroll);
- EXPECT_POINT_EQ(DoublePoint(200, 200), visualViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(200, 200), visualViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport->scrollPositionDouble());
// Only the visual viewport should scroll further. Make sure it doesn't scroll
// out of bounds.
rootFrameViewport->setScrollPosition(DoublePoint(780, 1780), ProgrammaticScroll);
- EXPECT_POINT_EQ(DoublePoint(250, 250), visualViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(250, 250), visualViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport->scrollPositionDouble());
// Scroll all the way back.
rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll);
- EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
}
// Tests that the visible rect (i.e. visual viewport rect) is correctly
@@ -449,11 +466,10 @@ TEST_F(RootFrameViewportTest, SetScrollPosition)
TEST_F(RootFrameViewportTest, VisibleContentRect)
{
IntSize viewportSize(500, 401);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(1000, 2000));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(1000, 2000));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
rootFrameViewport->setScrollPosition(DoublePoint(100, 75), ProgrammaticScroll);
@@ -462,7 +478,7 @@ TEST_F(RootFrameViewportTest, VisibleContentRect)
EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRect().size());
EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRectDouble().size());
- visualViewport.setScale(2);
+ visualViewport->setScale(2);
EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRect().location());
EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRectDouble().location());
@@ -475,13 +491,12 @@ TEST_F(RootFrameViewportTest, VisibleContentRect)
TEST_F(RootFrameViewportTest, BasicWheelEvent)
{
IntSize viewportSize(100, 100);
- RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300));
- VisualViewportStub visualViewport(viewportSize, viewportSize);
+ OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::create(viewportSize, IntSize(200, 300));
+ OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub::create(viewportSize, viewportSize);
- OwnPtr<ScrollableArea> rootFrameViewport =
- RootFrameViewport::create(visualViewport, layoutViewport);
+ OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::create(*visualViewport.get(), *layoutViewport.get());
- visualViewport.setScale(2);
+ visualViewport->setScale(2);
PlatformWheelEvent wheelEvent(
IntPoint(10, 10), IntPoint(10, 10),
@@ -493,8 +508,8 @@ TEST_F(RootFrameViewportTest, BasicWheelEvent)
ScrollResult result = rootFrameViewport->handleWheel(wheelEvent);
EXPECT_TRUE(result.didScroll());
- EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport.scrollPositionDouble());
- EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport.scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport->scrollPositionDouble());
+ EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport->scrollPositionDouble());
EXPECT_EQ(350, result.unusedScrollDeltaX);
EXPECT_EQ(250, result.unusedScrollDeltaY);
}
« no previous file with comments | « Source/core/frame/RootFrameViewport.cpp ('k') | Source/core/input/EventHandler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698