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

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

Issue 1603983002: Fix partial painting with render pipeline throttling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adjust layout assert. Created 4 years, 11 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 3681 matching lines...) Expand 10 before | Expand all | Expand 10 after
3692 return ScrollBehaviorInstant; 3692 return ScrollBehaviorInstant;
3693 } 3693 }
3694 3694
3695 void FrameView::paint(GraphicsContext& context, const CullRect& cullRect) const 3695 void FrameView::paint(GraphicsContext& context, const CullRect& cullRect) const
3696 { 3696 {
3697 paint(context, GlobalPaintNormalPhase, cullRect); 3697 paint(context, GlobalPaintNormalPhase, cullRect);
3698 } 3698 }
3699 3699
3700 void FrameView::paint(GraphicsContext& context, const GlobalPaintFlags globalPai ntFlags, const CullRect& cullRect) const 3700 void FrameView::paint(GraphicsContext& context, const GlobalPaintFlags globalPai ntFlags, const CullRect& cullRect) const
3701 { 3701 {
3702 // TODO(skyostil): Remove this early-out in favor of painting cached scrollb ars.
3703 if (shouldThrottleRendering())
3704 return;
3705 FramePainter(*this).paint(context, globalPaintFlags, cullRect); 3702 FramePainter(*this).paint(context, globalPaintFlags, cullRect);
3706 } 3703 }
3707 3704
3708 void FrameView::paintContents(GraphicsContext& context, const GlobalPaintFlags g lobalPaintFlags, const IntRect& damageRect) const 3705 void FrameView::paintContents(GraphicsContext& context, const GlobalPaintFlags g lobalPaintFlags, const IntRect& damageRect) const
3709 { 3706 {
3710 if (shouldThrottleRendering())
3711 return;
3712 FramePainter(*this).paintContents(context, globalPaintFlags, damageRect); 3707 FramePainter(*this).paintContents(context, globalPaintFlags, damageRect);
3713 } 3708 }
3714 3709
3715 bool FrameView::isPointInScrollbarCorner(const IntPoint& pointInRootFrame) 3710 bool FrameView::isPointInScrollbarCorner(const IntPoint& pointInRootFrame)
3716 { 3711 {
3717 if (!scrollbarCornerPresent()) 3712 if (!scrollbarCornerPresent())
3718 return false; 3713 return false;
3719 3714
3720 IntPoint framePoint = convertFromRootFrame(pointInRootFrame); 3715 IntPoint framePoint = convertFromRootFrame(pointInRootFrame);
3721 3716
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
3997 const SecurityOrigin* origin = frame().securityContext()->securityOrigin(); 3992 const SecurityOrigin* origin = frame().securityContext()->securityOrigin();
3998 for (Frame* parentFrame = m_frame->tree().parent(); parentFrame; parentFrame = parentFrame->tree().parent()) { 3993 for (Frame* parentFrame = m_frame->tree().parent(); parentFrame; parentFrame = parentFrame->tree().parent()) {
3999 const SecurityOrigin* parentOrigin = parentFrame->securityContext()->sec urityOrigin(); 3994 const SecurityOrigin* parentOrigin = parentFrame->securityContext()->sec urityOrigin();
4000 if (!origin->canAccess(parentOrigin)) { 3995 if (!origin->canAccess(parentOrigin)) {
4001 m_crossOriginForThrottling = true; 3996 m_crossOriginForThrottling = true;
4002 break; 3997 break;
4003 } 3998 }
4004 } 3999 }
4005 4000
4006 bool becameUnthrottled = wasThrottled && !canThrottleRendering(); 4001 bool becameUnthrottled = wasThrottled && !canThrottleRendering();
4007 if (becameUnthrottled) 4002 if (becameUnthrottled) {
4008 page()->animator().scheduleVisualUpdate(m_frame.get()); 4003 page()->animator().scheduleVisualUpdate(m_frame.get());
4004 // Force a full repaint to make sure we regenerate any cached
4005 // subsequences for this frame.
4006 m_doFullPaintInvalidation = true;
4007 }
4009 } 4008 }
4010 4009
4011 bool FrameView::shouldThrottleRendering() const 4010 bool FrameView::shouldThrottleRendering() const
4012 { 4011 {
4013 return canThrottleRendering() && lifecycle().throttlingAllowed(); 4012 return canThrottleRendering() && lifecycle().throttlingAllowed();
4014 } 4013 }
4015 4014
4016 bool FrameView::canThrottleRendering() const 4015 bool FrameView::canThrottleRendering() const
4017 { 4016 {
4018 if (!RuntimeEnabledFeatures::renderingPipelineThrottlingEnabled()) 4017 if (!RuntimeEnabledFeatures::renderingPipelineThrottlingEnabled())
4019 return false; 4018 return false;
4020 return m_hiddenForThrottling && m_crossOriginForThrottling; 4019 return m_hiddenForThrottling && m_crossOriginForThrottling;
4021 } 4020 }
4022 4021
4023 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const 4022 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const
4024 { 4023 {
4025 ASSERT(layoutView()); 4024 ASSERT(layoutView());
4026 return *layoutView(); 4025 return *layoutView();
4027 } 4026 }
4028 4027
4029 } // namespace blink 4028 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698