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

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

Issue 1147283002: Add ScrollDirectionPhysical enum in Scroll types. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 7 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
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"
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 // Disable just the layout viewport's horizontal scrolling, the 184 // Disable just the layout viewport's horizontal scrolling, the
185 // RootFrameViewport should remain scrollable overall. 185 // RootFrameViewport should remain scrollable overall.
186 layoutViewport.setUserInputScrollable(false, true); 186 layoutViewport.setUserInputScrollable(false, true);
187 visualViewport.setUserInputScrollable(true, true); 187 visualViewport.setUserInputScrollable(true, true);
188 188
189 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 189 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
190 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 190 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
191 191
192 // Layout viewport shouldn't scroll since it's not horizontally scrollable, 192 // Layout viewport shouldn't scroll since it's not horizontally scrollable,
193 // but visual viewport should. 193 // but visual viewport should.
194 rootFrameViewport->scroll(ScrollRight, ScrollByPixel, 300); 194 rootFrameViewport->scroll(ScrollPhysicalRight, ScrollByPixel, 300);
195 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 195 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
196 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble()); 196 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble());
197 EXPECT_POINT_EQ(DoublePoint(50, 0), rootFrameViewport->scrollPositionDouble( )); 197 EXPECT_POINT_EQ(DoublePoint(50, 0), rootFrameViewport->scrollPositionDouble( ));
198 198
199 // Disable just the visual viewport's horizontal scrolling, only the layout 199 // Disable just the visual viewport's horizontal scrolling, only the layout
200 // viewport should scroll. 200 // viewport should scroll.
201 rootFrameViewport->setScrollPosition(DoublePoint()); 201 rootFrameViewport->setScrollPosition(DoublePoint());
202 layoutViewport.setUserInputScrollable(true, true); 202 layoutViewport.setUserInputScrollable(true, true);
203 visualViewport.setUserInputScrollable(false, true); 203 visualViewport.setUserInputScrollable(false, true);
204 204
205 rootFrameViewport->scroll(ScrollRight, ScrollByPixel, 300); 205 rootFrameViewport->scroll(ScrollPhysicalRight, ScrollByPixel, 300);
206 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble()); 206 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble());
207 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 207 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
208 EXPECT_POINT_EQ(DoublePoint(100, 0), rootFrameViewport->scrollPositionDouble ()); 208 EXPECT_POINT_EQ(DoublePoint(100, 0), rootFrameViewport->scrollPositionDouble ());
209 209
210 // Disable both viewports' horizontal scrolling, all horizontal scrolling 210 // Disable both viewports' horizontal scrolling, all horizontal scrolling
211 // should now be blocked. 211 // should now be blocked.
212 rootFrameViewport->setScrollPosition(DoublePoint()); 212 rootFrameViewport->setScrollPosition(DoublePoint());
213 layoutViewport.setUserInputScrollable(false, true); 213 layoutViewport.setUserInputScrollable(false, true);
214 visualViewport.setUserInputScrollable(false, true); 214 visualViewport.setUserInputScrollable(false, true);
215 215
216 rootFrameViewport->scroll(ScrollRight, ScrollByPixel, 300); 216 rootFrameViewport->scroll(ScrollPhysicalRight, ScrollByPixel, 300);
217 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 217 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
218 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 218 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
219 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 219 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
220 220
221 EXPECT_FALSE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 221 EXPECT_FALSE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
222 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 222 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
223 223
224 // Vertical scrolling should be unaffected. 224 // Vertical scrolling should be unaffected.
225 rootFrameViewport->scroll(ScrollDown, ScrollByPixel, 300); 225 rootFrameViewport->scroll(ScrollPhysicalDown, ScrollByPixel, 300);
226 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 226 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
227 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 227 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
228 EXPECT_POINT_EQ(DoublePoint(0, 225), rootFrameViewport->scrollPositionDouble ()); 228 EXPECT_POINT_EQ(DoublePoint(0, 225), rootFrameViewport->scrollPositionDouble ());
229 229
230 // Try the same checks as above but for the vertical direction. 230 // Try the same checks as above but for the vertical direction.
231 // =============================================== 231 // ===============================================
232 232
233 rootFrameViewport->setScrollPosition(DoublePoint()); 233 rootFrameViewport->setScrollPosition(DoublePoint());
234 234
235 // Disable just the layout viewport's vertical scrolling, the 235 // Disable just the layout viewport's vertical scrolling, the
236 // RootFrameViewport should remain scrollable overall. 236 // RootFrameViewport should remain scrollable overall.
237 layoutViewport.setUserInputScrollable(true, false); 237 layoutViewport.setUserInputScrollable(true, false);
238 visualViewport.setUserInputScrollable(true, true); 238 visualViewport.setUserInputScrollable(true, true);
239 239
240 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 240 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
241 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 241 EXPECT_TRUE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
242 242
243 // Layout viewport shouldn't scroll since it's not vertically scrollable, 243 // Layout viewport shouldn't scroll since it's not vertically scrollable,
244 // but visual viewport should. 244 // but visual viewport should.
245 rootFrameViewport->scroll(ScrollDown, ScrollByPixel, 300); 245 rootFrameViewport->scroll(ScrollPhysicalDown, ScrollByPixel, 300);
246 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 246 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
247 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 247 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
248 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( )); 248 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( ));
249 249
250 // Disable just the visual viewport's vertical scrolling, only the layout 250 // Disable just the visual viewport's vertical scrolling, only the layout
251 // viewport should scroll. 251 // viewport should scroll.
252 rootFrameViewport->setScrollPosition(DoublePoint()); 252 rootFrameViewport->setScrollPosition(DoublePoint());
253 layoutViewport.setUserInputScrollable(true, true); 253 layoutViewport.setUserInputScrollable(true, true);
254 visualViewport.setUserInputScrollable(true, false); 254 visualViewport.setUserInputScrollable(true, false);
255 255
256 rootFrameViewport->scroll(ScrollDown, ScrollByPixel, 300); 256 rootFrameViewport->scroll(ScrollPhysicalDown, ScrollByPixel, 300);
257 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 257 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
258 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 258 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
259 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ()); 259 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ());
260 260
261 // Disable both viewports' horizontal scrolling, all vertical scrolling 261 // Disable both viewports' horizontal scrolling, all vertical scrolling
262 // should now be blocked. 262 // should now be blocked.
263 rootFrameViewport->setScrollPosition(DoublePoint()); 263 rootFrameViewport->setScrollPosition(DoublePoint());
264 layoutViewport.setUserInputScrollable(true, false); 264 layoutViewport.setUserInputScrollable(true, false);
265 visualViewport.setUserInputScrollable(true, false); 265 visualViewport.setUserInputScrollable(true, false);
266 266
267 rootFrameViewport->scroll(ScrollDown, ScrollByPixel, 300); 267 rootFrameViewport->scroll(ScrollPhysicalDown, ScrollByPixel, 300);
268 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble()); 268 EXPECT_POINT_EQ(DoublePoint(0, 0), layoutViewport.scrollPositionDouble());
269 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 269 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
270 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 270 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
271 271
272 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar)); 272 EXPECT_TRUE(rootFrameViewport->userInputScrollable(HorizontalScrollbar));
273 EXPECT_FALSE(rootFrameViewport->userInputScrollable(VerticalScrollbar)); 273 EXPECT_FALSE(rootFrameViewport->userInputScrollable(VerticalScrollbar));
274 274
275 // Horizontal scrolling should be unaffected. 275 // Horizontal scrolling should be unaffected.
276 rootFrameViewport->scroll(ScrollRight, ScrollByPixel, 300); 276 rootFrameViewport->scroll(ScrollPhysicalRight, ScrollByPixel, 300);
277 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble()); 277 EXPECT_POINT_EQ(DoublePoint(100, 0), layoutViewport.scrollPositionDouble());
278 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble()); 278 EXPECT_POINT_EQ(DoublePoint(50, 0), visualViewport.scrollPositionDouble());
279 EXPECT_POINT_EQ(DoublePoint(150, 0), rootFrameViewport->scrollPositionDouble ()); 279 EXPECT_POINT_EQ(DoublePoint(150, 0), rootFrameViewport->scrollPositionDouble ());
280 } 280 }
281 281
282 // Make sure scrolls using the scroll animator (scroll(), setScrollPosition(), w heelHandler) 282 // Make sure scrolls using the scroll animator (scroll(), setScrollPosition(), w heelHandler)
283 // work correctly when one of the subviewports is explicitly scrolled without us ing the 283 // work correctly when one of the subviewports is explicitly scrolled without us ing the
284 // RootFrameViewport interface. 284 // RootFrameViewport interface.
285 TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll) 285 TEST_F(RootFrameViewportTest, TestScrollAnimatorUpdatedBeforeScroll)
286 { 286 {
(...skipping 12 matching lines...) Expand all
299 // If the scroll animator doesn't update, it will still think it's at (0, 0) and so it 299 // If the scroll animator doesn't update, it will still think it's at (0, 0) and so it
300 // may early exit. 300 // may early exit.
301 rootFrameViewport->setScrollPosition(DoublePoint(0, 0)); 301 rootFrameViewport->setScrollPosition(DoublePoint(0, 0));
302 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 302 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
303 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 303 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
304 304
305 // Try again for scroll() 305 // Try again for scroll()
306 visualViewport.setScrollPosition(DoublePoint(50, 75)); 306 visualViewport.setScrollPosition(DoublePoint(50, 75));
307 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ()); 307 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ());
308 308
309 rootFrameViewport->scroll(ScrollLeft, ScrollByPixel, 50); 309 rootFrameViewport->scroll(ScrollPhysicalLeft, ScrollByPixel, 50);
310 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( )); 310 EXPECT_POINT_EQ(DoublePoint(0, 75), rootFrameViewport->scrollPositionDouble( ));
311 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble()); 311 EXPECT_POINT_EQ(DoublePoint(0, 75), visualViewport.scrollPositionDouble());
312 312
313 // Try again for handleWheel. 313 // Try again for handleWheel.
314 visualViewport.setScrollPosition(DoublePoint(50, 75)); 314 visualViewport.setScrollPosition(DoublePoint(50, 75));
315 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ()); 315 EXPECT_POINT_EQ(DoublePoint(50, 75), rootFrameViewport->scrollPositionDouble ());
316 316
317 PlatformWheelEvent wheelEvent( 317 PlatformWheelEvent wheelEvent(
318 IntPoint(10, 10), IntPoint(10, 10), 318 IntPoint(10, 10), IntPoint(10, 10),
319 50, 75, 319 50, 75,
320 0, 0, 320 0, 0,
321 ScrollByPixelWheelEvent, 321 ScrollByPixelWheelEvent,
322 false, false, false, false); 322 false, false, false, false);
323 rootFrameViewport->handleWheel(wheelEvent); 323 rootFrameViewport->handleWheel(wheelEvent);
324 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() ); 324 EXPECT_POINT_EQ(DoublePoint(0, 0), rootFrameViewport->scrollPositionDouble() );
325 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble()); 325 EXPECT_POINT_EQ(DoublePoint(0, 0), visualViewport.scrollPositionDouble());
326 326
327 // Make sure the layout viewport is also accounted for. 327 // Make sure the layout viewport is also accounted for.
328 layoutViewport.setScrollPosition(DoublePoint(100, 150)); 328 layoutViewport.setScrollPosition(DoublePoint(100, 150));
329 EXPECT_POINT_EQ(DoublePoint(100, 150), rootFrameViewport->scrollPositionDoub le()); 329 EXPECT_POINT_EQ(DoublePoint(100, 150), rootFrameViewport->scrollPositionDoub le());
330 330
331 rootFrameViewport->scroll(ScrollLeft, ScrollByPixel, 100); 331 rootFrameViewport->scroll(ScrollPhysicalLeft, ScrollByPixel, 100);
332 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ()); 332 EXPECT_POINT_EQ(DoublePoint(0, 150), rootFrameViewport->scrollPositionDouble ());
333 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble()); 333 EXPECT_POINT_EQ(DoublePoint(0, 150), layoutViewport.scrollPositionDouble());
334 } 334 }
335 335
336 // Test that the scrollIntoView correctly scrolls the main frame 336 // Test that the scrollIntoView correctly scrolls the main frame
337 // and pinch viewports such that the given rect is centered in the viewport. 337 // and pinch viewports such that the given rect is centered in the viewport.
338 TEST_F(RootFrameViewportTest, ScrollIntoView) 338 TEST_F(RootFrameViewportTest, ScrollIntoView)
339 { 339 {
340 IntSize viewportSize(100, 150); 340 IntSize viewportSize(100, 150);
341 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300)); 341 RootFrameViewStub layoutViewport(viewportSize, IntSize(200, 300));
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 ScrollResult result = rootFrameViewport->handleWheel(wheelEvent); 494 ScrollResult result = rootFrameViewport->handleWheel(wheelEvent);
495 495
496 EXPECT_TRUE(result.didScroll); 496 EXPECT_TRUE(result.didScroll);
497 EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport.scrollPositionDouble()); 497 EXPECT_POINT_EQ(DoublePoint(50, 50), visualViewport.scrollPositionDouble());
498 EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport.scrollPositionDouble() ); 498 EXPECT_POINT_EQ(DoublePoint(100, 200), layoutViewport.scrollPositionDouble() );
499 EXPECT_EQ(-350, result.unusedScrollDeltaX); 499 EXPECT_EQ(-350, result.unusedScrollDeltaX);
500 EXPECT_EQ(-250, result.unusedScrollDeltaY); 500 EXPECT_EQ(-250, result.unusedScrollDeltaY);
501 } 501 }
502 502
503 } // namespace blink 503 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698