Title: [154542] trunk/Source/WebCore
- Revision
- 154542
- Author
- [email protected]
- Date
- 2013-08-24 04:21:22 -0700 (Sat, 24 Aug 2013)
Log Message
Let Document keep its RenderView during render tree detach.
<https://webkit.org/b/120233>
Reviewed by Antti Koivisto.
Instead of having "Document::renderer() == NULL" signify that the render tree is being
torn down, give Document an explicit flag for this instead.
This way, we can keep Document's RenderView in place during tree detach.
* dom/Document.cpp:
(WebCore::Document::Document):
(WebCore::Document::detach):
* dom/Document.h:
(WebCore::Document::renderTreeBeingDestroyed):
* rendering/RenderObject.h:
(WebCore::RenderObject::documentBeingDestroyed):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (154541 => 154542)
--- trunk/Source/WebCore/ChangeLog 2013-08-24 11:09:26 UTC (rev 154541)
+++ trunk/Source/WebCore/ChangeLog 2013-08-24 11:21:22 UTC (rev 154542)
@@ -1,3 +1,23 @@
+2013-08-24 Andreas Kling <[email protected]>
+
+ Let Document keep its RenderView during render tree detach.
+ <https://webkit.org/b/120233>
+
+ Reviewed by Antti Koivisto.
+
+ Instead of having "Document::renderer() == NULL" signify that the render tree is being
+ torn down, give Document an explicit flag for this instead.
+
+ This way, we can keep Document's RenderView in place during tree detach.
+
+ * dom/Document.cpp:
+ (WebCore::Document::Document):
+ (WebCore::Document::detach):
+ * dom/Document.h:
+ (WebCore::Document::renderTreeBeingDestroyed):
+ * rendering/RenderObject.h:
+ (WebCore::RenderObject::documentBeingDestroyed):
+
2013-08-24 Antti Koivisto <[email protected]>
Tighten before/after pseudo element accessors
Modified: trunk/Source/WebCore/dom/Document.cpp (154541 => 154542)
--- trunk/Source/WebCore/dom/Document.cpp 2013-08-24 11:09:26 UTC (rev 154541)
+++ trunk/Source/WebCore/dom/Document.cpp 2013-08-24 11:21:22 UTC (rev 154542)
@@ -165,6 +165,7 @@
#include <wtf/CurrentTime.h>
#include <wtf/MainThread.h>
#include <wtf/PassRefPtr.h>
+#include <wtf/TemporaryChange.h>
#include <wtf/text/StringBuffer.h>
#if USE(ACCELERATED_COMPOSITING)
@@ -480,6 +481,7 @@
#endif
, m_didAssociateFormControlsTimer(this, &Document::didAssociateFormControlsTimerFired)
, m_hasInjectedPlugInsScript(false)
+ , m_renderTreeBeingDestroyed(false)
{
if (m_frame)
provideContextFeaturesToDocumentFrom(this, m_frame->page());
@@ -2010,8 +2012,6 @@
clearScriptedAnimationController();
#endif
- RenderObject* render = renderer();
-
documentWillBecomeInactive();
#if ENABLE(SHARED_WORKERS)
@@ -2025,9 +2025,6 @@
}
- // indicate destruction mode, i.e. attached() but renderer == 0
- setRenderer(0);
-
#if ENABLE(FULLSCREEN_API)
if (m_fullScreenRenderer)
setFullScreenRenderer(0);
@@ -2037,6 +2034,8 @@
m_focusedElement = 0;
m_activeElement = 0;
+ TemporaryChange<bool> change(m_renderTreeBeingDestroyed, true);
+
for (Element* child = ElementTraversal::firstWithin(this); child; child = ElementTraversal::nextSibling(child))
Style::detachRenderTree(child);
@@ -2045,8 +2044,9 @@
unscheduleStyleRecalc();
- if (render)
- render->destroy();
+ if (renderer())
+ renderer()->destroy();
+ setRenderer(0);
#if ENABLE(TOUCH_EVENTS)
if (m_touchEventTargets && m_touchEventTargets->size() && parentDocument())
Modified: trunk/Source/WebCore/dom/Document.h (154541 => 154542)
--- trunk/Source/WebCore/dom/Document.h 2013-08-24 11:09:26 UTC (rev 154541)
+++ trunk/Source/WebCore/dom/Document.h 2013-08-24 11:21:22 UTC (rev 154542)
@@ -547,6 +547,8 @@
Node::setRenderer(renderer);
}
+ bool renderTreeBeingDestroyed() const { return m_renderTreeBeingDestroyed; }
+
AXObjectCache* existingAXObjectCache() const;
AXObjectCache* axObjectCache() const;
void clearAXObjectCache();
@@ -1558,6 +1560,7 @@
HashSet<RefPtr<Element> > m_associatedFormControls;
bool m_hasInjectedPlugInsScript;
+ bool m_renderTreeBeingDestroyed;
};
inline void Document::notifyRemovePendingSheetIfNeeded()
Modified: trunk/Source/WebCore/rendering/RenderObject.h (154541 => 154542)
--- trunk/Source/WebCore/rendering/RenderObject.h 2013-08-24 11:09:26 UTC (rev 154541)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2013-08-24 11:21:22 UTC (rev 154542)
@@ -1177,7 +1177,7 @@
inline bool RenderObject::documentBeingDestroyed() const
{
- return !document()->renderer();
+ return document()->renderTreeBeingDestroyed();
}
inline bool RenderObject::isBeforeContent() const
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes