| 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #include "core/rendering/LayoutIndicator.h" | 58 #include "core/rendering/LayoutIndicator.h" |
| 59 #include "core/rendering/RenderCounter.h" | 59 #include "core/rendering/RenderCounter.h" |
| 60 #include "core/rendering/RenderEmbeddedObject.h" | 60 #include "core/rendering/RenderEmbeddedObject.h" |
| 61 #include "core/rendering/RenderLayer.h" | 61 #include "core/rendering/RenderLayer.h" |
| 62 #include "core/rendering/RenderLayerCompositor.h" | 62 #include "core/rendering/RenderLayerCompositor.h" |
| 63 #include "core/rendering/RenderPart.h" | 63 #include "core/rendering/RenderPart.h" |
| 64 #include "core/rendering/RenderScrollbar.h" | 64 #include "core/rendering/RenderScrollbar.h" |
| 65 #include "core/rendering/RenderScrollbarPart.h" | 65 #include "core/rendering/RenderScrollbarPart.h" |
| 66 #include "core/rendering/RenderTheme.h" | 66 #include "core/rendering/RenderTheme.h" |
| 67 #include "core/rendering/RenderView.h" | 67 #include "core/rendering/RenderView.h" |
| 68 #include "core/rendering/RenderWidget.h" |
| 68 #include "core/rendering/TextAutosizer.h" | 69 #include "core/rendering/TextAutosizer.h" |
| 69 #include "core/rendering/style/RenderStyle.h" | 70 #include "core/rendering/style/RenderStyle.h" |
| 70 #include "core/rendering/svg/RenderSVGRoot.h" | 71 #include "core/rendering/svg/RenderSVGRoot.h" |
| 71 #include "core/svg/SVGDocument.h" | 72 #include "core/svg/SVGDocument.h" |
| 72 #include "core/svg/SVGSVGElement.h" | 73 #include "core/svg/SVGSVGElement.h" |
| 73 #include "platform/TraceEvent.h" | 74 #include "platform/TraceEvent.h" |
| 74 #include "platform/fonts/FontCache.h" | 75 #include "platform/fonts/FontCache.h" |
| 75 #include "platform/geometry/FloatRect.h" | 76 #include "platform/geometry/FloatRect.h" |
| 76 #include "platform/graphics/GraphicsContext.h" | 77 #include "platform/graphics/GraphicsContext.h" |
| 77 #include "platform/graphics/GraphicsLayerDebugInfo.h" | 78 #include "platform/graphics/GraphicsLayerDebugInfo.h" |
| (...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 945 void FrameView::scheduleOrPerformPostLayoutTasks() | 946 void FrameView::scheduleOrPerformPostLayoutTasks() |
| 946 { | 947 { |
| 947 if (m_postLayoutTasksTimer.isActive()) | 948 if (m_postLayoutTasksTimer.isActive()) |
| 948 return; | 949 return; |
| 949 | 950 |
| 950 // Partial layouts should not happen with synchronous post layouts. | 951 // Partial layouts should not happen with synchronous post layouts. |
| 951 ASSERT(!(m_inSynchronousPostLayout && partialLayout().isStopping())); | 952 ASSERT(!(m_inSynchronousPostLayout && partialLayout().isStopping())); |
| 952 | 953 |
| 953 if (!m_inSynchronousPostLayout) { | 954 if (!m_inSynchronousPostLayout) { |
| 954 if (frame().document()->shouldDisplaySeamlesslyWithParent()) { | 955 if (frame().document()->shouldDisplaySeamlesslyWithParent()) { |
| 955 if (RenderView* renderView = this->renderView()) | 956 updateWidgetPositions(); |
| 956 renderView->updateWidgetPositions(); | |
| 957 } else { | 957 } else { |
| 958 m_inSynchronousPostLayout = true; | 958 m_inSynchronousPostLayout = true; |
| 959 // Calls resumeScheduledEvents() | 959 // Calls resumeScheduledEvents() |
| 960 performPostLayoutTasks(); | 960 performPostLayoutTasks(); |
| 961 m_inSynchronousPostLayout = false; | 961 m_inSynchronousPostLayout = false; |
| 962 } | 962 } |
| 963 } | 963 } |
| 964 | 964 |
| 965 if (!m_postLayoutTasksTimer.isActive() && (needsLayout() || m_inSynchronousP
ostLayout || frame().document()->shouldDisplaySeamlesslyWithParent())) { | 965 if (!m_postLayoutTasksTimer.isActive() && (needsLayout() || m_inSynchronousP
ostLayout || frame().document()->shouldDisplaySeamlesslyWithParent())) { |
| 966 // If we need layout or are already in a synchronous call to postLayoutT
asks(), | 966 // If we need layout or are already in a synchronous call to postLayoutT
asks(), |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1256 if (!firstChild || !firstChild->isBox()) | 1256 if (!firstChild || !firstChild->isBox()) |
| 1257 return 0; | 1257 return 0; |
| 1258 | 1258 |
| 1259 // Curently only embedded SVG documents participate in the size-negotiation
logic. | 1259 // Curently only embedded SVG documents participate in the size-negotiation
logic. |
| 1260 if (firstChild->isSVGRoot()) | 1260 if (firstChild->isSVGRoot()) |
| 1261 return toRenderBox(firstChild); | 1261 return toRenderBox(firstChild); |
| 1262 | 1262 |
| 1263 return 0; | 1263 return 0; |
| 1264 } | 1264 } |
| 1265 | 1265 |
| 1266 |
| 1267 void FrameView::addWidget(RenderWidget* object) |
| 1268 { |
| 1269 m_widgets.add(object); |
| 1270 } |
| 1271 |
| 1272 void FrameView::removeWidget(RenderWidget* object) |
| 1273 { |
| 1274 m_widgets.remove(object); |
| 1275 } |
| 1276 |
| 1277 void FrameView::updateWidgetPositions() |
| 1278 { |
| 1279 Vector<RefPtr<RenderWidget> > widgets; |
| 1280 copyToVector(m_widgets, widgets); |
| 1281 |
| 1282 // Script or plugins could detach the frame so abort processing if that happ
ens. |
| 1283 |
| 1284 for (size_t i = 0; i < widgets.size() && renderView(); ++i) |
| 1285 widgets[i]->updateWidgetPosition(); |
| 1286 |
| 1287 for (size_t i = 0; i < widgets.size() && renderView(); ++i) |
| 1288 widgets[i]->widgetPositionsUpdated(); |
| 1289 } |
| 1290 |
| 1266 void FrameView::addWidgetToUpdate(RenderEmbeddedObject& object) | 1291 void FrameView::addWidgetToUpdate(RenderEmbeddedObject& object) |
| 1267 { | 1292 { |
| 1268 // Tell the DOM element that it needs a widget update. | 1293 // Tell the DOM element that it needs a widget update. |
| 1269 Node* node = object.node(); | 1294 Node* node = object.node(); |
| 1270 if (node->hasTagName(objectTag) || node->hasTagName(embedTag)) | 1295 if (node->hasTagName(objectTag) || node->hasTagName(embedTag)) |
| 1271 toHTMLPlugInElement(node)->setNeedsWidgetUpdate(true); | 1296 toHTMLPlugInElement(node)->setNeedsWidgetUpdate(true); |
| 1272 | 1297 |
| 1273 m_widgetUpdateSet.add(&object); | 1298 m_widgetUpdateSet.add(&object); |
| 1274 } | 1299 } |
| 1275 | 1300 |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1727 } | 1752 } |
| 1728 | 1753 |
| 1729 if (m_frame->document() && m_frame->document()->renderer()) { | 1754 if (m_frame->document() && m_frame->document()->renderer()) { |
| 1730 ResourceLoadPriorityOptimizer modifier; | 1755 ResourceLoadPriorityOptimizer modifier; |
| 1731 m_frame->document()->renderer()->didScroll(modifier); | 1756 m_frame->document()->renderer()->didScroll(modifier); |
| 1732 } | 1757 } |
| 1733 } | 1758 } |
| 1734 | 1759 |
| 1735 void FrameView::repaintFixedElementsAfterScrolling() | 1760 void FrameView::repaintFixedElementsAfterScrolling() |
| 1736 { | 1761 { |
| 1762 RefPtr<FrameView> protect(this); |
| 1737 // For fixed position elements, update widget positions and compositing laye
rs after scrolling, | 1763 // For fixed position elements, update widget positions and compositing laye
rs after scrolling, |
| 1738 // but only if we're not inside of layout. | 1764 // but only if we're not inside of layout. |
| 1739 if (!m_nestedLayoutCount && hasViewportConstrainedObjects()) { | 1765 if (!m_nestedLayoutCount && hasViewportConstrainedObjects()) { |
| 1740 if (RenderView* renderView = this->renderView()) { | 1766 updateWidgetPositions(); |
| 1741 renderView->updateWidgetPositions(); | 1767 if (RenderView* renderView = this->renderView()) |
| 1742 renderView->layer()->updateLayerPositionsAfterDocumentScroll(); | 1768 renderView->layer()->updateLayerPositionsAfterDocumentScroll(); |
| 1743 } | |
| 1744 } | 1769 } |
| 1745 } | 1770 } |
| 1746 | 1771 |
| 1747 void FrameView::updateFixedElementsAfterScrolling() | 1772 void FrameView::updateFixedElementsAfterScrolling() |
| 1748 { | 1773 { |
| 1749 if (m_nestedLayoutCount <= 1 && hasViewportConstrainedObjects()) { | 1774 if (m_nestedLayoutCount <= 1 && hasViewportConstrainedObjects()) { |
| 1750 if (RenderView* renderView = this->renderView()) | 1775 if (RenderView* renderView = this->renderView()) |
| 1751 renderView->compositor()->setNeedsCompositingUpdate(CompositingUpdat
eOnScroll); | 1776 renderView->compositor()->setNeedsCompositingUpdate(CompositingUpdat
eOnScroll); |
| 1752 } | 1777 } |
| 1753 } | 1778 } |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2293 if (m_isVisuallyNonEmpty && !m_frame->document()->didLayoutWithPendingSt
ylesheets() && m_firstVisuallyNonEmptyLayoutCallbackPending) { | 2318 if (m_isVisuallyNonEmpty && !m_frame->document()->didLayoutWithPendingSt
ylesheets() && m_firstVisuallyNonEmptyLayoutCallbackPending) { |
| 2294 m_firstVisuallyNonEmptyLayoutCallbackPending = false; | 2319 m_firstVisuallyNonEmptyLayoutCallbackPending = false; |
| 2295 // FIXME: This callback is probably not needed, but is currently use
d | 2320 // FIXME: This callback is probably not needed, but is currently use
d |
| 2296 // by android for setting the background color. | 2321 // by android for setting the background color. |
| 2297 m_frame->loader().client()->dispatchDidFirstVisuallyNonEmptyLayout()
; | 2322 m_frame->loader().client()->dispatchDidFirstVisuallyNonEmptyLayout()
; |
| 2298 } | 2323 } |
| 2299 } | 2324 } |
| 2300 | 2325 |
| 2301 FontFaceSet::didLayout(m_frame->document()); | 2326 FontFaceSet::didLayout(m_frame->document()); |
| 2302 | 2327 |
| 2303 RenderView* renderView = this->renderView(); | 2328 updateWidgetPositions(); |
| 2304 if (renderView) | 2329 |
| 2305 renderView->updateWidgetPositions(); | 2330 // Plugins could have torn down the page inside updateWidgetPositions(). |
| 2331 if (!renderView()) |
| 2332 return; |
| 2306 | 2333 |
| 2307 if (!m_updateWidgetsTimer.isActive()) | 2334 if (!m_updateWidgetsTimer.isActive()) |
| 2308 m_updateWidgetsTimer.startOneShot(0); | 2335 m_updateWidgetsTimer.startOneShot(0); |
| 2309 | 2336 |
| 2310 if (Page* page = m_frame->page()) { | 2337 if (Page* page = m_frame->page()) { |
| 2311 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordina
tor()) | 2338 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordina
tor()) |
| 2312 scrollingCoordinator->notifyLayoutUpdated(); | 2339 scrollingCoordinator->notifyLayoutUpdated(); |
| 2313 } | 2340 } |
| 2314 | 2341 |
| 2315 scrollToAnchor(); | 2342 scrollToAnchor(); |
| (...skipping 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3510 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) | 3537 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) |
| 3511 { | 3538 { |
| 3512 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); | 3539 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); |
| 3513 if (AXObjectCache* cache = axObjectCache()) { | 3540 if (AXObjectCache* cache = axObjectCache()) { |
| 3514 cache->remove(scrollbar); | 3541 cache->remove(scrollbar); |
| 3515 cache->handleScrollbarUpdate(this); | 3542 cache->handleScrollbarUpdate(this); |
| 3516 } | 3543 } |
| 3517 } | 3544 } |
| 3518 | 3545 |
| 3519 } // namespace WebCore | 3546 } // namespace WebCore |
| OLD | NEW |