Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Unified Diff: Source/WebCore/rendering/RenderObject.cpp

Issue 13679002: Add StyleChangeState to get rid of a bunch of static state in the render tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/rendering/RenderObject.cpp
diff --git a/Source/WebCore/rendering/RenderObject.cpp b/Source/WebCore/rendering/RenderObject.cpp
index fb9f13930b28e669b243333e7b47b64605cf5802..236d82d4c42b2e6ef7622197002dd736626dc07b 100644
--- a/Source/WebCore/rendering/RenderObject.cpp
+++ b/Source/WebCore/rendering/RenderObject.cpp
@@ -118,8 +118,6 @@ struct SameSizeAsRenderObject {
COMPILE_ASSERT(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), RenderObject_should_stay_small);
-bool RenderObject::s_affectsParentBlock = false;
eseidel 2013/04/05 01:50:36 Do we have any clue why these came to be this way?
esprehn 2013/04/17 03:29:01 I had a discussion on IRC with apple folks way bac
-
RenderObjectAncestorLineboxDirtySet* RenderObject::s_ancestorLineboxDirtySet = 0;
void* RenderObject::operator new(size_t sz, RenderArena* renderArena)
@@ -1802,7 +1800,8 @@ void RenderObject::setStyle(PassRefPtr<RenderStyle> style)
diff = adjustStyleDifference(diff, contextSensitiveProperties);
- styleWillChange(diff, style.get());
+ StyleChangeState state;
+ styleWillChange(diff, style.get(), state);
RefPtr<RenderStyle> oldStyle = m_style.release();
setStyleInternal(style);
@@ -1820,7 +1819,7 @@ void RenderObject::setStyle(PassRefPtr<RenderStyle> style)
bool doesNotNeedLayout = !m_parent || isText();
- styleDidChange(diff, oldStyle.get());
+ styleDidChange(diff, oldStyle.get(), state);
// FIXME: |this| might be destroyed here. This can currently happen for a RenderTextFragment when
// its first-letter block gets an update in RenderTextFragment::styleDidChange. For RenderTextFragment(s),
@@ -1857,7 +1856,7 @@ static inline bool rendererHasBackground(const RenderObject* renderer)
return renderer && renderer->hasBackground();
}
-void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle)
+void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle, StyleChangeState& state)
{
if (m_style) {
// If our z-index changes value or our visibility changes,
@@ -1900,7 +1899,7 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
// from the positioned objects list.
toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists();
- s_affectsParentBlock = isFloatingOrOutOfFlowPositioned()
+ state.affectsParentBlock = isFloatingOrOutOfFlowPositioned()
&& (!newStyle->isFloating() && !newStyle->hasOutOfFlowPosition())
&& parent() && (parent()->isBlockFlow() || parent()->isRenderInline());
@@ -1914,8 +1913,7 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
setHasOverflowClip(false);
setHasTransform(false);
setHasReflection(false);
- } else
- s_affectsParentBlock = false;
+ }
if (view()->frameView()) {
bool shouldBlitOnFixedBackgroundImage = false;
@@ -1965,9 +1963,9 @@ static inline bool areCursorsEqual(const RenderStyle* a, const RenderStyle* b)
return a->cursor() == b->cursor() && (a->cursors() == b->cursors() || areNonIdenticalCursorListsEqual(a, b));
}
-void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
+void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle, const StyleChangeState& state)
{
- if (s_affectsParentBlock)
+ if (state.affectsParentBlock)
handleDynamicFloatPositionChange();
#if ENABLE(SVG)

Powered by Google App Engine
This is Rietveld 408576698