| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights |
| 3 * reserved. | 3 * reserved. |
| 4 * | 4 * |
| 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 6 * | 6 * |
| 7 * Other contributors: | 7 * Other contributors: |
| 8 * Robert O'Callahan <roc+@cs.cmu.edu> | 8 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 9 * David Baron <dbaron@fas.harvard.edu> | 9 * David Baron <dbaron@fas.harvard.edu> |
| 10 * Christian Biesinger <cbiesinger@gmail.com> | 10 * Christian Biesinger <cbiesinger@gmail.com> |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 frame->eventHandler().resizeScrollableAreaDestroyed(); | 137 frame->eventHandler().resizeScrollableAreaDestroyed(); |
| 138 } | 138 } |
| 139 | 139 |
| 140 if (LocalFrame* frame = box().frame()) { | 140 if (LocalFrame* frame = box().frame()) { |
| 141 if (FrameView* frameView = frame->view()) { | 141 if (FrameView* frameView = frame->view()) { |
| 142 frameView->removeScrollableArea(this); | 142 frameView->removeScrollableArea(this); |
| 143 frameView->removeAnimatingScrollableArea(this); | 143 frameView->removeAnimatingScrollableArea(this); |
| 144 } | 144 } |
| 145 } | 145 } |
| 146 | 146 |
| 147 if (box().frame() && box().frame()->page()) { | 147 if (ScrollingCoordinator* scrollingCoordinator = getScrollingCoordinator()) |
| 148 if (ScrollingCoordinator* scrollingCoordinator = | 148 scrollingCoordinator->willDestroyScrollableArea(this); |
| 149 box().frame()->page()->scrollingCoordinator()) | |
| 150 scrollingCoordinator->willDestroyScrollableArea(this); | |
| 151 } | |
| 152 | 149 |
| 153 if (!box().documentBeingDestroyed()) { | 150 if (!box().documentBeingDestroyed()) { |
| 154 Node* node = box().node(); | 151 Node* node = box().node(); |
| 155 // FIXME: Make setSavedLayerScrollOffset take DoubleSize. crbug.com/414283. | 152 // FIXME: Make setSavedLayerScrollOffset take DoubleSize. crbug.com/414283. |
| 156 if (node && node->isElementNode()) | 153 if (node && node->isElementNode()) |
| 157 toElement(node)->setSavedLayerScrollOffset(m_scrollOffset); | 154 toElement(node)->setSavedLayerScrollOffset(m_scrollOffset); |
| 158 } | 155 } |
| 159 | 156 |
| 160 if (LocalFrame* frame = box().frame()) { | 157 if (LocalFrame* frame = box().frame()) { |
| 161 if (FrameView* frameView = frame->view()) | 158 if (FrameView* frameView = frame->view()) |
| (...skipping 1526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1688 layer()->compositedLayerMapping()->setNeedsGraphicsLayerUpdate( | 1685 layer()->compositedLayerMapping()->setNeedsGraphicsLayerUpdate( |
| 1689 GraphicsLayerUpdateSubtree); | 1686 GraphicsLayerUpdateSubtree); |
| 1690 compositor->setNeedsCompositingUpdate( | 1687 compositor->setNeedsCompositingUpdate( |
| 1691 CompositingUpdateAfterGeometryChange); | 1688 CompositingUpdateAfterGeometryChange); |
| 1692 } else { | 1689 } else { |
| 1693 layer()->setNeedsCompositingInputsUpdate(); | 1690 layer()->setNeedsCompositingInputsUpdate(); |
| 1694 } | 1691 } |
| 1695 } | 1692 } |
| 1696 } | 1693 } |
| 1697 | 1694 |
| 1695 ScrollingCoordinator* PaintLayerScrollableArea::getScrollingCoordinator() |
| 1696 const { |
| 1697 LocalFrame* frame = box().frame(); |
| 1698 if (!frame) |
| 1699 return nullptr; |
| 1700 |
| 1701 Page* page = frame->page(); |
| 1702 if (!page) |
| 1703 return nullptr; |
| 1704 |
| 1705 return page->scrollingCoordinator(); |
| 1706 } |
| 1707 |
| 1698 bool PaintLayerScrollableArea::usesCompositedScrolling() const { | 1708 bool PaintLayerScrollableArea::usesCompositedScrolling() const { |
| 1699 // See https://codereview.chromium.org/176633003/ for the tests that fail | 1709 // See https://codereview.chromium.org/176633003/ for the tests that fail |
| 1700 // without this disabler. | 1710 // without this disabler. |
| 1701 DisableCompositingQueryAsserts disabler; | 1711 DisableCompositingQueryAsserts disabler; |
| 1702 return layer()->hasCompositedLayerMapping() && | 1712 return layer()->hasCompositedLayerMapping() && |
| 1703 layer()->compositedLayerMapping()->scrollingLayer(); | 1713 layer()->compositedLayerMapping()->scrollingLayer(); |
| 1704 } | 1714 } |
| 1705 | 1715 |
| 1706 bool PaintLayerScrollableArea::shouldScrollOnMainThread() const { | 1716 bool PaintLayerScrollableArea::shouldScrollOnMainThread() const { |
| 1707 if (LocalFrame* frame = box().frame()) { | 1717 if (ScrollingCoordinator* scrollingCoordinator = getScrollingCoordinator()) { |
| 1708 if (Page* page = frame->page()) { | 1718 if (scrollingCoordinator->shouldUpdateScrollLayerPositionOnMainThread()) |
| 1709 if (page->scrollingCoordinator() | 1719 return true; |
| 1710 ->shouldUpdateScrollLayerPositionOnMainThread()) | |
| 1711 return true; | |
| 1712 } | |
| 1713 } | 1720 } |
| 1714 return ScrollableArea::shouldScrollOnMainThread(); | 1721 return ScrollableArea::shouldScrollOnMainThread(); |
| 1715 } | 1722 } |
| 1716 | 1723 |
| 1717 static bool layerNeedsCompositedScrolling( | 1724 static bool layerNeedsCompositedScrolling( |
| 1718 PaintLayerScrollableArea::LCDTextMode mode, | 1725 PaintLayerScrollableArea::LCDTextMode mode, |
| 1719 const PaintLayer* layer) { | 1726 const PaintLayer* layer) { |
| 1720 if (!layer->scrollsOverflow()) | 1727 if (!layer->scrollsOverflow()) |
| 1721 return false; | 1728 return false; |
| 1722 | 1729 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1787 | 1794 |
| 1788 Widget* PaintLayerScrollableArea::getWidget() { | 1795 Widget* PaintLayerScrollableArea::getWidget() { |
| 1789 return box().frame()->view(); | 1796 return box().frame()->view(); |
| 1790 } | 1797 } |
| 1791 | 1798 |
| 1792 void PaintLayerScrollableArea::resetRebuildScrollbarLayerFlags() { | 1799 void PaintLayerScrollableArea::resetRebuildScrollbarLayerFlags() { |
| 1793 m_rebuildHorizontalScrollbarLayer = false; | 1800 m_rebuildHorizontalScrollbarLayer = false; |
| 1794 m_rebuildVerticalScrollbarLayer = false; | 1801 m_rebuildVerticalScrollbarLayer = false; |
| 1795 } | 1802 } |
| 1796 | 1803 |
| 1804 CompositorAnimationHost* PaintLayerScrollableArea::compositorAnimationHost() |
| 1805 const { |
| 1806 if (ScrollingCoordinator* coordinator = getScrollingCoordinator()) |
| 1807 return coordinator->compositorAnimationHost(); |
| 1808 |
| 1809 return nullptr; |
| 1810 } |
| 1811 |
| 1797 CompositorAnimationTimeline* | 1812 CompositorAnimationTimeline* |
| 1798 PaintLayerScrollableArea::compositorAnimationTimeline() const { | 1813 PaintLayerScrollableArea::compositorAnimationTimeline() const { |
| 1799 if (LocalFrame* frame = box().frame()) { | 1814 if (ScrollingCoordinator* coordinator = getScrollingCoordinator()) |
| 1800 if (Page* page = frame->page()) | 1815 return coordinator->compositorAnimationTimeline(); |
| 1801 return page->scrollingCoordinator() | 1816 |
| 1802 ? page->scrollingCoordinator()->compositorAnimationTimeline() | |
| 1803 : nullptr; | |
| 1804 } | |
| 1805 return nullptr; | 1817 return nullptr; |
| 1806 } | 1818 } |
| 1807 | 1819 |
| 1808 PaintLayerScrollableArea* | 1820 PaintLayerScrollableArea* |
| 1809 PaintLayerScrollableArea::ScrollbarManager::scrollableArea() { | 1821 PaintLayerScrollableArea::ScrollbarManager::scrollableArea() { |
| 1810 return toPaintLayerScrollableArea(m_scrollableArea.get()); | 1822 return toPaintLayerScrollableArea(m_scrollableArea.get()); |
| 1811 } | 1823 } |
| 1812 | 1824 |
| 1813 void PaintLayerScrollableArea::ScrollbarManager::destroyDetachedScrollbars() { | 1825 void PaintLayerScrollableArea::ScrollbarManager::destroyDetachedScrollbars() { |
| 1814 DCHECK(!m_hBarIsAttached || m_hBar); | 1826 DCHECK(!m_hBarIsAttached || m_hBar); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2014 | 2026 |
| 2015 void PaintLayerScrollableArea::DelayScrollOffsetClampScope:: | 2027 void PaintLayerScrollableArea::DelayScrollOffsetClampScope:: |
| 2016 clampScrollableAreas() { | 2028 clampScrollableAreas() { |
| 2017 for (auto& scrollableArea : *s_needsClamp) | 2029 for (auto& scrollableArea : *s_needsClamp) |
| 2018 scrollableArea->clampScrollOffsetAfterOverflowChange(); | 2030 scrollableArea->clampScrollOffsetAfterOverflowChange(); |
| 2019 delete s_needsClamp; | 2031 delete s_needsClamp; |
| 2020 s_needsClamp = nullptr; | 2032 s_needsClamp = nullptr; |
| 2021 } | 2033 } |
| 2022 | 2034 |
| 2023 } // namespace blink | 2035 } // namespace blink |
| OLD | NEW |