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

Side by Side Diff: Source/core/frame/RootFrameViewportTest.cpp

Issue 1215973002: Oilpan: improve ScrollableArea handling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: review-induced improvements Created 5 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/frame/RootFrameViewport.cpp ('k') | Source/core/input/EventHandler.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "core/frame/RootFrameViewport.h" 7 #include "core/frame/RootFrameViewport.h"
8 8
9 #include "core/layout/ScrollAlignment.h" 9 #include "core/layout/ScrollAlignment.h"
10 #include "platform/geometry/DoubleRect.h" 10 #include "platform/geometry/DoubleRect.h"
11 #include "platform/geometry/LayoutRect.h" 11 #include "platform/geometry/LayoutRect.h"
12 #include "platform/scroll/ScrollableArea.h" 12 #include "platform/scroll/ScrollableArea.h"
13 13
14 #include <gtest/gtest.h> 14 #include <gtest/gtest.h>
15 15
16 #define EXPECT_POINT_EQ(expected, actual) \ 16 #define EXPECT_POINT_EQ(expected, actual) \
17 do { \ 17 do { \
18 EXPECT_EQ((expected).x(), (actual).x()); \ 18 EXPECT_EQ((expected).x(), (actual).x()); \
19 EXPECT_EQ((expected).y(), (actual).y()); \ 19 EXPECT_EQ((expected).y(), (actual).y()); \
20 } while (false) 20 } while (false)
21 #define EXPECT_SIZE_EQ(expected, actual) \ 21 #define EXPECT_SIZE_EQ(expected, actual) \
22 do { \ 22 do { \
23 EXPECT_EQ((expected).width(), (actual).width()); \ 23 EXPECT_EQ((expected).width(), (actual).width()); \
24 EXPECT_EQ((expected).height(), (actual).height()); \ 24 EXPECT_EQ((expected).height(), (actual).height()); \
25 } while (false) 25 } while (false)
26 26
27 namespace blink { 27 namespace blink {
28 28
29 class ScrollableAreaStub : public ScrollableArea { 29 class ScrollableAreaStub : public NoBaseWillBeGarbageCollectedFinalized<Scrollab leAreaStub>, public ScrollableArea {
30 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ScrollableAreaStub);
30 public: 31 public:
31 ScrollableAreaStub(const IntSize& viewportSize, const IntSize& contentsSize) 32 static PassOwnPtrWillBeRawPtr<ScrollableAreaStub> create(const IntSize& view portSize, const IntSize& contentsSize)
32 : m_userInputScrollableX(true)
33 , m_userInputScrollableY(true)
34 , m_viewportSize(viewportSize)
35 , m_contentsSize(contentsSize)
36 { 33 {
34 return adoptPtrWillBeNoop(new ScrollableAreaStub(viewportSize, contentsS ize));
37 } 35 }
38 36
39 void setViewportSize(const IntSize& viewportSize) 37 void setViewportSize(const IntSize& viewportSize)
40 { 38 {
41 m_viewportSize = viewportSize; 39 m_viewportSize = viewportSize;
42 } 40 }
43 41
44 IntSize viewportSize() const { return m_viewportSize; } 42 IntSize viewportSize() const { return m_viewportSize; }
45 43
46 // ScrollableArea Impl 44 // ScrollableArea Impl
(...skipping 14 matching lines...) Expand all
61 IntPoint minimumScrollPosition() const override { return IntPoint(); } 59 IntPoint minimumScrollPosition() const override { return IntPoint(); }
62 DoublePoint minimumScrollPositionDouble() const override { return DoublePoin t(); } 60 DoublePoint minimumScrollPositionDouble() const override { return DoublePoin t(); }
63 IntPoint maximumScrollPosition() const override { return flooredIntPoint(max imumScrollPositionDouble()); } 61 IntPoint maximumScrollPosition() const override { return flooredIntPoint(max imumScrollPositionDouble()); }
64 62
65 IntSize contentsSize() const override { return m_contentsSize; } 63 IntSize contentsSize() const override { return m_contentsSize; }
66 void setContentSize(const IntSize& contentsSize) 64 void setContentSize(const IntSize& contentsSize)
67 { 65 {
68 m_contentsSize = contentsSize; 66 m_contentsSize = contentsSize;
69 } 67 }
70 68
69 DEFINE_INLINE_VIRTUAL_TRACE()
70 {
71 ScrollableArea::trace(visitor);
72 }
73
71 protected: 74 protected:
75 ScrollableAreaStub(const IntSize& viewportSize, const IntSize& contentsSize)
76 : m_userInputScrollableX(true)
77 , m_userInputScrollableY(true)
78 , m_viewportSize(viewportSize)
79 , m_contentsSize(contentsSize)
80 {
81 }
82
72 void setScrollOffset(const IntPoint& offset, ScrollType) override { m_scroll Position = offset; } 83 void setScrollOffset(const IntPoint& offset, ScrollType) override { m_scroll Position = offset; }
73 void setScrollOffset(const DoublePoint& offset, ScrollType) override { m_scr ollPosition = offset; } 84 void setScrollOffset(const DoublePoint& offset, ScrollType) override { m_scr ollPosition = offset; }
74 bool shouldUseIntegerScrollOffset() const override { return true; } 85 bool shouldUseIntegerScrollOffset() const override { return true; }
75 bool isActive() const override { return true; } 86 bool isActive() const override { return true; }
76 bool isScrollCornerVisible() const override { return true; } 87 bool isScrollCornerVisible() const override { return true; }
77 IntRect scrollCornerRect() const override { return IntRect(); } 88 IntRect scrollCornerRect() const override { return IntRect(); }
78 bool scrollbarsCanBeActive() const override { return true; } 89 bool scrollbarsCanBeActive() const override { return true; }
79 IntRect scrollableAreaBoundingBox() const override { return IntRect(); } 90 IntRect scrollableAreaBoundingBox() const override { return IntRect(); }
80 bool shouldPlaceVerticalScrollbarOnLeft() const override { return true; } 91 bool shouldPlaceVerticalScrollbarOnLeft() const override { return true; }
81 void invalidateScrollbarRect(Scrollbar*, const IntRect&) override { } 92 void invalidateScrollbarRect(Scrollbar*, const IntRect&) override { }
(...skipping 17 matching lines...) Expand all
99 110
100 bool m_userInputScrollableX; 111 bool m_userInputScrollableX;
101 bool m_userInputScrollableY; 112 bool m_userInputScrollableY;
102 DoublePoint m_scrollPosition; 113 DoublePoint m_scrollPosition;
103 IntSize m_viewportSize; 114 IntSize m_viewportSize;
104 IntSize m_contentsSize; 115 IntSize m_contentsSize;
105 }; 116 };
106 117
107 class RootFrameViewStub : public ScrollableAreaStub { 118 class RootFrameViewStub : public ScrollableAreaStub {
108 public: 119 public:
109 RootFrameViewStub(const IntSize& viewportSize, const IntSize& contentsSize) 120 static PassOwnPtrWillBeRawPtr<RootFrameViewStub> create(const IntSize& viewp ortSize, const IntSize& contentsSize)
110 : ScrollableAreaStub(viewportSize, contentsSize)
111 { 121 {
122 return adoptPtrWillBeNoop(new RootFrameViewStub(viewportSize, contentsSi ze));
112 } 123 }
113 124
114 DoublePoint maximumScrollPositionDouble() const override 125 DoublePoint maximumScrollPositionDouble() const override
115 { 126 {
116 return IntPoint(contentsSize() - viewportSize()); 127 return IntPoint(contentsSize() - viewportSize());
117 } 128 }
118 129
119 private: 130 private:
131 RootFrameViewStub(const IntSize& viewportSize, const IntSize& contentsSize)
132 : ScrollableAreaStub(viewportSize, contentsSize)
133 {
134 }
135
120 int visibleWidth() const override { return m_viewportSize.width(); } 136 int visibleWidth() const override { return m_viewportSize.width(); }
121 int visibleHeight() const override { return m_viewportSize.height(); } 137 int visibleHeight() const override { return m_viewportSize.height(); }
122 }; 138 };
123 139
124 class VisualViewportStub : public ScrollableAreaStub { 140 class VisualViewportStub : public ScrollableAreaStub {
125 public: 141 public:
126 VisualViewportStub(const IntSize& viewportSize, const IntSize& contentsSize) 142 static PassOwnPtrWillBeRawPtr<VisualViewportStub> create(const IntSize& view portSize, const IntSize& contentsSize)
127 : ScrollableAreaStub(viewportSize, contentsSize)
128 , m_scale(1)
129 { 143 {
144 return adoptPtrWillBeNoop(new VisualViewportStub(viewportSize, contentsS ize));
130 } 145 }
131 146
132 DoublePoint maximumScrollPositionDouble() const override 147 DoublePoint maximumScrollPositionDouble() const override
133 { 148 {
134 DoubleSize visibleViewport = viewportSize(); 149 DoubleSize visibleViewport = viewportSize();
135 visibleViewport.scale(1 / m_scale); 150 visibleViewport.scale(1 / m_scale);
136 151
137 DoubleSize maxPosition = DoubleSize(contentsSize()) - visibleViewport; 152 DoubleSize maxPosition = DoubleSize(contentsSize()) - visibleViewport;
138 return DoublePoint(maxPosition); 153 return DoublePoint(maxPosition);
139 } 154 }
140 155
141 void setScale(float scale) { m_scale = scale; } 156 void setScale(float scale) { m_scale = scale; }
142 157
143 private: 158 private:
159 VisualViewportStub(const IntSize& viewportSize, const IntSize& contentsSize)
160 : ScrollableAreaStub(viewportSize, contentsSize)
161 , m_scale(1)
162 {
163 }
164
144 int visibleWidth() const override { return m_viewportSize.width() / m_scale; } 165 int visibleWidth() const override { return m_viewportSize.width() / m_scale; }
145 int visibleHeight() const override { return m_viewportSize.height() / m_scal e; } 166 int visibleHeight() const override { return m_viewportSize.height() / m_scal e; }
146 DoubleRect visibleContentRectDouble(IncludeScrollbarsInRect) const override 167 DoubleRect visibleContentRectDouble(IncludeScrollbarsInRect) const override
147 { 168 {
148 DoubleSize size = m_viewportSize; 169 DoubleSize size = m_viewportSize;
149 size.scale(1 / m_scale); 170 size.scale(1 / m_scale);
150 DoubleRect rect(scrollPositionDouble(), size); 171 DoubleRect rect(scrollPositionDouble(), size);
151 return rect; 172 return rect;
152 } 173 }
153 174
(...skipping 11 matching lines...) Expand all
165 { 186 {
166 } 187 }
167 }; 188 };
168 189
169 // Tests that scrolling the viewport when the layout viewport is 190 // Tests that scrolling the viewport when the layout viewport is
170 // !userInputScrollable (as happens when overflow:hidden is set) works 191 // !userInputScrollable (as happens when overflow:hidden is set) works
171 // correctly, that is, the visual viewport can scroll, but not the layout. 192 // correctly, that is, the visual viewport can scroll, but not the layout.
172 TEST_F(RootFrameViewportTest, UserInputScrollable) 193 TEST_F(RootFrameViewportTest, UserInputScrollable)
173 { 194 {
174 IntSize viewportSize(100, 150); 195 IntSize viewportSize(100, 150);
175 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300)); 196 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(200, 300));
176 VisualViewportStub visualViewport(viewportSize, viewportSize); 197 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
177 198
178 OwnPtr<ScrollableArea> rootFrameViewport = 199 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
179 RootFrameViewport::create(visualViewport, layoutViewport);
180 200
181 visualViewport.setScale(2); 201 visualViewport->setScale(2);
182 202
183 // Disable just the layout viewport's horizontal scrolling, the 203 // Disable just the layout viewport's horizontal scrolling, the
184 // RootFrameViewport should remain scrollable overall. 204 // RootFrameViewport should remain scrollable overall.
185 layoutViewport.setUserInputScrollable(false, true); 205 layoutViewport->setUserInputScrollable(false, true);
186 visualViewport.setUserInputScrollable(true, true); 206 visualViewport->setUserInputScrollable(true, true);
187 207
188 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 208 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
189 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 209 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
190 210
191 // Layout viewport shouldn't scroll since it's not horizontally scrollable, 211 // Layout viewport shouldn't scroll since it's not horizontally scrollable,
192 // but visual viewport should. 212 // but visual viewport should.
193 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300); 213 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
194 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 214 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
195 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble()); 215 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport->scrollPositionDouble());
196 EXPECT_POINT_EQ(DoublePoint(50, 0), rootFrameViewport->scrollPositionDouble( )); 216 EXPECT_POINT_EQ(DoublePoint(50, 0), rootFrameViewport->scrollPositionDouble( ));
197 217
198 // Disable just the visual viewport's horizontal scrolling, only the layout 218 // Disable just the visual viewport's horizontal scrolling, only the layout
199 // viewport should scroll. 219 // viewport should scroll.
200 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 220 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
201 layoutViewport.setUserInputScrollable(true, true); 221 layoutViewport->setUserInputScrollable(true, true);
202 visualViewport.setUserInputScrollable(false, true); 222 visualViewport->setUserInputScrollable(false, true);
203 223
204 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300); 224 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
205 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble()); 225 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport->scrollPositionDouble()) ;
206 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 226 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
207 EXPECT_POINT_EQ(DoublePoint(100, 0), rootFrameViewport->scrollPositionDouble ()); 227 EXPECT_POINT_EQ(DoublePoint(100, 0), rootFrameViewport->scrollPositionDouble ());
208 228
209 // Disable both viewports' horizontal scrolling, all horizontal scrolling 229 // Disable both viewports' horizontal scrolling, all horizontal scrolling
210 // should now be blocked. 230 // should now be blocked.
211 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 231 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
212 layoutViewport.setUserInputScrollable(false, true); 232 layoutViewport->setUserInputScrollable(false, true);
213 visualViewport.setUserInputScrollable(false, true); 233 visualViewport->setUserInputScrollable(false, true);
214 234
215 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300); 235 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
216 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 236 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
217 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 237 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
218 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 238 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
219 239
220 EXPECT_FALSE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 240 EXPECT_FALSE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
221 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 241 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
222 242
223 // Vertical scrolling should be unaffected. 243 // Vertical scrolling should be unaffected.
224 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300); 244 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
225 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 245 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble()) ;
226 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 246 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
227 EXPECT_POINT_EQ(DoublePoint(0, 225), rootFrameViewport->scrollPositionDouble ()); 247 EXPECT_POINT_EQ(DoublePoint(0, 225), rootFrameViewport->scrollPositionDouble ());
228 248
229 // Try the same checks as above but for the vertical direction. 249 // Try the same checks as above but for the vertical direction.
230 // =============================================== 250 // ===============================================
231 251
232 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 252 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
233 253
234 // Disable just the layout viewport's vertical scrolling, the 254 // Disable just the layout viewport's vertical scrolling, the
235 // RootFrameViewport should remain scrollable overall. 255 // RootFrameViewport should remain scrollable overall.
236 layoutViewport.setUserInputScrollable(true, false); 256 layoutViewport->setUserInputScrollable(true, false);
237 visualViewport.setUserInputScrollable(true, true); 257 visualViewport->setUserInputScrollable(true, true);
238 258
239 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 259 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
240 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 260 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
241 261
242 // Layout viewport shouldn't scroll since it's not vertically scrollable, 262 // Layout viewport shouldn't scroll since it's not vertically scrollable,
243 // but visual viewport should. 263 // but visual viewport should.
244 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300); 264 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
245 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 265 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
246 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 266 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
247 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( )); 267 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( ));
248 268
249 // Disable just the visual viewport's vertical scrolling, only the layout 269 // Disable just the visual viewport's vertical scrolling, only the layout
250 // viewport should scroll. 270 // viewport should scroll.
251 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 271 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
252 layoutViewport.setUserInputScrollable(true, true); 272 layoutViewport->setUserInputScrollable(true, true);
253 visualViewport.setUserInputScrollable(true, false); 273 visualViewport->setUserInputScrollable(true, false);
254 274
255 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300); 275 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
256 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 276 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble()) ;
257 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 277 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
258 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ()); 278 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ());
259 279
260 // Disable both viewports' horizontal scrolling, all vertical scrolling 280 // Disable both viewports' horizontal scrolling, all vertical scrolling
261 // should now be blocked. 281 // should now be blocked.
262 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 282 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
263 layoutViewport.setUserInputScrollable(true, false); 283 layoutViewport->setUserInputScrollable(true, false);
264 visualViewport.setUserInputScrollable(true, false); 284 visualViewport->setUserInputScrollable(true, false);
265 285
266 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300); 286 rootFrameViewport->userScroll(ScrollDown, ScrollByPixel, 300);
267 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 287 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
268 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 288 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
269 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 289 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
270 290
271 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 291 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
272 EXPECT_FALSE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 292 EXPECT_FALSE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
273 293
274 // Horizontal scrolling should be unaffected. 294 // Horizontal scrolling should be unaffected.
275 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300); 295 rootFrameViewport->userScroll(ScrollRight, ScrollByPixel, 300);
276 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble()); 296 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport->scrollPositionDouble()) ;
277 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble()); 297 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport->scrollPositionDouble());
278 EXPECT_POINT_EQ(DoublePoint(150, 0), rootFrameViewport->scrollPositionDouble ()); 298 EXPECT_POINT_EQ(DoublePoint(150, 0), rootFrameViewport->scrollPositionDouble ());
279 } 299 }
280 300
281 // Make sure scrolls using the scroll animator (scroll(), setScrollPosition(), w heelHandler) 301 // Make sure scrolls using the scroll animator (scroll(), setScrollPosition(), w heelHandler)
282 // work correctly when one of the subviewports is explicitly scrolled without us ing the 302 // work correctly when one of the subviewports is explicitly scrolled without us ing the
283 // RootFrameViewport interface. 303 // RootFrameViewport interface.
284 TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll) 304 TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll)
285 { 305 {
286 IntSize viewportSize(100, 150); 306 IntSize viewportSize(100, 150);
287 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300)); 307 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(200, 300));
288 VisualViewportStub visualViewport(viewportSize, viewportSize); 308 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
289 309
290 OwnPtr<ScrollableArea> rootFrameViewport = 310 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
291 RootFrameViewport::create(visualViewport, layoutViewport);
292 311
293 visualViewport.setScale(2); 312 visualViewport->setScale(2);
294 313
295 visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll); 314 visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
296 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ()); 315 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ());
297 316
298 // If the scroll animator doesn't update, it will still think it's at (0, 0) and so it 317 // If the scroll animator doesn't update, it will still think it's at (0, 0) and so it
299 // may early exit. 318 // may early exit.
300 rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll); 319 rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll);
301 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 320 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
302 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 321 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
303 322
304 // Try again for scroll() 323 // Try again for scroll()
305 visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll); 324 visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
306 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ()); 325 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ());
307 326
308 rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 50); 327 rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 50);
309 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( )); 328 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( ));
310 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 329 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport->scrollPositionDouble());
311 330
312 // Try again for handleWheel. 331 // Try again for handleWheel.
313 visualViewport.setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll); 332 visualViewport->setScrollPosition(DoublePoint(50, 75), ProgrammaticScroll);
314 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ()); 333 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ());
315 334
316 PlatformWheelEvent wheelEvent( 335 PlatformWheelEvent wheelEvent(
317 IntPoint(10, 10), IntPoint(10, 10), 336 IntPoint(10, 10), IntPoint(10, 10),
318 50, 75, 337 50, 75,
319 0, 0, 338 0, 0,
320 ScrollByPixelWheelEvent, 339 ScrollByPixelWheelEvent,
321 false, false, false, false); 340 false, false, false, false);
322 rootFrameViewport->handleWheel(wheelEvent); 341 rootFrameViewport->handleWheel(wheelEvent);
323 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 342 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
324 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 343 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
325 344
326 // Make sure the layout viewport is also accounted for. 345 // Make sure the layout viewport is also accounted for.
327 layoutViewport.setScrollPosition(DoublePoint(100, 150), ProgrammaticScroll); 346 layoutViewport->setScrollPosition(DoublePoint(100, 150), ProgrammaticScroll) ;
328 EXPECT_POINT_EQ(DoublePoint(100, 150), rootFrameViewport->scrollPositionDoub le()); 347 EXPECT_POINT_EQ(DoublePoint(100, 150), rootFrameViewport->scrollPositionDoub le());
329 348
330 rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 100); 349 rootFrameViewport->userScroll(ScrollLeft, ScrollByPixel, 100);
331 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ()); 350 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ());
332 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 351 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport->scrollPositionDouble()) ;
333 } 352 }
334 353
335 // Test that the scrollIntoView correctly scrolls the main frame 354 // Test that the scrollIntoView correctly scrolls the main frame
336 // and pinch viewports such that the given rect is centered in the viewport. 355 // and pinch viewports such that the given rect is centered in the viewport.
337 TEST_F(RootFrameViewportTest, ScrollIntoView) 356 TEST_F(RootFrameViewportTest, ScrollIntoView)
338 { 357 {
339 IntSize viewportSize(100, 150); 358 IntSize viewportSize(100, 150);
340 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300)); 359 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(200, 300));
341 VisualViewportStub visualViewport(viewportSize, viewportSize); 360 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
342 361
343 OwnPtr<ScrollableArea> rootFrameViewport = 362 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
344 RootFrameViewport::create(visualViewport, layoutViewport);
345 363
346 // Test that the visual viewport is scrolled if the viewport has been 364 // Test that the visual viewport is scrolled if the viewport has been
347 // resized (as is the case when the ChromeOS keyboard comes up) but not 365 // resized (as is the case when the ChromeOS keyboard comes up) but not
348 // scaled. 366 // scaled.
349 visualViewport.setViewportSize(IntSize(100, 100)); 367 visualViewport->setViewportSize(IntSize(100, 100));
350 rootFrameViewport->scrollIntoView( 368 rootFrameViewport->scrollIntoView(
351 LayoutRect(100, 250, 50, 50), 369 LayoutRect(100, 250, 50, 50),
352 ScrollAlignment::alignToEdgeIfNeeded, 370 ScrollAlignment::alignToEdgeIfNeeded,
353 ScrollAlignment::alignToEdgeIfNeeded); 371 ScrollAlignment::alignToEdgeIfNeeded);
354 EXPECT_POINT_EQ(DoublePoint(50, 150), layoutViewport.scrollPositionDouble()) ; 372 EXPECT_POINT_EQ(DoublePoint(50, 150), layoutViewport->scrollPositionDouble() );
355 EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport.scrollPositionDouble()); 373 EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport->scrollPositionDouble());
356 374
357 rootFrameViewport->scrollIntoView( 375 rootFrameViewport->scrollIntoView(
358 LayoutRect(25, 75, 50, 50), 376 LayoutRect(25, 75, 50, 50),
359 ScrollAlignment::alignToEdgeIfNeeded, 377 ScrollAlignment::alignToEdgeIfNeeded,
360 ScrollAlignment::alignToEdgeIfNeeded); 378 ScrollAlignment::alignToEdgeIfNeeded);
361 EXPECT_POINT_EQ(DoublePoint(25, 25), layoutViewport.scrollPositionDouble()); 379 EXPECT_POINT_EQ(DoublePoint(25, 25), layoutViewport->scrollPositionDouble()) ;
362 EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport.scrollPositionDouble()); 380 EXPECT_POINT_EQ(DoublePoint(0, 50), visualViewport->scrollPositionDouble());
363 381
364 // Reset the pinch viewport's size, scale the page and repeat the test 382 // Reset the pinch viewport's size, scale the page and repeat the test
365 visualViewport.setViewportSize(IntSize(100, 150)); 383 visualViewport->setViewportSize(IntSize(100, 150));
366 visualViewport.setScale(2); 384 visualViewport->setScale(2);
367 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll); 385 rootFrameViewport->setScrollPosition(DoublePoint(), ProgrammaticScroll);
368 386
369 rootFrameViewport->scrollIntoView( 387 rootFrameViewport->scrollIntoView(
370 LayoutRect(50, 75, 50, 75), 388 LayoutRect(50, 75, 50, 75),
371 ScrollAlignment::alignToEdgeIfNeeded, 389 ScrollAlignment::alignToEdgeIfNeeded,
372 ScrollAlignment::alignToEdgeIfNeeded); 390 ScrollAlignment::alignToEdgeIfNeeded);
373 EXPECT_POINT_EQ(DoublePoint(50, 75), layoutViewport.scrollPositionDouble()); 391 EXPECT_POINT_EQ(DoublePoint(50, 75), layoutViewport->scrollPositionDouble()) ;
374 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 392 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
375 393
376 rootFrameViewport->scrollIntoView( 394 rootFrameViewport->scrollIntoView(
377 LayoutRect(190, 290, 10, 10), 395 LayoutRect(190, 290, 10, 10),
378 ScrollAlignment::alignToEdgeIfNeeded, 396 ScrollAlignment::alignToEdgeIfNeeded,
379 ScrollAlignment::alignToEdgeIfNeeded); 397 ScrollAlignment::alignToEdgeIfNeeded);
380 EXPECT_POINT_EQ(DoublePoint(100, 150), layoutViewport.scrollPositionDouble() ); 398 EXPECT_POINT_EQ(DoublePoint(100, 150), layoutViewport->scrollPositionDouble( ));
381 EXPECT_POINT_EQ(DoublePoint(50, 75), visualViewport.scrollPositionDouble()); 399 EXPECT_POINT_EQ(DoublePoint(50, 75), visualViewport->scrollPositionDouble()) ;
382 400
383 // Scrolling into view the viewport rect itself should be a no-op. 401 // Scrolling into view the viewport rect itself should be a no-op.
384 visualViewport.setViewportSize(IntSize(100, 100)); 402 visualViewport->setViewportSize(IntSize(100, 100));
385 visualViewport.setScale(1.5f); 403 visualViewport->setScale(1.5f);
386 visualViewport.setScrollPosition(DoublePoint(0, 10), ProgrammaticScroll); 404 visualViewport->setScrollPosition(DoublePoint(0, 10), ProgrammaticScroll);
387 layoutViewport.setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll); 405 layoutViewport->setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll);
388 rootFrameViewport->setScrollPosition(rootFrameViewport->scrollPositionDouble (), ProgrammaticScroll); 406 rootFrameViewport->setScrollPosition(rootFrameViewport->scrollPositionDouble (), ProgrammaticScroll);
389 407
390 rootFrameViewport->scrollIntoView( 408 rootFrameViewport->scrollIntoView(
391 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )), 409 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )),
392 ScrollAlignment::alignToEdgeIfNeeded, 410 ScrollAlignment::alignToEdgeIfNeeded,
393 ScrollAlignment::alignToEdgeIfNeeded); 411 ScrollAlignment::alignToEdgeIfNeeded);
394 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble()); 412 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble()) ;
395 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble()); 413 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
396 414
397 rootFrameViewport->scrollIntoView( 415 rootFrameViewport->scrollIntoView(
398 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )), 416 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )),
399 ScrollAlignment::alignCenterAlways, 417 ScrollAlignment::alignCenterAlways,
400 ScrollAlignment::alignCenterAlways); 418 ScrollAlignment::alignCenterAlways);
401 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble()); 419 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble()) ;
402 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble()); 420 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
403 421
404 rootFrameViewport->scrollIntoView( 422 rootFrameViewport->scrollIntoView(
405 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )), 423 LayoutRect(rootFrameViewport->visibleContentRectDouble(ExcludeScrollbars )),
406 ScrollAlignment::alignTopAlways, 424 ScrollAlignment::alignTopAlways,
407 ScrollAlignment::alignTopAlways); 425 ScrollAlignment::alignTopAlways);
408 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport.scrollPositionDouble()); 426 EXPECT_POINT_EQ(DoublePoint(50, 50), layoutViewport->scrollPositionDouble()) ;
409 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport.scrollPositionDouble()); 427 EXPECT_POINT_EQ(DoublePoint(0, 10), visualViewport->scrollPositionDouble());
410 } 428 }
411 429
412 // Tests that the setScrollPosition method works correctly with both viewports. 430 // Tests that the setScrollPosition method works correctly with both viewports.
413 TEST_F(RootFrameViewportTest, SetScrollPosition) 431 TEST_F(RootFrameViewportTest, SetScrollPosition)
414 { 432 {
415 IntSize viewportSize(500, 500); 433 IntSize viewportSize(500, 500);
416 RootFrameViewStub layoutViewport(viewportSize, IntSize(1000, 2000)); 434 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(1000, 2000));
417 VisualViewportStub visualViewport(viewportSize, viewportSize); 435 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
418 436
419 OwnPtr<ScrollableArea> rootFrameViewport = 437 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
420 RootFrameViewport::create(visualViewport, layoutViewport);
421 438
422 visualViewport.setScale(2); 439 visualViewport->setScale(2);
423 440
424 // Ensure that the layout viewport scrolls first. 441 // Ensure that the layout viewport scrolls first.
425 rootFrameViewport->setScrollPosition(DoublePoint(100, 100), ProgrammaticScro ll); 442 rootFrameViewport->setScrollPosition(DoublePoint(100, 100), ProgrammaticScro ll);
426 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 443 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
427 EXPECT_POINT_EQ(DoublePoint(100, 100), layoutViewport.scrollPositionDouble() ); 444 EXPECT_POINT_EQ(DoublePoint(100, 100), layoutViewport->scrollPositionDouble( ));
428 445
429 // Scroll to the layout viewport's extent, the visual viewport should scroll the 446 // Scroll to the layout viewport's extent, the visual viewport should scroll the
430 // remainder. 447 // remainder.
431 rootFrameViewport->setScrollPosition(DoublePoint(700, 1700), ProgrammaticScr oll); 448 rootFrameViewport->setScrollPosition(DoublePoint(700, 1700), ProgrammaticScr oll);
432 EXPECT_POINT_EQ(DoublePoint(200, 200), visualViewport.scrollPositionDouble() ); 449 EXPECT_POINT_EQ(DoublePoint(200, 200), visualViewport->scrollPositionDouble( ));
433 EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport.scrollPositionDouble( )); 450 EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport->scrollPositionDouble ());
434 451
435 // Only the visual viewport should scroll further. Make sure it doesn't scro ll 452 // Only the visual viewport should scroll further. Make sure it doesn't scro ll
436 // out of bounds. 453 // out of bounds.
437 rootFrameViewport->setScrollPosition(DoublePoint(780, 1780), ProgrammaticScr oll); 454 rootFrameViewport->setScrollPosition(DoublePoint(780, 1780), ProgrammaticScr oll);
438 EXPECT_POINT_EQ(DoublePoint(250, 250), visualViewport.scrollPositionDouble() ); 455 EXPECT_POINT_EQ(DoublePoint(250, 250), visualViewport->scrollPositionDouble( ));
439 EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport.scrollPositionDouble( )); 456 EXPECT_POINT_EQ(DoublePoint(500, 1500), layoutViewport->scrollPositionDouble ());
440 457
441 // Scroll all the way back. 458 // Scroll all the way back.
442 rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll); 459 rootFrameViewport->setScrollPosition(DoublePoint(0, 0), ProgrammaticScroll);
443 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 460 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport->scrollPositionDouble());
444 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 461 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport->scrollPositionDouble());
445 } 462 }
446 463
447 // Tests that the visible rect (i.e. visual viewport rect) is correctly 464 // Tests that the visible rect (i.e. visual viewport rect) is correctly
448 // calculated, taking into account both viewports and page scale. 465 // calculated, taking into account both viewports and page scale.
449 TEST_F(RootFrameViewportTest, VisibleContentRect) 466 TEST_F(RootFrameViewportTest, VisibleContentRect)
450 { 467 {
451 IntSize viewportSize(500, 401); 468 IntSize viewportSize(500, 401);
452 RootFrameViewStub layoutViewport(viewportSize, IntSize(1000, 2000)); 469 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(1000, 2000));
453 VisualViewportStub visualViewport(viewportSize, viewportSize); 470 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
454 471
455 OwnPtr<ScrollableArea> rootFrameViewport = 472 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
456 RootFrameViewport::create(visualViewport, layoutViewport);
457 473
458 rootFrameViewport->setScrollPosition(DoublePoint(100, 75), ProgrammaticScrol l); 474 rootFrameViewport->setScrollPosition(DoublePoint(100, 75), ProgrammaticScrol l);
459 475
460 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRect( ).location()); 476 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRect( ).location());
461 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRectD ouble().location()); 477 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRectD ouble().location());
462 EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRect() .size()); 478 EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRect() .size());
463 EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRectDo uble().size()); 479 EXPECT_SIZE_EQ(DoubleSize(500, 401), rootFrameViewport->visibleContentRectDo uble().size());
464 480
465 visualViewport.setScale(2); 481 visualViewport->setScale(2);
466 482
467 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRect( ).location()); 483 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRect( ).location());
468 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRectD ouble().location()); 484 EXPECT_POINT_EQ(DoublePoint(100, 75), rootFrameViewport->visibleContentRectD ouble().location());
469 EXPECT_SIZE_EQ(DoubleSize(250, 201), rootFrameViewport->visibleContentRect() .size()); 485 EXPECT_SIZE_EQ(DoubleSize(250, 201), rootFrameViewport->visibleContentRect() .size());
470 EXPECT_SIZE_EQ(DoubleSize(250, 200.5), rootFrameViewport->visibleContentRect Double().size()); 486 EXPECT_SIZE_EQ(DoubleSize(250, 200.5), rootFrameViewport->visibleContentRect Double().size());
471 } 487 }
472 488
473 // Tests that wheel events are correctly handled in the non-root layer scrolls 489 // Tests that wheel events are correctly handled in the non-root layer scrolls
474 // path. 490 // path.
475 TEST_F(RootFrameViewportTest, BasicWheelEvent) 491 TEST_F(RootFrameViewportTest, BasicWheelEvent)
476 { 492 {
477 IntSize viewportSize(100, 100); 493 IntSize viewportSize(100, 100);
478 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300)); 494 OwnPtrWillBeRawPtr<RootFrameViewStub> layoutViewport = RootFrameViewStub::cr eate(viewportSize, IntSize(200, 300));
479 VisualViewportStub visualViewport(viewportSize, viewportSize); 495 OwnPtrWillBeRawPtr<VisualViewportStub> visualViewport = VisualViewportStub:: create(viewportSize, viewportSize);
480 496
481 OwnPtr<ScrollableArea> rootFrameViewport = 497 OwnPtrWillBeRawPtr<ScrollableArea> rootFrameViewport = RootFrameViewport::cr eate(*visualViewport.get(), *layoutViewport.get());
482 RootFrameViewport::create(visualViewport, layoutViewport);
483 498
484 visualViewport.setScale(2); 499 visualViewport->setScale(2);
485 500
486 PlatformWheelEvent wheelEvent( 501 PlatformWheelEvent wheelEvent(
487 IntPoint(10, 10), IntPoint(10, 10), 502 IntPoint(10, 10), IntPoint(10, 10),
488 -500, -500, 503 -500, -500,
489 0, 0, 504 0, 0,
490 ScrollByPixelWheelEvent, 505 ScrollByPixelWheelEvent,
491 false, false, false, false); 506 false, false, false, false);
492 507
493 ScrollResult result = rootFrameViewport->handleWheel(wheelEvent); 508 ScrollResult result = rootFrameViewport->handleWheel(wheelEvent);
494 509
495 EXPECT_TRUE(result.didScroll()); 510 EXPECT_TRUE(result.didScroll());
496 EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport.scrollPositionDouble()); 511 EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport->scrollPositionDouble()) ;
497 EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport.scrollPositionDouble() ); 512 EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport->scrollPositionDouble( ));
498 EXPECT_EQ(350, result.unusedScrollDeltaX); 513 EXPECT_EQ(350, result.unusedScrollDeltaX);
499 EXPECT_EQ(250, result.unusedScrollDeltaY); 514 EXPECT_EQ(250, result.unusedScrollDeltaY);
500 } 515 }
501 516
502 } // namespace blink 517 } // namespace blink
OLDNEW
« 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