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

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

Issue 2724083002: [SPv2] Decomposite otherwise-compositable animations that paint nothing. (Closed)
Patch Set: Progress. Created 3 years, 9 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 3084 matching lines...) Expand 10 before | Expand all | Expand 10 after
3095 // for slimming paint v2. 3095 // for slimming paint v2.
3096 if (targetState >= DocumentLifecycle::PrePaintClean) 3096 if (targetState >= DocumentLifecycle::PrePaintClean)
3097 prePaint(); 3097 prePaint();
3098 } 3098 }
3099 3099
3100 if (targetState == DocumentLifecycle::PaintClean) { 3100 if (targetState == DocumentLifecycle::PaintClean) {
3101 if (!m_frame->document()->printing() || 3101 if (!m_frame->document()->printing() ||
3102 RuntimeEnabledFeatures::printBrowserEnabled()) 3102 RuntimeEnabledFeatures::printBrowserEnabled())
3103 paintTree(); 3103 paintTree();
3104 3104
3105 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) 3105 Optional<CompositorElementIdSet> compositedAnimationElementIds;
3106 pushPaintArtifactToCompositor(); 3106 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
3107 compositedAnimationElementIds.emplace();
pdr. 2017/03/16 21:20:05 Is "animation" correct here? Are we returning comp
wkorman 2017/03/16 21:53:31 Name needs improvement, agreed, let's come up with
pdr. 2017/03/16 22:16:01 compositedElementIds SGTM short is beautiful
3108 pushPaintArtifactToCompositor(compositedAnimationElementIds.value());
pdr. 2017/03/16 21:20:05 Idea for not needing to pass this Optional around
wkorman 2017/03/16 21:53:31 I like this general idea. How do you envision mark
pdr. 2017/03/16 22:16:01 I was thinking about re-using setEffectSuppressed
wkorman 2017/03/16 22:32:25 Yes, but the overhead of an omnipresent bool field
3109 }
3107 3110
3108 DCHECK(!view.hasPendingSelection()); 3111 DCHECK(!view.hasPendingSelection());
3109 DCHECK((m_frame->document()->printing() && 3112 DCHECK((m_frame->document()->printing() &&
3110 lifecycle().state() == DocumentLifecycle::PrePaintClean) || 3113 lifecycle().state() == DocumentLifecycle::PrePaintClean) ||
3111 lifecycle().state() == DocumentLifecycle::PaintClean); 3114 lifecycle().state() == DocumentLifecycle::PaintClean);
3112 3115
3113 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 3116 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
3114 DocumentAnimations::updateAnimations(layoutView()->document(), 3117 DocumentAnimations::updateAnimations(layoutView()->document(),
pdr. 2017/03/16 21:20:05 Can this call be moved right after pushPaintArtifa
wkorman 2017/03/16 21:53:31 Yes, though I think we'd want to duplicate the two
pdr. 2017/03/16 22:16:01 Do the checks actually need to come before updateA
3115 DocumentLifecycle::PaintClean); 3118 DocumentLifecycle::PaintClean,
3119 compositedAnimationElementIds);
3116 } 3120 }
3117 } 3121 }
3118 3122
3119 forAllNonThrottledFrameViews([](FrameView& frameView) { 3123 forAllNonThrottledFrameViews([](FrameView& frameView) {
3120 frameView.checkDoesNotNeedLayout(); 3124 frameView.checkDoesNotNeedLayout();
3121 frameView.m_allowsLayoutInvalidationAfterLayoutClean = true; 3125 frameView.m_allowsLayoutInvalidationAfterLayoutClean = true;
3122 }); 3126 });
3123 } 3127 }
3124 3128
3125 updateViewportIntersectionsForSubtree(targetState); 3129 updateViewportIntersectionsForSubtree(targetState);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
3244 paintGraphicsLayerRecursively(maskLayer); 3248 paintGraphicsLayerRecursively(maskLayer);
3245 if (GraphicsLayer* contentsClippingMaskLayer = 3249 if (GraphicsLayer* contentsClippingMaskLayer =
3246 graphicsLayer->contentsClippingMaskLayer()) 3250 graphicsLayer->contentsClippingMaskLayer())
3247 paintGraphicsLayerRecursively(contentsClippingMaskLayer); 3251 paintGraphicsLayerRecursively(contentsClippingMaskLayer);
3248 } 3252 }
3249 3253
3250 for (auto& child : graphicsLayer->children()) 3254 for (auto& child : graphicsLayer->children())
3251 paintGraphicsLayerRecursively(child); 3255 paintGraphicsLayerRecursively(child);
3252 } 3256 }
3253 3257
3254 void FrameView::pushPaintArtifactToCompositor() { 3258 void FrameView::pushPaintArtifactToCompositor(
3259 CompositorElementIdSet& compositedAnimationElementIds) {
3255 TRACE_EVENT0("blink", "FrameView::pushPaintArtifactToCompositor"); 3260 TRACE_EVENT0("blink", "FrameView::pushPaintArtifactToCompositor");
3256 3261
3257 DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled()); 3262 DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled());
3258 3263
3259 Page* page = frame().page(); 3264 Page* page = frame().page();
3260 if (!page) 3265 if (!page)
3261 return; 3266 return;
3262 3267
3263 if (!m_paintArtifactCompositor) { 3268 if (!m_paintArtifactCompositor) {
3264 m_paintArtifactCompositor = PaintArtifactCompositor::create(); 3269 m_paintArtifactCompositor = PaintArtifactCompositor::create();
3265 page->chromeClient().attachRootLayer( 3270 page->chromeClient().attachRootLayer(
3266 m_paintArtifactCompositor->getWebLayer(), &frame()); 3271 m_paintArtifactCompositor->getWebLayer(), &frame());
3267 } 3272 }
3268 3273
3269 SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.Compositing.UpdateTime"); 3274 SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.Compositing.UpdateTime");
3270 3275
3271 DCHECK(m_geometryMapper.get()); 3276 DCHECK(m_geometryMapper.get());
3272 m_paintArtifactCompositor->update( 3277 m_paintArtifactCompositor->update(
3273 m_paintController->paintArtifact(), 3278 m_paintController->paintArtifact(),
3274 m_paintController->paintChunksRasterInvalidationTrackingMap(), 3279 m_paintController->paintChunksRasterInvalidationTrackingMap(),
3275 m_isStoringCompositedLayerDebugInfo, *m_geometryMapper); 3280 m_isStoringCompositedLayerDebugInfo, *m_geometryMapper,
3281 compositedAnimationElementIds);
3276 } 3282 }
3277 3283
3278 std::unique_ptr<JSONObject> FrameView::compositedLayersAsJSON( 3284 std::unique_ptr<JSONObject> FrameView::compositedLayersAsJSON(
3279 LayerTreeFlags flags) { 3285 LayerTreeFlags flags) {
3280 return frame() 3286 return frame()
3281 .localFrameRoot() 3287 .localFrameRoot()
3282 ->view() 3288 ->view()
3283 ->m_paintArtifactCompositor->layersAsJSON(flags); 3289 ->m_paintArtifactCompositor->layersAsJSON(flags);
3284 } 3290 }
3285 3291
(...skipping 1976 matching lines...) Expand 10 before | Expand all | Expand 10 after
5262 void FrameView::setAnimationHost( 5268 void FrameView::setAnimationHost(
5263 std::unique_ptr<CompositorAnimationHost> host) { 5269 std::unique_ptr<CompositorAnimationHost> host) {
5264 m_animationHost = std::move(host); 5270 m_animationHost = std::move(host);
5265 } 5271 }
5266 5272
5267 LayoutUnit FrameView::caretWidth() const { 5273 LayoutUnit FrameView::caretWidth() const {
5268 return LayoutUnit(getHostWindow()->windowToViewportScalar(1)); 5274 return LayoutUnit(getHostWindow()->windowToViewportScalar(1));
5269 } 5275 }
5270 5276
5271 } // namespace blink 5277 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698