Diff
Modified: trunk/Source/WebCore/ChangeLog (154298 => 154299)
--- trunk/Source/WebCore/ChangeLog 2013-08-19 21:26:10 UTC (rev 154298)
+++ trunk/Source/WebCore/ChangeLog 2013-08-19 21:39:43 UTC (rev 154299)
@@ -1,5 +1,24 @@
2013-08-19 Benjamin Poulain <[email protected]>
+ <https://webkit.org/b/119936> Fix some encapsulation issues of RuleSet
+
+ Reviewed by Darin Adler.
+
+ None of the attributes of RuleSet should be modified directly.
+
+ * css/DocumentRuleSets.cpp:
+ (WebCore::DocumentRuleSets::initUserStyle):
+ * css/ElementRuleCollector.cpp:
+ (WebCore::ElementRuleCollector::collectMatchingRulesForRegion):
+ * css/RuleSet.h:
+ (WebCore::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair):
+ (WebCore::RuleSet::regionSelectorsAndRuleSets):
+ (WebCore::RuleSet::ruleCount):
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::checkRegionStyle):
+
+2013-08-19 Benjamin Poulain <[email protected]>
+
<https://webkit.org/b/119937> Remove ElementRuleCollector's m_behaviorAtBoundary
Reviewed by Darin Adler.
Modified: trunk/Source/WebCore/css/DocumentRuleSets.cpp (154298 => 154299)
--- trunk/Source/WebCore/css/DocumentRuleSets.cpp 2013-08-19 21:26:10 UTC (rev 154298)
+++ trunk/Source/WebCore/css/DocumentRuleSets.cpp 2013-08-19 21:39:43 UTC (rev 154299)
@@ -53,7 +53,7 @@
tempUserStyle->addRulesFromSheet(pageUserSheet->contents(), medium, &resolver);
collectRulesFromUserStyleSheets(styleSheetCollection->injectedUserStyleSheets(), *tempUserStyle, medium, resolver);
collectRulesFromUserStyleSheets(styleSheetCollection->documentUserStyleSheets(), *tempUserStyle, medium, resolver);
- if (tempUserStyle->m_ruleCount > 0 || tempUserStyle->m_pageRules.size() > 0)
+ if (tempUserStyle->ruleCount() > 0 || tempUserStyle->pageRules().size() > 0)
m_userStyle = tempUserStyle.release();
}
Modified: trunk/Source/WebCore/css/ElementRuleCollector.cpp (154298 => 154299)
--- trunk/Source/WebCore/css/ElementRuleCollector.cpp 2013-08-19 21:26:10 UTC (rev 154298)
+++ trunk/Source/WebCore/css/ElementRuleCollector.cpp 2013-08-19 21:39:43 UTC (rev 154299)
@@ -179,11 +179,11 @@
if (!m_regionForStyling)
return;
- unsigned size = matchRequest.ruleSet->m_regionSelectorsAndRuleSets.size();
+ unsigned size = matchRequest.ruleSet->regionSelectorsAndRuleSets().size();
for (unsigned i = 0; i < size; ++i) {
- const CSSSelector* regionSelector = matchRequest.ruleSet->m_regionSelectorsAndRuleSets.at(i).selector;
+ const CSSSelector* regionSelector = matchRequest.ruleSet->regionSelectorsAndRuleSets().at(i).selector;
if (checkRegionSelector(regionSelector, toElement(m_regionForStyling->node()))) {
- RuleSet* regionRules = matchRequest.ruleSet->m_regionSelectorsAndRuleSets.at(i).ruleSet.get();
+ RuleSet* regionRules = matchRequest.ruleSet->regionSelectorsAndRuleSets().at(i).ruleSet.get();
ASSERT(regionRules);
collectMatchingRules(MatchRequest(regionRules, matchRequest.includeEmptyRules, matchRequest.scope), ruleRange);
}
Modified: trunk/Source/WebCore/css/RuleSet.h (154298 => 154299)
--- trunk/Source/WebCore/css/RuleSet.h 2013-08-19 21:26:10 UTC (rev 154298)
+++ trunk/Source/WebCore/css/RuleSet.h 2013-08-19 21:39:43 UTC (rev 154299)
@@ -106,6 +106,14 @@
class RuleSet {
WTF_MAKE_NONCOPYABLE(RuleSet); WTF_MAKE_FAST_ALLOCATED;
public:
+ struct RuleSetSelectorPair {
+ RuleSetSelectorPair(const CSSSelector* selector, PassOwnPtr<RuleSet> ruleSet) : selector(selector), ruleSet(ruleSet) { }
+ RuleSetSelectorPair(const RuleSetSelectorPair& pair) : selector(pair.selector), ruleSet(const_cast<RuleSetSelectorPair*>(&pair)->ruleSet.release()) { }
+
+ const CSSSelector* selector;
+ OwnPtr<RuleSet> ruleSet;
+ };
+
static PassOwnPtr<RuleSet> create() { return adoptPtr(new RuleSet); }
typedef HashMap<AtomicStringImpl*, OwnPtr<Vector<RuleData> > > AtomRuleMap;
@@ -133,12 +141,14 @@
const Vector<RuleData>* focusPseudoClassRules() const { return &m_focusPseudoClassRules; }
const Vector<RuleData>* universalRules() const { return &m_universalRules; }
const Vector<StyleRulePage*>& pageRules() const { return m_pageRules; }
+ const Vector<RuleSetSelectorPair>& regionSelectorsAndRuleSets() const { return m_regionSelectorsAndRuleSets; }
+ unsigned ruleCount() const { return m_ruleCount; }
+
private:
void addChildRules(const Vector<RefPtr<StyleRuleBase> >&, const MediaQueryEvaluator& medium, StyleResolver*, const ContainerNode* scope, bool hasDocumentSecurityOrigin, AddRuleFlags);
bool findBestRuleSetAndAdd(const CSSSelector*, RuleData&);
-public:
RuleSet();
AtomRuleMap m_idRules;
@@ -155,15 +165,6 @@
unsigned m_ruleCount;
bool m_autoShrinkToFitEnabled;
RuleFeatureSet m_features;
-
- struct RuleSetSelectorPair {
- RuleSetSelectorPair(const CSSSelector* selector, PassOwnPtr<RuleSet> ruleSet) : selector(selector), ruleSet(ruleSet) { }
- RuleSetSelectorPair(const RuleSetSelectorPair& rs) : selector(rs.selector), ruleSet(const_cast<RuleSetSelectorPair*>(&rs)->ruleSet.release()) { }
-
- const CSSSelector* selector;
- OwnPtr<RuleSet> ruleSet;
- };
-
Vector<RuleSetSelectorPair> m_regionSelectorsAndRuleSets;
};
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (154298 => 154299)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2013-08-19 21:26:10 UTC (rev 154298)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2013-08-19 21:39:43 UTC (rev 154299)
@@ -1432,18 +1432,18 @@
// FIXME (BUG 72472): We don't add @-webkit-region rules of scoped style sheets for the moment,
// so all region rules are global by default. Verify whether that can stand or needs changing.
- unsigned rulesSize = m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.size();
+ unsigned rulesSize = m_ruleSets.authorStyle()->regionSelectorsAndRuleSets().size();
for (unsigned i = 0; i < rulesSize; ++i) {
- ASSERT(m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.at(i).ruleSet.get());
- if (checkRegionSelector(m_ruleSets.authorStyle()->m_regionSelectorsAndRuleSets.at(i).selector, regionElement))
+ ASSERT(m_ruleSets.authorStyle()->regionSelectorsAndRuleSets().at(i).ruleSet.get());
+ if (checkRegionSelector(m_ruleSets.authorStyle()->regionSelectorsAndRuleSets().at(i).selector, regionElement))
return true;
}
if (m_ruleSets.userStyle()) {
- rulesSize = m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.size();
+ rulesSize = m_ruleSets.userStyle()->regionSelectorsAndRuleSets().size();
for (unsigned i = 0; i < rulesSize; ++i) {
- ASSERT(m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.at(i).ruleSet.get());
- if (checkRegionSelector(m_ruleSets.userStyle()->m_regionSelectorsAndRuleSets.at(i).selector, regionElement))
+ ASSERT(m_ruleSets.userStyle()->regionSelectorsAndRuleSets().at(i).ruleSet.get());
+ if (checkRegionSelector(m_ruleSets.userStyle()->regionSelectorsAndRuleSets().at(i).selector, regionElement))
return true;
}
}