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

Unified Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 19232002: Do not modify document in StyleResolverState (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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
« no previous file with comments | « no previous file | Source/core/css/resolver/StyleResolverState.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/resolver/StyleResolver.cpp
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
index bc218a0dbd6f59582f823de6b9dd12f75268cd66..45ff268a2759aa37b19cc9580245635b31bdcdea 100644
--- a/Source/core/css/resolver/StyleResolver.cpp
+++ b/Source/core/css/resolver/StyleResolver.cpp
@@ -675,6 +675,13 @@ static inline bool isAtShadowBoundary(const Element* element)
return parentNode && parentNode->isShadowRoot();
}
+static inline void resetDirectionAndWritingModeOnDocument(Document* document)
+{
+ document->setDirectionSetOnDocumentElement(false);
+ document->setWritingModeSetOnDocumentElement(false);
+}
+
+
PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderStyle* defaultParent, StyleSharingBehavior sharingBehavior,
RuleMatchingBehavior matchingBehavior, RenderRegion* regionForStyling)
{
@@ -690,8 +697,11 @@ PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderS
return s_styleNotYetAvailable;
}
+ if (element == document()->documentElement())
+ resetDirectionAndWritingModeOnDocument(document());
StyleResolverState& state = m_state;
StyleResolveScope resolveScope(&state, document(), element, defaultParent, regionForStyling);
+
if (sharingBehavior == AllowStyleSharing && !state.distributedToInsertionPoint() && state.parentStyle()) {
SharedStyleFinder styleFinder(m_features, m_siblingRuleSet.get(), m_uncommonAttributeRuleSet.get(), this);
RefPtr<RenderStyle> sharedStyle = styleFinder.locateSharedStyle(state.elementContext());
@@ -759,6 +769,8 @@ PassRefPtr<RenderStyle> StyleResolver::styleForElement(Element* element, RenderS
PassRefPtr<RenderStyle> StyleResolver::styleForKeyframe(Element* e, const RenderStyle* elementStyle, const StyleKeyframe* keyframe, KeyframeValue& keyframeValue)
{
+ if (e == document()->documentElement())
+ resetDirectionAndWritingModeOnDocument(document());
StyleResolveScope resolveScope(&m_state, document(), e);
MatchResult result;
@@ -882,8 +894,9 @@ PassRefPtr<RenderStyle> StyleResolver::pseudoStyleForElement(Element* e, const P
if (!e)
return 0;
+ if (e == document()->documentElement())
+ resetDirectionAndWritingModeOnDocument(document());
StyleResolverState& state = m_state;
-
StyleResolveScope resolveScope(&state, document(), e, parentStyle);
if (pseudoStyleRequest.allowsInheritance(state.parentStyle())) {
@@ -929,6 +942,7 @@ PassRefPtr<RenderStyle> StyleResolver::pseudoStyleForElement(Element* e, const P
PassRefPtr<RenderStyle> StyleResolver::styleForPage(int pageIndex)
{
+ resetDirectionAndWritingModeOnDocument(document());
StyleResolverState& state = m_state;
StyleResolveScope resolveScope(&state, document(), document()->documentElement()); // m_rootElementStyle will be set to the document style.
@@ -1386,6 +1400,8 @@ PassRefPtr<CSSRuleList> StyleResolver::pseudoStyleRulesForElement(Element* e, Ps
if (!e || !e->document()->haveStylesheetsLoaded())
return 0;
+ if (e == document()->documentElement())
+ resetDirectionAndWritingModeOnDocument(document());
StyleResolveScope resolveScope(&m_state, document(), e);
ElementRuleCollector collector(m_state.elementContext(), m_selectorFilter, m_state.style(), m_inspectorCSSOMWrappers);
« no previous file with comments | « no previous file | Source/core/css/resolver/StyleResolverState.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698