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

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

Issue 610423004: Preserve fractional scroll offset for JS scrolling API (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1404 } 1404 }
1405 1405
1406 LayoutRect bounds = element->boundingBox(); 1406 LayoutRect bounds = element->boundingBox();
1407 int centeringOffsetX = (targetRect.width() - bounds.width()) / 2; 1407 int centeringOffsetX = (targetRect.width() - bounds.width()) / 2;
1408 int centeringOffsetY = (targetRect.height() - bounds.height()) / 2; 1408 int centeringOffsetY = (targetRect.height() - bounds.height()) / 2;
1409 1409
1410 IntPoint targetOffset( 1410 IntPoint targetOffset(
1411 bounds.x() - centeringOffsetX - targetRect.x(), 1411 bounds.x() - centeringOffsetX - targetRect.x(),
1412 bounds.y() - centeringOffsetY - targetRect.y()); 1412 bounds.y() - centeringOffsetY - targetRect.y());
1413 1413
1414 setScrollPosition(targetOffset); 1414 setScrollPosition(DoublePoint(targetOffset));
1415 1415
1416 if (pinchVirtualViewportEnabled) { 1416 if (pinchVirtualViewportEnabled) {
1417 IntPoint remainder = IntPoint(targetOffset - scrollPosition()); 1417 IntPoint remainder = IntPoint(targetOffset - scrollPosition());
1418 m_frame->page()->frameHost().pinchViewport().move(remainder); 1418 m_frame->page()->frameHost().pinchViewport().move(remainder);
1419 } 1419 }
1420 } 1420 }
1421 1421
1422 void FrameView::setScrollPosition(const IntPoint& scrollPoint, ScrollBehavior sc rollBehavior) 1422 void FrameView::setScrollPosition(const DoublePoint& scrollPoint, ScrollBehavior scrollBehavior)
1423 { 1423 {
1424 cancelProgrammaticScrollAnimation(); 1424 cancelProgrammaticScrollAnimation();
1425 TemporaryChange<bool> changeInProgrammaticScroll(m_inProgrammaticScroll, tru e); 1425 TemporaryChange<bool> changeInProgrammaticScroll(m_inProgrammaticScroll, tru e);
1426 m_maintainScrollPositionAnchor = nullptr; 1426 m_maintainScrollPositionAnchor = nullptr;
1427 1427
1428 IntPoint newScrollPosition = adjustScrollPositionWithinRange(scrollPoint); 1428 DoublePoint newScrollPosition = adjustScrollPositionWithinRange(scrollPoint) ;
1429 1429
1430 if (newScrollPosition == scrollPosition()) 1430 if (newScrollPosition == scrollPositionDouble())
1431 return; 1431 return;
1432 1432
1433 if (scrollBehavior == ScrollBehaviorAuto) { 1433 if (scrollBehavior == ScrollBehaviorAuto) {
1434 RenderObject* renderer = m_frame->document()->documentElement() ? m_fram e->document()->documentElement()->renderer() : 0; 1434 RenderObject* renderer = m_frame->document()->documentElement() ? m_fram e->document()->documentElement()->renderer() : 0;
1435 if (renderer) 1435 if (renderer)
1436 scrollBehavior = renderer->style()->scrollBehavior(); 1436 scrollBehavior = renderer->style()->scrollBehavior();
1437 else 1437 else
1438 scrollBehavior = ScrollBehaviorInstant; 1438 scrollBehavior = ScrollBehaviorInstant;
1439 } 1439 }
1440 ScrollView::setScrollPosition(newScrollPosition, scrollBehavior); 1440 ScrollView::setScrollPosition(newScrollPosition, scrollBehavior);
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
2117 return IntRect(); 2117 return IntRect();
2118 return page->chrome().windowResizerRect(); 2118 return page->chrome().windowResizerRect();
2119 } 2119 }
2120 2120
2121 void FrameView::setVisibleContentScaleFactor(float visibleContentScaleFactor) 2121 void FrameView::setVisibleContentScaleFactor(float visibleContentScaleFactor)
2122 { 2122 {
2123 if (m_visibleContentScaleFactor == visibleContentScaleFactor) 2123 if (m_visibleContentScaleFactor == visibleContentScaleFactor)
2124 return; 2124 return;
2125 2125
2126 m_visibleContentScaleFactor = visibleContentScaleFactor; 2126 m_visibleContentScaleFactor = visibleContentScaleFactor;
2127 updateScrollbars(scrollOffset()); 2127 updateScrollbars(scrollOffsetDouble());
2128 } 2128 }
2129 2129
2130 void FrameView::setInputEventsTransformForEmulation(const IntSize& offset, float contentScaleFactor) 2130 void FrameView::setInputEventsTransformForEmulation(const IntSize& offset, float contentScaleFactor)
2131 { 2131 {
2132 m_inputEventsOffsetForEmulation = offset; 2132 m_inputEventsOffsetForEmulation = offset;
2133 m_inputEventsScaleFactorForEmulation = contentScaleFactor; 2133 m_inputEventsScaleFactorForEmulation = contentScaleFactor;
2134 } 2134 }
2135 2135
2136 IntSize FrameView::inputEventsOffsetForEmulation() const 2136 IntSize FrameView::inputEventsOffsetForEmulation() const
2137 { 2137 {
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after
3031 IntSize visibleSize = expandedIntSize(visibleContentSizeF); 3031 IntSize visibleSize = expandedIntSize(visibleContentSizeF);
3032 3032
3033 IntPoint maximumOffset( 3033 IntPoint maximumOffset(
3034 contentsWidth() - visibleSize.width() - scrollOrigin().x(), 3034 contentsWidth() - visibleSize.width() - scrollOrigin().x(),
3035 contentsHeight() - visibleSize.height() - scrollOrigin().y()); 3035 contentsHeight() - visibleSize.height() - scrollOrigin().y());
3036 maximumOffset.clampNegativeToZero(); 3036 maximumOffset.clampNegativeToZero();
3037 return maximumOffset; 3037 return maximumOffset;
3038 } 3038 }
3039 3039
3040 } // namespace blink 3040 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698