Title: [102063] trunk/Source/WebCore
Revision
102063
Author
[email protected]
Date
2011-12-05 16:15:16 -0800 (Mon, 05 Dec 2011)

Log Message

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.

Modified Paths

Diff

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) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to