Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
index ac22ac5ab04f247e1d77926b9acabb6a835c8cac..01fcf7caf800c3006633f899fbc15749bb1896a5 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
@@ -144,11 +144,8 @@ void PaintLayerScrollableArea::dispose() { |
} |
} |
- if (box().frame() && box().frame()->page()) { |
- if (ScrollingCoordinator* scrollingCoordinator = |
- box().frame()->page()->scrollingCoordinator()) |
- scrollingCoordinator->willDestroyScrollableArea(this); |
- } |
+ if (ScrollingCoordinator* scrollingCoordinator = getScrollingCoordinator()) |
+ scrollingCoordinator->willDestroyScrollableArea(this); |
if (!box().documentBeingDestroyed()) { |
Node* node = box().node(); |
@@ -1695,6 +1692,19 @@ void PaintLayerScrollableArea::updateCompositingLayersAfterScroll() { |
} |
} |
+ScrollingCoordinator* PaintLayerScrollableArea::getScrollingCoordinator() |
+ const { |
+ LocalFrame* frame = box().frame(); |
+ if (!frame) |
+ return nullptr; |
+ |
+ Page* page = frame->page(); |
+ if (!page) |
+ return nullptr; |
+ |
+ return page->scrollingCoordinator(); |
+} |
+ |
bool PaintLayerScrollableArea::usesCompositedScrolling() const { |
// See https://codereview.chromium.org/176633003/ for the tests that fail |
// without this disabler. |
@@ -1704,12 +1714,9 @@ bool PaintLayerScrollableArea::usesCompositedScrolling() const { |
} |
bool PaintLayerScrollableArea::shouldScrollOnMainThread() const { |
- if (LocalFrame* frame = box().frame()) { |
- if (Page* page = frame->page()) { |
- if (page->scrollingCoordinator() |
- ->shouldUpdateScrollLayerPositionOnMainThread()) |
- return true; |
- } |
+ if (ScrollingCoordinator* scrollingCoordinator = getScrollingCoordinator()) { |
+ if (scrollingCoordinator->shouldUpdateScrollLayerPositionOnMainThread()) |
+ return true; |
} |
return ScrollableArea::shouldScrollOnMainThread(); |
} |
@@ -1794,14 +1801,19 @@ void PaintLayerScrollableArea::resetRebuildScrollbarLayerFlags() { |
m_rebuildVerticalScrollbarLayer = false; |
} |
+CompositorAnimationHost* PaintLayerScrollableArea::compositorAnimationHost() |
+ const { |
+ if (ScrollingCoordinator* coordinator = getScrollingCoordinator()) |
+ return coordinator->compositorAnimationHost(); |
+ |
+ return nullptr; |
+} |
+ |
CompositorAnimationTimeline* |
PaintLayerScrollableArea::compositorAnimationTimeline() const { |
- if (LocalFrame* frame = box().frame()) { |
- if (Page* page = frame->page()) |
- return page->scrollingCoordinator() |
- ? page->scrollingCoordinator()->compositorAnimationTimeline() |
- : nullptr; |
- } |
+ if (ScrollingCoordinator* coordinator = getScrollingCoordinator()) |
+ return coordinator->compositorAnimationTimeline(); |
+ |
return nullptr; |
} |