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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 #include "core/page/FrameActionScheduler.h" | 52 #include "core/page/FrameActionScheduler.h" |
53 #include "core/page/FrameTree.h" | 53 #include "core/page/FrameTree.h" |
54 #include "core/page/Settings.h" | 54 #include "core/page/Settings.h" |
55 #include "core/page/animation/AnimationController.h" | 55 #include "core/page/animation/AnimationController.h" |
56 #include "core/page/scrolling/ScrollingCoordinator.h" | 56 #include "core/page/scrolling/ScrollingCoordinator.h" |
57 #include "core/platform/ScrollAnimator.h" | 57 #include "core/platform/ScrollAnimator.h" |
58 #include "core/platform/graphics/FloatRect.h" | 58 #include "core/platform/graphics/FloatRect.h" |
59 #include "core/platform/graphics/FontCache.h" | 59 #include "core/platform/graphics/FontCache.h" |
60 #include "core/platform/graphics/GraphicsContext.h" | 60 #include "core/platform/graphics/GraphicsContext.h" |
61 #include "core/platform/text/TextStream.h" | 61 #include "core/platform/text/TextStream.h" |
62 #include "core/rendering/RenderArena.h" | |
63 #include "core/rendering/RenderEmbeddedObject.h" | 62 #include "core/rendering/RenderEmbeddedObject.h" |
64 #include "core/rendering/RenderLayer.h" | 63 #include "core/rendering/RenderLayer.h" |
65 #include "core/rendering/RenderLayerBacking.h" | 64 #include "core/rendering/RenderLayerBacking.h" |
66 #include "core/rendering/RenderLayerCompositor.h" | 65 #include "core/rendering/RenderLayerCompositor.h" |
67 #include "core/rendering/RenderLazyBlock.h" | 66 #include "core/rendering/RenderLazyBlock.h" |
68 #include "core/rendering/RenderPart.h" | 67 #include "core/rendering/RenderPart.h" |
69 #include "core/rendering/RenderScrollbar.h" | 68 #include "core/rendering/RenderScrollbar.h" |
70 #include "core/rendering/RenderScrollbarPart.h" | 69 #include "core/rendering/RenderScrollbarPart.h" |
71 #include "core/rendering/RenderTheme.h" | 70 #include "core/rendering/RenderTheme.h" |
72 #include "core/rendering/RenderView.h" | 71 #include "core/rendering/RenderView.h" |
(...skipping 2078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2151 | 2150 |
2152 bool FrameView::updateWidgets() | 2151 bool FrameView::updateWidgets() |
2153 { | 2152 { |
2154 if (m_nestedLayoutCount > 1 || !m_widgetUpdateSet || m_widgetUpdateSet->isEm
pty()) | 2153 if (m_nestedLayoutCount > 1 || !m_widgetUpdateSet || m_widgetUpdateSet->isEm
pty()) |
2155 return true; | 2154 return true; |
2156 | 2155 |
2157 size_t size = m_widgetUpdateSet->size(); | 2156 size_t size = m_widgetUpdateSet->size(); |
2158 | 2157 |
2159 Vector<RenderObject*> objects; | 2158 Vector<RenderObject*> objects; |
2160 objects.reserveInitialCapacity(size); | 2159 objects.reserveInitialCapacity(size); |
2161 // Protect RendereArena from getting wiped out, when Document is detached du
ring updateWidget(). | |
2162 RefPtr<RenderArena> protectedArena = m_frame->document()->renderArena(); | |
2163 | 2160 |
2164 RenderObjectSet::const_iterator end = m_widgetUpdateSet->end(); | 2161 RenderObjectSet::const_iterator end = m_widgetUpdateSet->end(); |
2165 for (RenderObjectSet::const_iterator it = m_widgetUpdateSet->begin(); it !=
end; ++it) { | 2162 for (RenderObjectSet::const_iterator it = m_widgetUpdateSet->begin(); it !=
end; ++it) { |
2166 RenderObject* object = *it; | 2163 RenderObject* object = *it; |
2167 objects.uncheckedAppend(object); | 2164 objects.uncheckedAppend(object); |
2168 if (object->isEmbeddedObject()) { | 2165 if (object->isEmbeddedObject()) { |
2169 RenderEmbeddedObject* embeddedObject = static_cast<RenderEmbeddedObj
ect*>(object); | 2166 RenderEmbeddedObject* embeddedObject = static_cast<RenderEmbeddedObj
ect*>(object); |
2170 embeddedObject->ref(); | 2167 embeddedObject->ref(); |
2171 } | 2168 } |
2172 } | 2169 } |
2173 | 2170 |
2174 for (size_t i = 0; i < size; ++i) { | 2171 for (size_t i = 0; i < size; ++i) { |
2175 RenderObject* object = objects[i]; | 2172 RenderObject* object = objects[i]; |
2176 updateWidget(object); | 2173 updateWidget(object); |
2177 m_widgetUpdateSet->remove(object); | 2174 m_widgetUpdateSet->remove(object); |
2178 } | 2175 } |
2179 | 2176 |
2180 for (size_t i = 0; i < size; ++i) { | 2177 for (size_t i = 0; i < size; ++i) { |
2181 RenderObject* object = objects[i]; | 2178 RenderObject* object = objects[i]; |
2182 if (object->isEmbeddedObject()) { | 2179 if (object->isEmbeddedObject()) { |
2183 RenderEmbeddedObject* embeddedObject = static_cast<RenderEmbeddedObj
ect*>(object); | 2180 RenderEmbeddedObject* embeddedObject = static_cast<RenderEmbeddedObj
ect*>(object); |
2184 embeddedObject->deref(protectedArena.get()); | 2181 embeddedObject->deref(); |
2185 } | 2182 } |
2186 } | 2183 } |
2187 | 2184 |
2188 return m_widgetUpdateSet->isEmpty(); | 2185 return m_widgetUpdateSet->isEmpty(); |
2189 } | 2186 } |
2190 | 2187 |
2191 void FrameView::flushAnyPendingPostLayoutTasks() | 2188 void FrameView::flushAnyPendingPostLayoutTasks() |
2192 { | 2189 { |
2193 if (!m_postLayoutTasksTimer.isActive()) | 2190 if (!m_postLayoutTasksTimer.isActive()) |
2194 return; | 2191 return; |
(...skipping 1184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3379 } | 3376 } |
3380 | 3377 |
3381 AXObjectCache* FrameView::axObjectCache() const | 3378 AXObjectCache* FrameView::axObjectCache() const |
3382 { | 3379 { |
3383 if (frame() && frame()->document()) | 3380 if (frame() && frame()->document()) |
3384 return frame()->document()->existingAXObjectCache(); | 3381 return frame()->document()->existingAXObjectCache(); |
3385 return 0; | 3382 return 0; |
3386 } | 3383 } |
3387 | 3384 |
3388 } // namespace WebCore | 3385 } // namespace WebCore |
OLD | NEW |