OLD | NEW |
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 1624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1635 if (!layoutViewItem.isNull() && layoutViewItem.needsLayout()) | 1635 if (!layoutViewItem.isNull() && layoutViewItem.needsLayout()) |
1636 layout(); | 1636 layout(); |
1637 else | 1637 else |
1638 scrollToFragmentAnchor(); | 1638 scrollToFragmentAnchor(); |
1639 } | 1639 } |
1640 | 1640 |
1641 void FrameView::clearFragmentAnchor() { | 1641 void FrameView::clearFragmentAnchor() { |
1642 m_fragmentAnchor = nullptr; | 1642 m_fragmentAnchor = nullptr; |
1643 } | 1643 } |
1644 | 1644 |
1645 void FrameView::setScrollPosition(const DoublePoint& scrollPoint, | |
1646 ScrollType scrollType, | |
1647 ScrollBehavior scrollBehavior) { | |
1648 DoublePoint newScrollPosition = clampScrollPosition(scrollPoint); | |
1649 if (newScrollPosition == scrollPositionDouble()) | |
1650 return; | |
1651 | |
1652 if (scrollBehavior == ScrollBehaviorAuto) | |
1653 scrollBehavior = scrollBehaviorStyle(); | |
1654 | |
1655 ScrollableArea::setScrollPosition(newScrollPosition, scrollType, | |
1656 scrollBehavior); | |
1657 } | |
1658 | |
1659 void FrameView::didUpdateElasticOverscroll() { | 1645 void FrameView::didUpdateElasticOverscroll() { |
1660 Page* page = frame().page(); | 1646 Page* page = frame().page(); |
1661 if (!page) | 1647 if (!page) |
1662 return; | 1648 return; |
1663 FloatSize elasticOverscroll = page->chromeClient().elasticOverscroll(); | 1649 FloatSize elasticOverscroll = page->chromeClient().elasticOverscroll(); |
1664 if (m_horizontalScrollbar) { | 1650 if (m_horizontalScrollbar) { |
1665 float delta = | 1651 float delta = |
1666 elasticOverscroll.width() - m_horizontalScrollbar->elasticOverscroll(); | 1652 elasticOverscroll.width() - m_horizontalScrollbar->elasticOverscroll(); |
1667 if (delta != 0) { | 1653 if (delta != 0) { |
1668 m_horizontalScrollbar->setElasticOverscroll(elasticOverscroll.width()); | 1654 m_horizontalScrollbar->setElasticOverscroll(elasticOverscroll.width()); |
(...skipping 24 matching lines...) Expand all Loading... |
1693 | 1679 |
1694 setLayoutSizeInternal(size); | 1680 setLayoutSizeInternal(size); |
1695 } | 1681 } |
1696 | 1682 |
1697 void FrameView::didScrollTimerFired(TimerBase*) { | 1683 void FrameView::didScrollTimerFired(TimerBase*) { |
1698 if (m_frame->document() && !m_frame->document()->layoutViewItem().isNull()) | 1684 if (m_frame->document() && !m_frame->document()->layoutViewItem().isNull()) |
1699 m_frame->document()->fetcher()->updateAllImageResourcePriorities(); | 1685 m_frame->document()->fetcher()->updateAllImageResourcePriorities(); |
1700 } | 1686 } |
1701 | 1687 |
1702 void FrameView::updateLayersAndCompositingAfterScrollIfNeeded( | 1688 void FrameView::updateLayersAndCompositingAfterScrollIfNeeded( |
1703 const DoubleSize& scrollDelta) { | 1689 const ScrollOffset& scrollDelta) { |
1704 // Nothing to do after scrolling if there are no fixed position elements. | 1690 // Nothing to do after scrolling if there are no fixed position elements. |
1705 if (!hasViewportConstrainedObjects()) | 1691 if (!hasViewportConstrainedObjects()) |
1706 return; | 1692 return; |
1707 | 1693 |
1708 // Update sticky position objects which are stuck to the viewport. | 1694 // Update sticky position objects which are stuck to the viewport. |
1709 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects) { | 1695 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects) { |
1710 LayoutObject* layoutObject = viewportConstrainedObject; | 1696 LayoutObject* layoutObject = viewportConstrainedObject; |
1711 PaintLayer* layer = toLayoutBoxModelObject(layoutObject)->layer(); | 1697 PaintLayer* layer = toLayoutBoxModelObject(layoutObject)->layer(); |
1712 if (layoutObject->style()->position() == StickyPosition) { | 1698 if (layoutObject->style()->position() == StickyPosition) { |
1713 // TODO(skobes): Resolve circular dependency between scroll offset and | 1699 // TODO(skobes): Resolve circular dependency between scroll offset and |
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3068 overflow); // This is how we clip in case we overflow again. | 3054 overflow); // This is how we clip in case we overflow again. |
3069 } | 3055 } |
3070 } | 3056 } |
3071 | 3057 |
3072 adjustViewSizeAndLayout(); | 3058 adjustViewSizeAndLayout(); |
3073 } | 3059 } |
3074 | 3060 |
3075 IntRect FrameView::convertFromLayoutObject( | 3061 IntRect FrameView::convertFromLayoutObject( |
3076 const LayoutObject& layoutObject, | 3062 const LayoutObject& layoutObject, |
3077 const IntRect& layoutObjectRect) const { | 3063 const IntRect& layoutObjectRect) const { |
3078 IntRect rect = pixelSnappedIntRect(enclosingLayoutRect( | 3064 // Convert from page ("absolute") to FrameView coordinates. |
| 3065 LayoutRect rect = enclosingLayoutRect( |
3079 layoutObject.localToAbsoluteQuad(FloatRect(layoutObjectRect)) | 3066 layoutObject.localToAbsoluteQuad(FloatRect(layoutObjectRect)) |
3080 .boundingBox())); | 3067 .boundingBox()); |
3081 | 3068 rect.move(LayoutSize(-scrollOffset())); |
3082 // Convert from page ("absolute") to FrameView coordinates. | 3069 return pixelSnappedIntRect(rect); |
3083 rect.moveBy(-scrollPosition()); | |
3084 | |
3085 return rect; | |
3086 } | 3070 } |
3087 | 3071 |
3088 IntRect FrameView::convertToLayoutObject(const LayoutObject& layoutObject, | 3072 IntRect FrameView::convertToLayoutObject(const LayoutObject& layoutObject, |
3089 const IntRect& frameRect) const { | 3073 const IntRect& frameRect) const { |
3090 IntRect rectInContent = frameToContents(frameRect); | 3074 IntRect rectInContent = frameToContents(frameRect); |
3091 | 3075 |
3092 // Convert from FrameView coords into page ("absolute") coordinates. | 3076 // Convert from FrameView coords into page ("absolute") coordinates. |
3093 rectInContent.moveBy(scrollPosition()); | 3077 rectInContent.move(scrollOffsetInt()); |
3094 | 3078 |
3095 // FIXME: we don't have a way to map an absolute rect down to a local quad, so
just | 3079 // FIXME: we don't have a way to map an absolute rect down to a local quad, so
just |
3096 // move the rect for now. | 3080 // move the rect for now. |
3097 rectInContent.setLocation(roundedIntPoint( | 3081 rectInContent.setLocation(roundedIntPoint( |
3098 layoutObject.absoluteToLocal(rectInContent.location(), UseTransforms))); | 3082 layoutObject.absoluteToLocal(rectInContent.location(), UseTransforms))); |
3099 return rectInContent; | 3083 return rectInContent; |
3100 } | 3084 } |
3101 | 3085 |
3102 IntPoint FrameView::convertFromLayoutObject( | 3086 IntPoint FrameView::convertFromLayoutObject( |
3103 const LayoutObject& layoutObject, | 3087 const LayoutObject& layoutObject, |
3104 const IntPoint& layoutObjectPoint) const { | 3088 const IntPoint& layoutObjectPoint) const { |
3105 IntPoint point = roundedIntPoint( | 3089 IntPoint point = roundedIntPoint( |
3106 layoutObject.localToAbsolute(layoutObjectPoint, UseTransforms)); | 3090 layoutObject.localToAbsolute(layoutObjectPoint, UseTransforms)); |
3107 | 3091 |
3108 // Convert from page ("absolute") to FrameView coordinates. | 3092 // Convert from page ("absolute") to FrameView coordinates. |
3109 point.moveBy(-scrollPosition()); | 3093 point.move(-scrollOffsetInt()); |
3110 return point; | 3094 return point; |
3111 } | 3095 } |
3112 | 3096 |
3113 IntPoint FrameView::convertToLayoutObject(const LayoutObject& layoutObject, | 3097 IntPoint FrameView::convertToLayoutObject(const LayoutObject& layoutObject, |
3114 const IntPoint& framePoint) const { | 3098 const IntPoint& framePoint) const { |
3115 IntPoint point = framePoint; | 3099 IntPoint point = framePoint; |
3116 | 3100 |
3117 // Convert from FrameView coords into page ("absolute") coordinates. | 3101 // Convert from FrameView coords into page ("absolute") coordinates. |
3118 point += IntSize(scrollX(), scrollY()); | 3102 point += IntSize(scrollX(), scrollY()); |
3119 | 3103 |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3380 | 3364 |
3381 void FrameView::didAddScrollbar(Scrollbar& scrollbar, | 3365 void FrameView::didAddScrollbar(Scrollbar& scrollbar, |
3382 ScrollbarOrientation orientation) { | 3366 ScrollbarOrientation orientation) { |
3383 ScrollableArea::didAddScrollbar(scrollbar, orientation); | 3367 ScrollableArea::didAddScrollbar(scrollbar, orientation); |
3384 } | 3368 } |
3385 | 3369 |
3386 void FrameView::setTopControlsViewportAdjustment(float adjustment) { | 3370 void FrameView::setTopControlsViewportAdjustment(float adjustment) { |
3387 m_topControlsViewportAdjustment = adjustment; | 3371 m_topControlsViewportAdjustment = adjustment; |
3388 } | 3372 } |
3389 | 3373 |
3390 IntPoint FrameView::maximumScrollPosition() const { | 3374 IntSize FrameView::maximumScrollOffsetInt() const { |
3391 // Make the same calculation as in CC's LayerImpl::MaxScrollOffset() | 3375 // Make the same calculation as in CC's LayerImpl::MaxScrollOffset() |
3392 // FIXME: We probably shouldn't be storing the bounds in a float. crbug.com/42
2331. | 3376 // FIXME: We probably shouldn't be storing the bounds in a float. crbug.com/42
2331. |
3393 IntSize visibleSize = | 3377 IntSize visibleSize = |
3394 visibleContentSize(ExcludeScrollbars) + topControlsSize(); | 3378 visibleContentSize(ExcludeScrollbars) + topControlsSize(); |
3395 IntSize contentBounds = contentsSize(); | 3379 IntSize contentBounds = contentsSize(); |
3396 IntPoint maximumPosition = -scrollOrigin() + (contentBounds - visibleSize); | 3380 IntSize maximumOffset = |
3397 return maximumPosition.expandedTo(minimumScrollPosition()); | 3381 toIntSize(-scrollOrigin() + (contentBounds - visibleSize)); |
| 3382 return maximumOffset.expandedTo(minimumScrollOffsetInt()); |
3398 } | 3383 } |
3399 | 3384 |
3400 void FrameView::addChild(Widget* child) { | 3385 void FrameView::addChild(Widget* child) { |
3401 ASSERT(child != this && !child->parent()); | 3386 ASSERT(child != this && !child->parent()); |
3402 child->setParent(this); | 3387 child->setParent(this); |
3403 m_children.add(child); | 3388 m_children.add(child); |
3404 } | 3389 } |
3405 | 3390 |
3406 void FrameView::setHasHorizontalScrollbar(bool hasBar) { | 3391 void FrameView::setHasHorizontalScrollbar(bool hasBar) { |
3407 if (m_frame->settings() && m_frame->settings()->hideScrollbars()) | 3392 if (m_frame->settings() && m_frame->settings()->hideScrollbars()) |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3504 | 3489 |
3505 IntSize FrameView::visibleContentSize( | 3490 IntSize FrameView::visibleContentSize( |
3506 IncludeScrollbarsInRect scrollbarInclusion) const { | 3491 IncludeScrollbarsInRect scrollbarInclusion) const { |
3507 return scrollbarInclusion == ExcludeScrollbars | 3492 return scrollbarInclusion == ExcludeScrollbars |
3508 ? excludeScrollbars(frameRect().size()) | 3493 ? excludeScrollbars(frameRect().size()) |
3509 : frameRect().size(); | 3494 : frameRect().size(); |
3510 } | 3495 } |
3511 | 3496 |
3512 IntRect FrameView::visibleContentRect( | 3497 IntRect FrameView::visibleContentRect( |
3513 IncludeScrollbarsInRect scrollbarInclusion) const { | 3498 IncludeScrollbarsInRect scrollbarInclusion) const { |
3514 return IntRect(flooredIntPoint(m_scrollPosition), | 3499 return IntRect(IntPoint(flooredIntSize(m_scrollOffset)), |
3515 visibleContentSize(scrollbarInclusion)); | 3500 visibleContentSize(scrollbarInclusion)); |
3516 } | 3501 } |
3517 | 3502 |
3518 IntSize FrameView::contentsSize() const { | 3503 IntSize FrameView::contentsSize() const { |
3519 return m_contentsSize; | 3504 return m_contentsSize; |
3520 } | 3505 } |
3521 | 3506 |
3522 void FrameView::clipPaintRect(FloatRect* paintRect) const { | 3507 void FrameView::clipPaintRect(FloatRect* paintRect) const { |
3523 // Paint the whole rect if "mainFrameClipsContent" is false, meaning that | 3508 // Paint the whole rect if "mainFrameClipsContent" is false, meaning that |
3524 // WebPreferences::record_whole_document is true. | 3509 // WebPreferences::record_whole_document is true. |
3525 if (!m_frame->settings()->mainFrameClipsContent()) | 3510 if (!m_frame->settings()->mainFrameClipsContent()) |
3526 return; | 3511 return; |
3527 | 3512 |
3528 paintRect->intersect( | 3513 paintRect->intersect( |
3529 page()->chromeClient().visibleContentRectForPainting().value_or( | 3514 page()->chromeClient().visibleContentRectForPainting().value_or( |
3530 visibleContentRect())); | 3515 visibleContentRect())); |
3531 } | 3516 } |
3532 | 3517 |
3533 IntPoint FrameView::minimumScrollPosition() const { | 3518 IntSize FrameView::minimumScrollOffsetInt() const { |
3534 return IntPoint(-scrollOrigin().x(), -scrollOrigin().y()); | 3519 return IntSize(-scrollOrigin().x(), -scrollOrigin().y()); |
3535 } | 3520 } |
3536 | 3521 |
3537 void FrameView::adjustScrollbarOpacity() { | 3522 void FrameView::adjustScrollbarOpacity() { |
3538 if (m_horizontalScrollbar && layerForHorizontalScrollbar()) { | 3523 if (m_horizontalScrollbar && layerForHorizontalScrollbar()) { |
3539 bool isOpaqueScrollbar = !m_horizontalScrollbar->isOverlayScrollbar(); | 3524 bool isOpaqueScrollbar = !m_horizontalScrollbar->isOverlayScrollbar(); |
3540 layerForHorizontalScrollbar()->setContentsOpaque(isOpaqueScrollbar); | 3525 layerForHorizontalScrollbar()->setContentsOpaque(isOpaqueScrollbar); |
3541 } | 3526 } |
3542 if (m_verticalScrollbar && layerForVerticalScrollbar()) { | 3527 if (m_verticalScrollbar && layerForVerticalScrollbar()) { |
3543 bool isOpaqueScrollbar = !m_verticalScrollbar->isOverlayScrollbar(); | 3528 bool isOpaqueScrollbar = !m_verticalScrollbar->isOverlayScrollbar(); |
3544 layerForVerticalScrollbar()->setContentsOpaque(isOpaqueScrollbar); | 3529 layerForVerticalScrollbar()->setContentsOpaque(isOpaqueScrollbar); |
(...skipping 10 matching lines...) Expand all Loading... |
3555 if (!scrollbar) { | 3540 if (!scrollbar) { |
3556 IntSize scrollSize = m_contentsSize - visibleContentRect().size(); | 3541 IntSize scrollSize = m_contentsSize - visibleContentRect().size(); |
3557 scrollSize.clampNegativeToZero(); | 3542 scrollSize.clampNegativeToZero(); |
3558 return orientation == HorizontalScrollbar ? scrollSize.width() | 3543 return orientation == HorizontalScrollbar ? scrollSize.width() |
3559 : scrollSize.height(); | 3544 : scrollSize.height(); |
3560 } | 3545 } |
3561 | 3546 |
3562 return scrollbar->totalSize() - scrollbar->visibleSize(); | 3547 return scrollbar->totalSize() - scrollbar->visibleSize(); |
3563 } | 3548 } |
3564 | 3549 |
3565 void FrameView::setScrollOffset(const DoublePoint& offset, | 3550 void FrameView::updateScrollOffset(const ScrollOffset& offset, |
3566 ScrollType scrollType) { | 3551 ScrollType scrollType) { |
3567 DoublePoint oldPosition = m_scrollPosition; | 3552 ScrollOffset scrollDelta = offset - m_scrollOffset; |
3568 DoubleSize scrollDelta = offset - oldPosition; | |
3569 if (scrollDelta.isZero()) | 3553 if (scrollDelta.isZero()) |
3570 return; | 3554 return; |
3571 | 3555 |
3572 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 3556 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
3573 // Don't scroll the FrameView! | 3557 // Don't scroll the FrameView! |
3574 ASSERT_NOT_REACHED(); | 3558 ASSERT_NOT_REACHED(); |
3575 } | 3559 } |
3576 | 3560 |
3577 m_scrollPosition = offset; | 3561 m_scrollOffset = offset; |
3578 | 3562 |
3579 if (!scrollbarsSuppressed()) | 3563 if (!scrollbarsSuppressed()) |
3580 m_pendingScrollDelta += scrollDelta; | 3564 m_pendingScrollDelta += scrollDelta; |
3581 | 3565 |
3582 clearFragmentAnchor(); | 3566 clearFragmentAnchor(); |
3583 updateLayersAndCompositingAfterScrollIfNeeded(scrollDelta); | 3567 updateLayersAndCompositingAfterScrollIfNeeded(scrollDelta); |
3584 | 3568 |
3585 Document* document = m_frame->document(); | 3569 Document* document = m_frame->document(); |
3586 document->enqueueScrollEventForNode(document); | 3570 document->enqueueScrollEventForNode(document); |
3587 | 3571 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3823 void FrameView::updateScrollbars() { | 3807 void FrameView::updateScrollbars() { |
3824 m_needsScrollbarsUpdate = false; | 3808 m_needsScrollbarsUpdate = false; |
3825 | 3809 |
3826 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) | 3810 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) |
3827 return; | 3811 return; |
3828 | 3812 |
3829 // Avoid drawing two sets of scrollbars when visual viewport is enabled. | 3813 // Avoid drawing two sets of scrollbars when visual viewport is enabled. |
3830 if (visualViewportSuppliesScrollbars()) { | 3814 if (visualViewportSuppliesScrollbars()) { |
3831 setHasHorizontalScrollbar(false); | 3815 setHasHorizontalScrollbar(false); |
3832 setHasVerticalScrollbar(false); | 3816 setHasVerticalScrollbar(false); |
3833 adjustScrollPositionFromUpdateScrollbars(); | 3817 adjustScrollOffsetFromUpdateScrollbars(); |
3834 return; | 3818 return; |
3835 } | 3819 } |
3836 | 3820 |
3837 if (m_inUpdateScrollbars) | 3821 if (m_inUpdateScrollbars) |
3838 return; | 3822 return; |
3839 InUpdateScrollbarsScope inUpdateScrollbarsScope(this); | 3823 InUpdateScrollbarsScope inUpdateScrollbarsScope(this); |
3840 | 3824 |
3841 bool scrollbarExistenceChanged = false; | 3825 bool scrollbarExistenceChanged = false; |
3842 | 3826 |
3843 if (needsScrollbarReconstruction()) { | 3827 if (needsScrollbarReconstruction()) { |
(...skipping 14 matching lines...) Expand all Loading... |
3858 | 3842 |
3859 updateScrollbarGeometry(); | 3843 updateScrollbarGeometry(); |
3860 | 3844 |
3861 if (scrollbarExistenceChanged) { | 3845 if (scrollbarExistenceChanged) { |
3862 // FIXME: Is frameRectsChanged really necessary here? Have any frame rects c
hanged? | 3846 // FIXME: Is frameRectsChanged really necessary here? Have any frame rects c
hanged? |
3863 frameRectsChanged(); | 3847 frameRectsChanged(); |
3864 positionScrollbarLayers(); | 3848 positionScrollbarLayers(); |
3865 updateScrollCorner(); | 3849 updateScrollCorner(); |
3866 } | 3850 } |
3867 | 3851 |
3868 adjustScrollPositionFromUpdateScrollbars(); | 3852 adjustScrollOffsetFromUpdateScrollbars(); |
3869 } | 3853 } |
3870 | 3854 |
3871 void FrameView::adjustScrollPositionFromUpdateScrollbars() { | 3855 void FrameView::adjustScrollOffsetFromUpdateScrollbars() { |
3872 DoublePoint clamped = clampScrollPosition(scrollPositionDouble()); | 3856 ScrollOffset clamped = clampScrollOffset(scrollOffset()); |
3873 // Restore before clamping because clamping clears the scroll anchor. | 3857 // Restore before clamping because clamping clears the scroll anchor. |
3874 // TODO(ymalik): This same logic exists in PaintLayerScrollableArea. | 3858 // TODO(ymalik): This same logic exists in PaintLayerScrollableArea. |
3875 // Remove when root-layer-scrolls is enabled. | 3859 // Remove when root-layer-scrolls is enabled. |
3876 if (clamped != scrollPositionDouble() && shouldPerformScrollAnchoring()) { | 3860 if (clamped != scrollOffset() && shouldPerformScrollAnchoring()) { |
3877 m_scrollAnchor.restore(); | 3861 m_scrollAnchor.restore(); |
3878 clamped = clampScrollPosition(scrollPositionDouble()); | 3862 clamped = clampScrollOffset(scrollOffset()); |
3879 } | 3863 } |
3880 if (clamped != scrollPositionDouble() || scrollOriginChanged()) { | 3864 if (clamped != scrollOffset() || scrollOriginChanged()) { |
3881 ScrollableArea::setScrollPosition(clamped, ProgrammaticScroll); | 3865 ScrollableArea::setScrollOffset(clamped, ProgrammaticScroll); |
3882 resetScrollOriginChanged(); | 3866 resetScrollOriginChanged(); |
3883 } | 3867 } |
3884 } | 3868 } |
3885 | 3869 |
3886 void FrameView::scrollContentsIfNeeded() { | 3870 void FrameView::scrollContentsIfNeeded() { |
3887 if (m_pendingScrollDelta.isZero()) | 3871 if (m_pendingScrollDelta.isZero()) |
3888 return; | 3872 return; |
3889 DoubleSize scrollDelta = m_pendingScrollDelta; | 3873 ScrollOffset scrollDelta = m_pendingScrollDelta; |
3890 m_pendingScrollDelta = DoubleSize(); | 3874 m_pendingScrollDelta = ScrollOffset(); |
3891 // FIXME: Change scrollContents() to take DoubleSize. crbug.com/414283. | 3875 // FIXME: Change scrollContents() to take DoubleSize. crbug.com/414283. |
3892 scrollContents(flooredIntSize(scrollDelta)); | 3876 scrollContents(flooredIntSize(scrollDelta)); |
3893 } | 3877 } |
3894 | 3878 |
3895 void FrameView::scrollContents(const IntSize& scrollDelta) { | 3879 void FrameView::scrollContents(const IntSize& scrollDelta) { |
3896 HostWindow* window = getHostWindow(); | 3880 HostWindow* window = getHostWindow(); |
3897 if (!window) | 3881 if (!window) |
3898 return; | 3882 return; |
3899 | 3883 |
3900 TRACE_EVENT0("blink", "FrameView::scrollContents"); | 3884 TRACE_EVENT0("blink", "FrameView::scrollContents"); |
3901 | 3885 |
3902 if (!scrollContentsFastPath(-scrollDelta)) | 3886 if (!scrollContentsFastPath(-scrollDelta)) |
3903 scrollContentsSlowPath(); | 3887 scrollContentsSlowPath(); |
3904 | 3888 |
3905 // This call will move children with native widgets (plugins) and invalidate t
hem as well. | 3889 // This call will move children with native widgets (plugins) and invalidate t
hem as well. |
3906 frameRectsChanged(); | 3890 frameRectsChanged(); |
3907 } | 3891 } |
3908 | 3892 |
3909 IntPoint FrameView::contentsToFrame(const IntPoint& pointInContentSpace) const { | 3893 IntPoint FrameView::contentsToFrame(const IntPoint& pointInContentSpace) const { |
3910 return pointInContentSpace - scrollOffset(); | 3894 return pointInContentSpace - scrollOffsetInt(); |
3911 } | 3895 } |
3912 | 3896 |
3913 IntRect FrameView::contentsToFrame(const IntRect& rectInContentSpace) const { | 3897 IntRect FrameView::contentsToFrame(const IntRect& rectInContentSpace) const { |
3914 return IntRect(contentsToFrame(rectInContentSpace.location()), | 3898 return IntRect(contentsToFrame(rectInContentSpace.location()), |
3915 rectInContentSpace.size()); | 3899 rectInContentSpace.size()); |
3916 } | 3900 } |
3917 | 3901 |
3918 FloatPoint FrameView::frameToContents(const FloatPoint& pointInFrame) const { | 3902 FloatPoint FrameView::frameToContents(const FloatPoint& pointInFrame) const { |
3919 return pointInFrame + scrollOffset(); | 3903 return pointInFrame + scrollOffset(); |
3920 } | 3904 } |
3921 | 3905 |
3922 IntPoint FrameView::frameToContents(const IntPoint& pointInFrame) const { | 3906 IntPoint FrameView::frameToContents(const IntPoint& pointInFrame) const { |
3923 return pointInFrame + scrollOffset(); | 3907 return pointInFrame + scrollOffsetInt(); |
3924 } | 3908 } |
3925 | 3909 |
3926 IntRect FrameView::frameToContents(const IntRect& rectInFrame) const { | 3910 IntRect FrameView::frameToContents(const IntRect& rectInFrame) const { |
3927 return IntRect(frameToContents(rectInFrame.location()), rectInFrame.size()); | 3911 return IntRect(frameToContents(rectInFrame.location()), rectInFrame.size()); |
3928 } | 3912 } |
3929 | 3913 |
3930 IntPoint FrameView::rootFrameToContents(const IntPoint& rootFramePoint) const { | 3914 IntPoint FrameView::rootFrameToContents(const IntPoint& rootFramePoint) const { |
3931 IntPoint framePoint = convertFromRootFrame(rootFramePoint); | 3915 IntPoint framePoint = convertFromRootFrame(rootFramePoint); |
3932 return frameToContents(framePoint); | 3916 return frameToContents(framePoint); |
3933 } | 3917 } |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4100 return this; | 4084 return this; |
4101 } | 4085 } |
4102 | 4086 |
4103 LayoutRect FrameView::scrollIntoView(const LayoutRect& rectInContent, | 4087 LayoutRect FrameView::scrollIntoView(const LayoutRect& rectInContent, |
4104 const ScrollAlignment& alignX, | 4088 const ScrollAlignment& alignX, |
4105 const ScrollAlignment& alignY, | 4089 const ScrollAlignment& alignY, |
4106 ScrollType scrollType) { | 4090 ScrollType scrollType) { |
4107 LayoutRect viewRect(visibleContentRect()); | 4091 LayoutRect viewRect(visibleContentRect()); |
4108 LayoutRect exposeRect = | 4092 LayoutRect exposeRect = |
4109 ScrollAlignment::getRectToExpose(viewRect, rectInContent, alignX, alignY); | 4093 ScrollAlignment::getRectToExpose(viewRect, rectInContent, alignX, alignY); |
4110 if (exposeRect != viewRect) | 4094 if (exposeRect != viewRect) { |
4111 setScrollPosition(DoublePoint(exposeRect.x(), exposeRect.y()), scrollType); | 4095 setScrollOffset( |
| 4096 ScrollOffset(exposeRect.x().toFloat(), exposeRect.y().toFloat()), |
| 4097 scrollType); |
| 4098 } |
4112 | 4099 |
4113 // Scrolling the FrameView cannot change the input rect's location relative to
the document. | 4100 // Scrolling the FrameView cannot change the input rect's location relative to
the document. |
4114 return rectInContent; | 4101 return rectInContent; |
4115 } | 4102 } |
4116 | 4103 |
4117 IntRect FrameView::scrollCornerRect() const { | 4104 IntRect FrameView::scrollCornerRect() const { |
4118 IntRect cornerRect; | 4105 IntRect cornerRect; |
4119 | 4106 |
4120 if (hasOverlayScrollbars()) | 4107 if (hasOverlayScrollbars()) |
4121 return cornerRect; | 4108 return cornerRect; |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4516 } | 4503 } |
4517 | 4504 |
4518 bool FrameView::canThrottleRendering() const { | 4505 bool FrameView::canThrottleRendering() const { |
4519 if (!RuntimeEnabledFeatures::renderingPipelineThrottlingEnabled()) | 4506 if (!RuntimeEnabledFeatures::renderingPipelineThrottlingEnabled()) |
4520 return false; | 4507 return false; |
4521 return m_subtreeThrottled || | 4508 return m_subtreeThrottled || |
4522 (m_hiddenForThrottling && m_crossOriginForThrottling); | 4509 (m_hiddenForThrottling && m_crossOriginForThrottling); |
4523 } | 4510 } |
4524 | 4511 |
4525 } // namespace blink | 4512 } // namespace blink |
OLD | NEW |