Index: third_party/WebKit/Source/core/dom/StyleEngine.h |
diff --git a/third_party/WebKit/Source/core/dom/StyleEngine.h b/third_party/WebKit/Source/core/dom/StyleEngine.h |
index 6e054583f30cfb379435cfed941a399d63a0bc73..175364093d1bc8dafbefd5a9f278d729a2ade94b 100644 |
--- a/third_party/WebKit/Source/core/dom/StyleEngine.h |
+++ b/third_party/WebKit/Source/core/dom/StyleEngine.h |
@@ -34,6 +34,7 @@ |
#include "bindings/core/v8/TraceWrapperMember.h" |
#include "core/CoreExport.h" |
#include "core/css/CSSFontSelectorClient.h" |
+#include "core/css/CSSGlobalRuleSet.h" |
#include "core/css/invalidation/StyleInvalidator.h" |
#include "core/css/resolver/StyleResolver.h" |
#include "core/css/resolver/StyleResolverStats.h" |
@@ -108,6 +109,9 @@ class CORE_EXPORT StyleEngine final |
void injectAuthorSheet(StyleSheetContents* authorSheet); |
CSSStyleSheet& ensureInspectorStyleSheet(); |
+ RuleSet* watchedSelectorsRuleSet() { |
+ return m_globalRuleSet.watchedSelectorsRuleSet(); |
+ } |
void clearMediaQueryRuleSetStyleSheets(); |
void updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector); |
@@ -143,28 +147,29 @@ class CORE_EXPORT StyleEngine final |
bool ignoringPendingStylesheets() const { return m_ignorePendingStylesheets; } |
unsigned maxDirectAdjacentSelectors() const { |
- return m_maxDirectAdjacentSelectors; |
+ return ruleFeatureSet().maxDirectAdjacentSelectors(); |
+ } |
+ bool usesSiblingRules() const { return ruleFeatureSet().usesSiblingRules(); } |
+ bool usesFirstLineRules() const { |
+ return ruleFeatureSet().usesFirstLineRules(); |
} |
- bool usesSiblingRules() const { return m_usesSiblingRules; } |
- bool usesFirstLineRules() const { return m_usesFirstLineRules; } |
bool usesWindowInactiveSelector() const { |
- return m_usesWindowInactiveSelector; |
+ return ruleFeatureSet().usesWindowInactiveSelector(); |
} |
bool usesRemUnits() const { return m_usesRemUnits; } |
- void setUsesRemUnit(bool b) { m_usesRemUnits = b; } |
+ void setUsesRemUnit(bool usesRemUnits) { m_usesRemUnits = usesRemUnits; } |
void resetCSSFeatureFlags(const RuleFeatureSet&); |
void shadowRootRemovedFromDocument(ShadowRoot*); |
- void appendActiveAuthorStyleSheets(); |
void addTreeBoundaryCrossingScope(const TreeScope&); |
const DocumentOrderedList& treeBoundaryCrossingScopes() const { |
return m_treeBoundaryCrossingScopes; |
} |
void resetAuthorStyle(TreeScope&); |
- StyleResolver* resolver() const { return m_resolver.get(); } |
+ StyleResolver* resolver() const { return m_resolver; } |
StyleResolver& ensureResolver() { |
if (!m_resolver) { |
@@ -172,17 +177,20 @@ class CORE_EXPORT StyleEngine final |
} else if (m_resolver->hasPendingAuthorStyleSheets()) { |
viewportRulesChanged(); |
m_resolver->appendPendingAuthorStyleSheets(); |
+ finishAppendAuthorStyleSheets(); |
+ } else if (m_globalRuleSet.isDirty()) { |
+ m_globalRuleSet.update(document()); |
} |
- return *m_resolver.get(); |
+ return *m_resolver; |
} |
- bool hasResolver() const { return m_resolver.get(); } |
+ bool hasResolver() const { return m_resolver; } |
void clearResolver(); |
void clearMasterResolver(); |
StyleInvalidator& styleInvalidator() { return m_styleInvalidator; } |
- CSSFontSelector* fontSelector() { return m_fontSelector.get(); } |
+ CSSFontSelector* fontSelector() { return m_fontSelector; } |
void setFontSelector(CSSFontSelector*); |
void removeFontFaceRules(const HeapVector<Member<const StyleRuleFontFace>>&); |
@@ -200,10 +208,12 @@ class CORE_EXPORT StyleEngine final |
StyleEngineContext&); |
void collectScopedStyleFeaturesTo(RuleFeatureSet&) const; |
- void ensureFullscreenUAStyle(); |
+ void ensureUAStyleForFullscreen(); |
+ void ensureUAStyleForElement(const Element&); |
void platformColorsChanged(); |
+ bool hasRulesForId(const AtomicString& id) const; |
void classChangedForElement(const SpaceSplitString& changedClasses, Element&); |
void classChangedForElement(const SpaceSplitString& oldClasses, |
const SpaceSplitString& newClasses, |
@@ -231,6 +241,8 @@ class CORE_EXPORT StyleEngine final |
StyleResolverStats* stats() { return m_styleResolverStats.get(); } |
void setStatsEnabled(bool); |
+ PassRefPtr<ComputedStyle> findSharedStyle(const ElementResolveContext&); |
+ |
DECLARE_VIRTUAL_TRACE(); |
DECLARE_TRACE_WRAPPERS(); |
@@ -257,8 +269,13 @@ class CORE_EXPORT StyleEngine final |
typedef HeapHashSet<Member<TreeScope>> UnorderedTreeScopeSet; |
void clearMediaQueryRuleSetOnTreeScopeStyleSheets(UnorderedTreeScopeSet&); |
+ const RuleFeatureSet& ruleFeatureSet() const { |
+ return m_globalRuleSet.ruleFeatureSet(); |
+ } |
void createResolver(); |
+ void appendActiveAuthorStyleSheets(); |
+ void finishAppendAuthorStyleSheets(); |
CSSStyleSheet* parseSheet(Element&, |
const String& text, |
@@ -313,12 +330,9 @@ class CORE_EXPORT StyleEngine final |
String m_preferredStylesheetSetName; |
String m_selectedStylesheetSetName; |
- bool m_usesSiblingRules = false; |
- bool m_usesFirstLineRules = false; |
- bool m_usesWindowInactiveSelector = false; |
- bool m_usesRemUnits = false; |
- unsigned m_maxDirectAdjacentSelectors = 0; |
+ CSSGlobalRuleSet m_globalRuleSet; |
+ bool m_usesRemUnits = false; |
bool m_ignorePendingStylesheets = false; |
bool m_didCalculateResolver = false; |