Modified: trunk/Source/WebCore/ChangeLog (102062 => 102063)
--- trunk/Source/WebCore/ChangeLog 2011-12-06 00:10:55 UTC (rev 102062)
+++ trunk/Source/WebCore/ChangeLog 2011-12-06 00:15:16 UTC (rev 102063)
@@ -1,3 +1,14 @@
+2011-12-05 Darin Adler <[email protected]>
+
+ Change RuleSet to use HashMap<OwnPtr>
+ https://bugs.webkit.org/show_bug.cgi?id=73783
+
+ Reviewed by Andreas Kling.
+
+ * css/CSSStyleSelector.cpp: Make RuleSet::AtomRuleMap use OwnPtr for the mapped values.
+ (WebCore::RuleSet::addToRuleSet): Use add instead of get/set to set up a new entry in the
+ map or find the old entry in the map.
+
2011-12-05 Mario Sanchez Prada <[email protected]>
[GTK] Move emissions of AtkDocument signals down to WebCore
Modified: trunk/Source/WebCore/css/CSSStyleSelector.cpp (102062 => 102063)
--- trunk/Source/WebCore/css/CSSStyleSelector.cpp 2011-12-06 00:10:55 UTC (rev 102062)
+++ trunk/Source/WebCore/css/CSSStyleSelector.cpp 2011-12-06 00:15:16 UTC (rev 102063)
@@ -54,9 +54,6 @@
#include "CSSTimingFunctionValue.h"
#include "CSSValueList.h"
#include "CursorList.h"
-#if ENABLE(CSS_FILTERS)
-#include "FilterOperation.h"
-#endif
#include "FontFamilyValue.h"
#include "FontFeatureValue.h"
#include "FontValue.h"
@@ -102,9 +99,6 @@
#include "TransformationMatrix.h"
#include "TranslateTransformOperation.h"
#include "UserAgentStyleSheets.h"
-#if ENABLE(CSS_FILTERS)
-#include "WebKitCSSFilterValue.h"
-#endif
#include "WebKitCSSKeyframeRule.h"
#include "WebKitCSSKeyframesRule.h"
#include "WebKitCSSRegionRule.h"
@@ -114,6 +108,11 @@
#include <wtf/StdLibExtras.h>
#include <wtf/Vector.h>
+#if ENABLE(CSS_FILTERS)
+#include "FilterOperation.h"
+#include "WebKitCSSFilterValue.h"
+#endif
+
#if ENABLE(DASHBOARD_SUPPORT)
#include "DashboardRegion.h"
#endif
@@ -203,17 +202,15 @@
WTF_MAKE_NONCOPYABLE(RuleSet);
public:
RuleSet();
- ~RuleSet();
- typedef HashMap<AtomicStringImpl*, Vector<RuleData>*> AtomRuleMap;
+ typedef HashMap<AtomicStringImpl*, OwnPtr<Vector<RuleData> > > AtomRuleMap;
void addRulesFromSheet(CSSStyleSheet*, const MediaQueryEvaluator&, CSSStyleSelector* = 0);
void addStyleRule(CSSStyleRule* item);
void addRule(CSSStyleRule* rule, CSSSelector* sel);
void addPageRule(CSSPageRule*);
- void addToRuleSet(AtomicStringImpl* key, AtomRuleMap& map,
- CSSStyleRule* rule, CSSSelector* sel);
+ void addToRuleSet(AtomicStringImpl* key, AtomRuleMap&, CSSStyleRule*, CSSSelector*);
void shrinkToFit();
void disableAutoShrinkToFit() { m_autoShrinkToFitEnabled = false; }
@@ -1858,27 +1855,16 @@
{
}
-RuleSet::~RuleSet()
+void RuleSet::addToRuleSet(AtomicStringImpl* key, AtomRuleMap& map, CSSStyleRule* rule, CSSSelector* selector)
{
- deleteAllValues(m_idRules);
- deleteAllValues(m_classRules);
- deleteAllValues(m_shadowPseudoElementRules);
- deleteAllValues(m_tagRules);
+ if (!key)
+ return;
+ OwnPtr<Vector<RuleData> >& rules = map.add(key, nullptr).first->second;
+ if (!rules)
+ rules = adoptPtr(new Vector<RuleData>);
+ rules->append(RuleData(rule, selector, m_ruleCount++));
}
-
-void RuleSet::addToRuleSet(AtomicStringImpl* key, AtomRuleMap& map,
- CSSStyleRule* rule, CSSSelector* sel)
-{
- if (!key) return;
- Vector<RuleData>* rules = map.get(key);
- if (!rules) {
- rules = new Vector<RuleData>;
- map.set(key, rules);
- }
- rules->append(RuleData(rule, sel, m_ruleCount++));
-}
-
void RuleSet::addRule(CSSStyleRule* rule, CSSSelector* sel)
{
if (sel->m_match == CSSSelector::Id) {