OLD | NEW |
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. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. |
4 * All rights reserved. | 4 * All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 checkLayoutState(); | 198 checkLayoutState(); |
199 #endif | 199 #endif |
200 } | 200 } |
201 | 201 |
202 #if ENABLE(ASSERT) | 202 #if ENABLE(ASSERT) |
203 void LayoutView::checkLayoutState() { | 203 void LayoutView::checkLayoutState() { |
204 ASSERT(!m_layoutState->next()); | 204 ASSERT(!m_layoutState->next()); |
205 } | 205 } |
206 #endif | 206 #endif |
207 | 207 |
208 void LayoutView::setShouldDoFullPaintInvalidationOnResizeIfNeeded() { | 208 void LayoutView::setShouldDoFullPaintInvalidationOnResizeIfNeeded( |
| 209 bool widthChanged, |
| 210 bool heightChanged) { |
209 // When background-attachment is 'fixed', we treat the viewport (instead of | 211 // When background-attachment is 'fixed', we treat the viewport (instead of |
210 // the 'root' i.e. html or body) as the background positioning area, and we | 212 // the 'root' i.e. html or body) as the background positioning area, and we |
211 // should fully invalidate on viewport resize if the background image is not | 213 // should fully invalidate on viewport resize if the background image is not |
212 // composited and needs full paint invalidation on background positioning area | 214 // composited and needs full paint invalidation on background positioning area |
213 // resize. | 215 // resize. |
214 if (style()->hasFixedBackgroundImage() && | 216 if (style()->hasFixedBackgroundImage() && |
215 (!m_compositor || | 217 (!m_compositor || |
216 !m_compositor->needsFixedRootBackgroundLayer(layer()))) { | 218 !m_compositor->needsFixedRootBackgroundLayer(layer()))) { |
217 IncludeScrollbarsInRect includeScrollbars = | 219 if ((widthChanged && mustInvalidateFillLayersPaintOnWidthChange( |
218 RuntimeEnabledFeatures::rootLayerScrollingEnabled() ? IncludeScrollbars | 220 style()->backgroundLayers())) || |
219 : ExcludeScrollbars; | 221 (heightChanged && mustInvalidateFillLayersPaintOnHeightChange( |
220 if ((offsetWidth() != viewWidth(includeScrollbars) && | 222 style()->backgroundLayers()))) |
221 mustInvalidateFillLayersPaintOnWidthChange( | |
222 style()->backgroundLayers())) || | |
223 (offsetHeight() != viewHeight(includeScrollbars) && | |
224 mustInvalidateFillLayersPaintOnHeightChange( | |
225 style()->backgroundLayers()))) | |
226 setShouldDoFullPaintInvalidation(PaintInvalidationBoundsChange); | 223 setShouldDoFullPaintInvalidation(PaintInvalidationBoundsChange); |
227 } | 224 } |
228 } | 225 } |
229 | 226 |
230 void LayoutView::layout() { | 227 void LayoutView::layout() { |
231 if (!document().paginated()) | 228 if (!document().paginated()) |
232 setPageLogicalHeight(LayoutUnit()); | 229 setPageLogicalHeight(LayoutUnit()); |
233 | 230 |
234 setShouldDoFullPaintInvalidationOnResizeIfNeeded(); | 231 IncludeScrollbarsInRect includeScrollbars = |
| 232 RuntimeEnabledFeatures::rootLayerScrollingEnabled() ? IncludeScrollbars |
| 233 : ExcludeScrollbars; |
| 234 FloatSize viewSize(frameView()->visibleContentSize(includeScrollbars)); |
| 235 setShouldDoFullPaintInvalidationOnResizeIfNeeded( |
| 236 offsetWidth() != viewSize.width(), offsetHeight() != viewSize.height()); |
235 | 237 |
236 if (pageLogicalHeight() && shouldUsePrintingLayout()) { | 238 if (pageLogicalHeight() && shouldUsePrintingLayout()) { |
237 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth(); | 239 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth(); |
238 if (!m_fragmentationContext) { | 240 if (!m_fragmentationContext) { |
239 m_fragmentationContext = wrapUnique(new ViewFragmentationContext(*this)); | 241 m_fragmentationContext = wrapUnique(new ViewFragmentationContext(*this)); |
240 m_paginationStateChanged = true; | 242 m_paginationStateChanged = true; |
241 } | 243 } |
242 } else if (m_fragmentationContext) { | 244 } else if (m_fragmentationContext) { |
243 m_fragmentationContext.reset(); | 245 m_fragmentationContext.reset(); |
244 m_paginationStateChanged = true; | 246 m_paginationStateChanged = true; |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 LayoutRect overflowRect(layoutOverflowRect()); | 883 LayoutRect overflowRect(layoutOverflowRect()); |
882 flipForWritingMode(overflowRect); | 884 flipForWritingMode(overflowRect); |
883 // TODO(crbug.com/650768): The pixel snapping looks incorrect. | 885 // TODO(crbug.com/650768): The pixel snapping looks incorrect. |
884 return pixelSnappedIntRect(overflowRect); | 886 return pixelSnappedIntRect(overflowRect); |
885 } | 887 } |
886 | 888 |
887 bool LayoutView::rootBackgroundIsEntirelyFixed() const { | 889 bool LayoutView::rootBackgroundIsEntirelyFixed() const { |
888 return style()->hasEntirelyFixedBackground(); | 890 return style()->hasEntirelyFixedBackground(); |
889 } | 891 } |
890 | 892 |
891 LayoutRect LayoutView::backgroundRect(LayoutBox* backgroundLayoutObject) const { | |
892 return LayoutRect(documentRect()); | |
893 } | |
894 | |
895 IntSize LayoutView::layoutSize( | 893 IntSize LayoutView::layoutSize( |
896 IncludeScrollbarsInRect scrollbarInclusion) const { | 894 IncludeScrollbarsInRect scrollbarInclusion) const { |
897 if (shouldUsePrintingLayout()) | 895 if (shouldUsePrintingLayout()) |
898 return IntSize(size().width().toInt(), pageLogicalHeight().toInt()); | 896 return IntSize(size().width().toInt(), pageLogicalHeight().toInt()); |
899 | 897 |
900 if (!m_frameView) | 898 if (!m_frameView) |
901 return IntSize(); | 899 return IntSize(); |
902 | 900 |
903 IntSize result = m_frameView->layoutSize(IncludeScrollbars); | 901 IntSize result = m_frameView->layoutSize(IncludeScrollbars); |
904 if (scrollbarInclusion == ExcludeScrollbars) | 902 if (scrollbarInclusion == ExcludeScrollbars) |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 if (block) | 1055 if (block) |
1058 block->adjustChildDebugRect(rect); | 1056 block->adjustChildDebugRect(rect); |
1059 | 1057 |
1060 rect.setWidth(LayoutUnit(viewWidth(IncludeScrollbars))); | 1058 rect.setWidth(LayoutUnit(viewWidth(IncludeScrollbars))); |
1061 rect.setHeight(LayoutUnit(viewHeight(IncludeScrollbars))); | 1059 rect.setHeight(LayoutUnit(viewHeight(IncludeScrollbars))); |
1062 | 1060 |
1063 return rect; | 1061 return rect; |
1064 } | 1062 } |
1065 | 1063 |
1066 } // namespace blink | 1064 } // namespace blink |
OLD | NEW |