OLD | NEW |
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 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
768 { | 768 { |
769 return onlyDuringLayout && layoutPending() ? nullptr : m_layoutSubtreeRoot; | 769 return onlyDuringLayout && layoutPending() ? nullptr : m_layoutSubtreeRoot; |
770 } | 770 } |
771 | 771 |
772 inline void FrameView::forceLayoutParentViewIfNeeded() | 772 inline void FrameView::forceLayoutParentViewIfNeeded() |
773 { | 773 { |
774 LayoutPart* ownerRenderer = m_frame->ownerRenderer(); | 774 LayoutPart* ownerRenderer = m_frame->ownerRenderer(); |
775 if (!ownerRenderer || !ownerRenderer->frame()) | 775 if (!ownerRenderer || !ownerRenderer->frame()) |
776 return; | 776 return; |
777 | 777 |
778 RenderBox* contentBox = embeddedContentBox(); | 778 LayoutBox* contentBox = embeddedContentBox(); |
779 if (!contentBox) | 779 if (!contentBox) |
780 return; | 780 return; |
781 | 781 |
782 LayoutSVGRoot* svgRoot = toLayoutSVGRoot(contentBox); | 782 LayoutSVGRoot* svgRoot = toLayoutSVGRoot(contentBox); |
783 if (svgRoot->everHadLayout() && !svgRoot->needsLayout()) | 783 if (svgRoot->everHadLayout() && !svgRoot->needsLayout()) |
784 return; | 784 return; |
785 | 785 |
786 // If the embedded SVG document appears the first time, the ownerRenderer ha
s already finished | 786 // If the embedded SVG document appears the first time, the ownerRenderer ha
s already finished |
787 // layout without knowing about the existence of the embedded SVG document,
because LayoutReplaced | 787 // layout without knowing about the existence of the embedded SVG document,
because LayoutReplaced |
788 // embeddedContentBox() returns 0, as long as the embedded document isn't lo
aded yet. Before | 788 // embeddedContentBox() returns 0, as long as the embedded document isn't lo
aded yet. Before |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 } | 992 } |
993 | 993 |
994 if (needsScrollbarReconstruction()) | 994 if (needsScrollbarReconstruction()) |
995 updateScrollbars(scrollOffsetDouble()); | 995 updateScrollbars(scrollOffsetDouble()); |
996 | 996 |
997 LayoutSize oldSize = m_size; | 997 LayoutSize oldSize = m_size; |
998 | 998 |
999 m_size = LayoutSize(layoutSize().width(), layoutSize().height()); | 999 m_size = LayoutSize(layoutSize().width(), layoutSize().height()); |
1000 | 1000 |
1001 if (oldSize != m_size && !m_firstLayout) { | 1001 if (oldSize != m_size && !m_firstLayout) { |
1002 RenderBox* rootRenderer = document->documentElement() ? document
->documentElement()->renderBox() : 0; | 1002 LayoutBox* rootRenderer = document->documentElement() ? document
->documentElement()->layoutBox() : 0; |
1003 RenderBox* bodyRenderer = rootRenderer && document->body() ? doc
ument->body()->renderBox() : 0; | 1003 LayoutBox* bodyRenderer = rootRenderer && document->body() ? doc
ument->body()->layoutBox() : 0; |
1004 if (bodyRenderer && bodyRenderer->stretchesToViewport()) | 1004 if (bodyRenderer && bodyRenderer->stretchesToViewport()) |
1005 bodyRenderer->setChildNeedsLayout(); | 1005 bodyRenderer->setChildNeedsLayout(); |
1006 else if (rootRenderer && rootRenderer->stretchesToViewport()) | 1006 else if (rootRenderer && rootRenderer->stretchesToViewport()) |
1007 rootRenderer->setChildNeedsLayout(); | 1007 rootRenderer->setChildNeedsLayout(); |
1008 } | 1008 } |
1009 | 1009 |
1010 // We need to set m_doFullPaintInvalidation before triggering layout
as LayoutObject::checkForPaintInvalidation | 1010 // We need to set m_doFullPaintInvalidation before triggering layout
as LayoutObject::checkForPaintInvalidation |
1011 // checks the boolean to disable local paint invalidations. | 1011 // checks the boolean to disable local paint invalidations. |
1012 m_doFullPaintInvalidation |= renderView()->shouldDoFullPaintInvalida
tionForNextLayout(); | 1012 m_doFullPaintInvalidation |= renderView()->shouldDoFullPaintInvalida
tionForNextLayout(); |
1013 } | 1013 } |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1128 debugInfo.currentLayoutRects().clear(); | 1128 debugInfo.currentLayoutRects().clear(); |
1129 for (LayoutObject* renderer = layoutRoot; renderer; renderer = renderer->nex
tInPreOrder()) { | 1129 for (LayoutObject* renderer = layoutRoot; renderer; renderer = renderer->nex
tInPreOrder()) { |
1130 if (renderer->layoutDidGetCalledSinceLastFrame()) { | 1130 if (renderer->layoutDidGetCalledSinceLastFrame()) { |
1131 FloatQuad quad = renderer->localToAbsoluteQuad(FloatQuad(renderer->p
reviousPaintInvalidationRect())); | 1131 FloatQuad quad = renderer->localToAbsoluteQuad(FloatQuad(renderer->p
reviousPaintInvalidationRect())); |
1132 LayoutRect rect = quad.enclosingBoundingBox(); | 1132 LayoutRect rect = quad.enclosingBoundingBox(); |
1133 debugInfo.currentLayoutRects().append(rect); | 1133 debugInfo.currentLayoutRects().append(rect); |
1134 } | 1134 } |
1135 } | 1135 } |
1136 } | 1136 } |
1137 | 1137 |
1138 RenderBox* FrameView::embeddedContentBox() const | 1138 LayoutBox* FrameView::embeddedContentBox() const |
1139 { | 1139 { |
1140 RenderView* renderView = this->renderView(); | 1140 RenderView* renderView = this->renderView(); |
1141 if (!renderView) | 1141 if (!renderView) |
1142 return nullptr; | 1142 return nullptr; |
1143 | 1143 |
1144 LayoutObject* firstChild = renderView->firstChild(); | 1144 LayoutObject* firstChild = renderView->firstChild(); |
1145 if (!firstChild || !firstChild->isBox()) | 1145 if (!firstChild || !firstChild->isBox()) |
1146 return nullptr; | 1146 return nullptr; |
1147 | 1147 |
1148 // Curently only embedded SVG documents participate in the size-negotiation
logic. | 1148 // Curently only embedded SVG documents participate in the size-negotiation
logic. |
1149 if (firstChild->isSVGRoot()) | 1149 if (firstChild->isSVGRoot()) |
1150 return toRenderBox(firstChild); | 1150 return toLayoutBox(firstChild); |
1151 | 1151 |
1152 return nullptr; | 1152 return nullptr; |
1153 } | 1153 } |
1154 | 1154 |
1155 | 1155 |
1156 void FrameView::addPart(LayoutPart* object) | 1156 void FrameView::addPart(LayoutPart* object) |
1157 { | 1157 { |
1158 m_parts.add(object); | 1158 m_parts.add(object); |
1159 } | 1159 } |
1160 | 1160 |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1906 // layout in that case. | 1906 // layout in that case. |
1907 | 1907 |
1908 RenderView* renderView = this->renderView(); | 1908 RenderView* renderView = this->renderView(); |
1909 return layoutPending() | 1909 return layoutPending() |
1910 || (renderView && renderView->needsLayout()) | 1910 || (renderView && renderView->needsLayout()) |
1911 || isSubtreeLayout(); | 1911 || isSubtreeLayout(); |
1912 } | 1912 } |
1913 | 1913 |
1914 void FrameView::setNeedsLayout() | 1914 void FrameView::setNeedsLayout() |
1915 { | 1915 { |
1916 RenderBox* box = embeddedContentBox(); | 1916 LayoutBox* box = embeddedContentBox(); |
1917 // It's illegal to ask for layout changes during the layout compositing or p
aint invalidation step. | 1917 // It's illegal to ask for layout changes during the layout compositing or p
aint invalidation step. |
1918 // FIXME: the third conditional is a hack to support embedded SVG. See Frame
View::forceLayoutParentViewIfNeeded and crbug.com/442939 | 1918 // FIXME: the third conditional is a hack to support embedded SVG. See Frame
View::forceLayoutParentViewIfNeeded and crbug.com/442939 |
1919 RELEASE_ASSERT(!m_frame->document() || m_frame->document()->lifecycle().stat
eAllowsLayoutInvalidation() || (box && box->isSVGRoot())); | 1919 RELEASE_ASSERT(!m_frame->document() || m_frame->document()->lifecycle().stat
eAllowsLayoutInvalidation() || (box && box->isSVGRoot())); |
1920 | 1920 |
1921 if (RenderView* renderView = this->renderView()) | 1921 if (RenderView* renderView = this->renderView()) |
1922 renderView->setNeedsLayout(); | 1922 renderView->setNeedsLayout(); |
1923 } | 1923 } |
1924 | 1924 |
1925 bool FrameView::isTransparent() const | 1925 bool FrameView::isTransparent() const |
1926 { | 1926 { |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2434 { | 2434 { |
2435 return m_frame->settings() && m_frame->settings()->scrollAnimatorEnabled(); | 2435 return m_frame->settings() && m_frame->settings()->scrollAnimatorEnabled(); |
2436 } | 2436 } |
2437 | 2437 |
2438 void FrameView::updateAnnotatedRegions() | 2438 void FrameView::updateAnnotatedRegions() |
2439 { | 2439 { |
2440 Document* document = m_frame->document(); | 2440 Document* document = m_frame->document(); |
2441 if (!document->hasAnnotatedRegions()) | 2441 if (!document->hasAnnotatedRegions()) |
2442 return; | 2442 return; |
2443 Vector<AnnotatedRegionValue> newRegions; | 2443 Vector<AnnotatedRegionValue> newRegions; |
2444 document->renderBox()->collectAnnotatedRegions(newRegions); | 2444 document->layoutBox()->collectAnnotatedRegions(newRegions); |
2445 if (newRegions == document->annotatedRegions()) | 2445 if (newRegions == document->annotatedRegions()) |
2446 return; | 2446 return; |
2447 document->setAnnotatedRegions(newRegions); | 2447 document->setAnnotatedRegions(newRegions); |
2448 if (Page* page = m_frame->page()) | 2448 if (Page* page = m_frame->page()) |
2449 page->chrome().client().annotatedRegionsChanged(); | 2449 page->chrome().client().annotatedRegionsChanged(); |
2450 } | 2450 } |
2451 | 2451 |
2452 void FrameView::updateScrollCorner() | 2452 void FrameView::updateScrollCorner() |
2453 { | 2453 { |
2454 RefPtr<LayoutStyle> cornerStyle; | 2454 RefPtr<LayoutStyle> cornerStyle; |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2893 TextStream ts; | 2893 TextStream ts; |
2894 if (!m_trackedPaintInvalidationRects.isEmpty()) { | 2894 if (!m_trackedPaintInvalidationRects.isEmpty()) { |
2895 ts << "(repaint rects\n"; | 2895 ts << "(repaint rects\n"; |
2896 for (size_t i = 0; i < m_trackedPaintInvalidationRects.size(); ++i) | 2896 for (size_t i = 0; i < m_trackedPaintInvalidationRects.size(); ++i) |
2897 ts << " (rect " << m_trackedPaintInvalidationRects[i].x() << " " <<
m_trackedPaintInvalidationRects[i].y() << " " << m_trackedPaintInvalidationRect
s[i].width() << " " << m_trackedPaintInvalidationRects[i].height() << ")\n"; | 2897 ts << " (rect " << m_trackedPaintInvalidationRects[i].x() << " " <<
m_trackedPaintInvalidationRects[i].y() << " " << m_trackedPaintInvalidationRect
s[i].width() << " " << m_trackedPaintInvalidationRects[i].height() << ")\n"; |
2898 ts << ")\n"; | 2898 ts << ")\n"; |
2899 } | 2899 } |
2900 return ts.release(); | 2900 return ts.release(); |
2901 } | 2901 } |
2902 | 2902 |
2903 void FrameView::addResizerArea(RenderBox& resizerBox) | 2903 void FrameView::addResizerArea(LayoutBox& resizerBox) |
2904 { | 2904 { |
2905 if (!m_resizerAreas) | 2905 if (!m_resizerAreas) |
2906 m_resizerAreas = adoptPtr(new ResizerAreaSet); | 2906 m_resizerAreas = adoptPtr(new ResizerAreaSet); |
2907 m_resizerAreas->add(&resizerBox); | 2907 m_resizerAreas->add(&resizerBox); |
2908 } | 2908 } |
2909 | 2909 |
2910 void FrameView::removeResizerArea(RenderBox& resizerBox) | 2910 void FrameView::removeResizerArea(LayoutBox& resizerBox) |
2911 { | 2911 { |
2912 if (!m_resizerAreas) | 2912 if (!m_resizerAreas) |
2913 return; | 2913 return; |
2914 | 2914 |
2915 ResizerAreaSet::iterator it = m_resizerAreas->find(&resizerBox); | 2915 ResizerAreaSet::iterator it = m_resizerAreas->find(&resizerBox); |
2916 if (it != m_resizerAreas->end()) | 2916 if (it != m_resizerAreas->end()) |
2917 m_resizerAreas->remove(it); | 2917 m_resizerAreas->remove(it); |
2918 } | 2918 } |
2919 | 2919 |
2920 void FrameView::addScrollableArea(ScrollableArea* scrollableArea) | 2920 void FrameView::addScrollableArea(ScrollableArea* scrollableArea) |
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4074 { | 4074 { |
4075 Settings* settings = frame().settings(); | 4075 Settings* settings = frame().settings(); |
4076 if (!settings || !settings->rootLayerScrolls()) | 4076 if (!settings || !settings->rootLayerScrolls()) |
4077 return this; | 4077 return this; |
4078 | 4078 |
4079 RenderView* renderView = this->renderView(); | 4079 RenderView* renderView = this->renderView(); |
4080 return renderView ? renderView->scrollableArea() : nullptr; | 4080 return renderView ? renderView->scrollableArea() : nullptr; |
4081 } | 4081 } |
4082 | 4082 |
4083 } // namespace blink | 4083 } // namespace blink |
OLD | NEW |