Chromium Code Reviews| Index: third_party/WebKit/Source/core/frame/FrameView.cpp |
| diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp |
| index 94b9738bcba2e46c73347ca92297c95115a7e7f8..aa115a03b2b67d63f2682fedb5dedecc2640003e 100644 |
| --- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
| +++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
| @@ -2816,6 +2816,19 @@ void FrameView::updateWidgetGeometriesIfNeeded() { |
| updateWidgetGeometries(); |
| } |
| +GeometryMapper& FrameView::geometryMapper() { |
| + DCHECK(RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()); |
| + DCHECK(lifecycle().state() >= DocumentLifecycle::InPrePaint); |
| + |
| + if (m_frame->isLocalRoot()) { |
| + if (!m_geometryMapper) |
| + m_geometryMapper = GeometryMapper::create(); |
| + return *m_geometryMapper.get(); |
| + } |
| + |
| + return frame().localFrameRoot()->view()->geometryMapper(); |
| +} |
| + |
| void FrameView::updateAllLifecyclePhases() { |
| frame().localFrameRoot()->view()->updateLifecyclePhasesInternal( |
| DocumentLifecycle::PaintClean); |
| @@ -3032,12 +3045,6 @@ void FrameView::prePaint() { |
| if (!m_paintController) |
| m_paintController = PaintController::create(); |
| - if (!m_geometryMapper) |
| - m_geometryMapper.reset(new GeometryMapper()); |
| - // TODO(chrishtr): the cache only needs to be invalidated if one or more of |
| - // the property tree nodes changed. |
| - m_geometryMapper->clearCache(); |
| - |
| forAllNonThrottledFrameViews([](FrameView& frameView) { |
| frameView.lifecycle().advanceTo(DocumentLifecycle::InPrePaint); |
| if (frameView.canThrottleRendering()) { |
| @@ -3050,8 +3057,15 @@ void FrameView::prePaint() { |
| }); |
| if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()) { |
| + // TODO(chrishtr): the cache only needs to be invalidated if one or more |
| + // of |
|
pdr.
2017/02/10 23:19:20
Nit: indentation.
chrishtr
2017/02/10 23:23:21
Done.
|
| + // the property tree nodes changed. |
| + geometryMapper().clearCache(); |
| + } |
| + |
| + if (RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()) { |
| SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.PrePaint.UpdateTime"); |
| - PrePaintTreeWalk(*m_geometryMapper).walk(*this); |
| + PrePaintTreeWalk(geometryMapper()).walk(*this); |
| } |
| forAllNonThrottledFrameViews([](FrameView& frameView) { |