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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutView.cpp

Issue 2084723002: Remove LayoutView::doingFullPaintInvalidation() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More NeedsRebaselines Created 4 years, 5 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 #endif 189 #endif
190 } 190 }
191 191
192 #if ENABLE(ASSERT) 192 #if ENABLE(ASSERT)
193 void LayoutView::checkLayoutState() 193 void LayoutView::checkLayoutState()
194 { 194 {
195 ASSERT(!m_layoutState->next()); 195 ASSERT(!m_layoutState->next());
196 } 196 }
197 #endif 197 #endif
198 198
199 bool LayoutView::shouldDoFullPaintInvalidationForNextLayout() const 199 void LayoutView::setShouldDoFullPaintInvalidationOnResizeIfNeeded()
200 { 200 {
201 // It's hard to predict here which of full paint invalidation or per-descend ant paint invalidation costs less. 201 // When background-attachment is 'fixed', we treat the viewport (instead of the 'root'
202 // For vertical writing mode or width change it's more likely that per-desce ndant paint invalidation 202 // i.e. html or body) as the background positioning area, and we should full y invalidate
203 // eventually turns out to be full paint invalidation but with the cost to h andle more layout states 203 // on viewport resize if the background image is not composited and needs fu ll paint
204 // and discrete paint invalidation rects, so marking full paint invalidation here is more likely to cost less. 204 // invalidation on background positioning area resize.
205 // Otherwise, per-descendant paint invalidation is more likely to avoid unne cessary full paint invalidation. 205 if (style()->hasFixedBackgroundImage() && (!m_compositor || !m_compositor->n eedsFixedRootBackgroundLayer(layer()))) {
206 206 IncludeScrollbarsInRect includeScrollbars = document().settings() && doc ument().settings()->rootLayerScrolls() ? IncludeScrollbars : ExcludeScrollbars;
207 if (shouldUsePrintingLayout()) 207 if ((offsetWidth() != viewWidth(includeScrollbars) && mustInvalidateFill LayersPaintOnWidthChange(style()->backgroundLayers()))
208 return true; 208 || (offsetHeight() != viewHeight(includeScrollbars) && mustInvalidat eFillLayersPaintOnHeightChange(style()->backgroundLayers())))
209 209 setShouldDoFullPaintInvalidation(PaintInvalidationBoundsChange);
210 if (!style()->isHorizontalWritingMode())
211 return true;
212
213 // The width/height checks below assume horizontal writing mode.
214 ASSERT(style()->isHorizontalWritingMode());
215
216 if (size().width() != viewLogicalWidthForBoxSizing())
217 return true;
218
219 if (size().height() != viewLogicalHeightForBoxSizing()) {
220 // When background-attachment is 'fixed', we treat the viewport (instead of the 'root'
221 // i.e. html or body) as the background positioning area, and we should full paint invalidation
222 // viewport resize if the background image is not composited and needs f ull paint invalidation on
223 // background positioning area resize.
224 if (!m_compositor || !m_compositor->needsFixedRootBackgroundLayer(layer( ))) {
225 if (style()->hasFixedBackgroundImage()
226 && mustInvalidateFillLayersPaintOnHeightChange(style()->backgrou ndLayers()))
227 return true;
228 }
229 } 210 }
230
231 return false;
232 }
233
234 bool LayoutView::doingFullPaintInvalidation() const
235 {
236 return m_frameView->needsFullPaintInvalidation();
237 } 211 }
238 212
239 void LayoutView::layout() 213 void LayoutView::layout()
240 { 214 {
241 if (!document().paginated()) 215 if (!document().paginated())
242 setPageLogicalHeight(LayoutUnit()); 216 setPageLogicalHeight(LayoutUnit());
243 217
218 setShouldDoFullPaintInvalidationOnResizeIfNeeded();
219
244 if (pageLogicalHeight() && shouldUsePrintingLayout()) { 220 if (pageLogicalHeight() && shouldUsePrintingLayout()) {
245 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth() ; 221 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth() ;
246 if (!m_fragmentationContext) 222 if (!m_fragmentationContext)
247 m_fragmentationContext = wrapUnique(new ViewFragmentationContext(*th is)); 223 m_fragmentationContext = wrapUnique(new ViewFragmentationContext(*th is));
248 } else if (m_fragmentationContext) { 224 } else if (m_fragmentationContext) {
249 m_fragmentationContext.reset(); 225 m_fragmentationContext.reset();
250 } 226 }
251 227
252 SubtreeLayoutScope layoutScope(*this); 228 SubtreeLayoutScope layoutScope(*this);
253 229
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 void LayoutView::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffse t) const 410 void LayoutView::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffse t) const
435 { 411 {
436 ViewPainter(*this).paint(paintInfo, paintOffset); 412 ViewPainter(*this).paint(paintInfo, paintOffset);
437 } 413 }
438 414
439 void LayoutView::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint&) const 415 void LayoutView::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint&) const
440 { 416 {
441 ViewPainter(*this).paintBoxDecorationBackground(paintInfo); 417 ViewPainter(*this).paintBoxDecorationBackground(paintInfo);
442 } 418 }
443 419
444 void LayoutView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInval idationState)
445 {
446 ASSERT(!needsLayout());
447
448 // We specifically need to issue paint invalidations for the viewRect since other layoutObjects
449 // short-circuit on full-paint invalidation.
450 LayoutRect dirtyRect = viewRect();
451 if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) {
452 const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidati onState.paintInvalidationContainer();
453 paintInvalidationState.mapLocalRectToPaintInvalidationBacking(dirtyRect) ;
454 invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, Pai ntInvalidationFull);
455 invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidation State, PaintInvalidationFull);
456 }
457 LayoutBlock::invalidateTreeIfNeeded(paintInvalidationState);
458 }
459
460 static void setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(Lay outObject* object) 420 static void setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(Lay outObject* object)
461 { 421 {
462 object->setShouldDoFullPaintInvalidation(); 422 object->setShouldDoFullPaintInvalidation();
463 for (LayoutObject* child = object->slowFirstChild(); child; child = child->n extSibling()) { 423 for (LayoutObject* child = object->slowFirstChild(); child; child = child->n extSibling()) {
464 setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(child); 424 setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(child);
465 } 425 }
466 } 426 }
467 427
468 void LayoutView::setShouldDoFullPaintInvalidationForViewAndAllDescendants() 428 void LayoutView::setShouldDoFullPaintInvalidationForViewAndAllDescendants()
469 { 429 {
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 // ASSERT(!frame()->isMainFrame()) here. All main frame scrolling should 1003 // ASSERT(!frame()->isMainFrame()) here. All main frame scrolling should
1044 // be handled by the ViewportScrollCallback. 1004 // be handled by the ViewportScrollCallback.
1045 1005
1046 if (!frameView()) 1006 if (!frameView())
1047 return ScrollResult(false, false, delta.width(), delta.height()); 1007 return ScrollResult(false, false, delta.width(), delta.height());
1048 1008
1049 return frameView()->getScrollableArea()->userScroll(granularity, delta); 1009 return frameView()->getScrollableArea()->userScroll(granularity, delta);
1050 } 1010 }
1051 1011
1052 } // namespace blink 1012 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutView.h ('k') | third_party/WebKit/Source/core/layout/api/LayoutViewItem.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698