Manage RuleSet and RuleData classes through std::unique_ptr instead of OwnPtr
https://bugs.webkit.org/show_bug.cgi?id=128116
Reviewed by Darin Adler.
Replace uses of OwnPtr for the RuleSet and RuleData classes with std::unique_ptr.
* css/CSSDefaultStyleSheets.cpp:
(WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
(WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle):
(WebCore::CSSDefaultStyleSheets::viewSourceStyle):
* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::initUserStyle):
(WebCore::makeRuleSet):
(WebCore::DocumentRuleSets::resetAuthorStyle):
* css/DocumentRuleSets.h:
* css/RuleSet.cpp:
(WebCore::RuleSet::addToRuleSet):
(WebCore::RuleSet::addRegionRule):
* css/RuleSet.h:
(WebCore::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@163378 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 6037097..542b5e6 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,27 @@
+2014-02-04 Zan Dobersek <zdobersek@igalia.com>
+
+ Manage RuleSet and RuleData classes through std::unique_ptr instead of OwnPtr
+ https://bugs.webkit.org/show_bug.cgi?id=128116
+
+ Reviewed by Darin Adler.
+
+ Replace uses of OwnPtr for the RuleSet and RuleData classes with std::unique_ptr.
+
+ * css/CSSDefaultStyleSheets.cpp:
+ (WebCore::CSSDefaultStyleSheets::loadFullDefaultStyle):
+ (WebCore::CSSDefaultStyleSheets::loadSimpleDefaultStyle):
+ (WebCore::CSSDefaultStyleSheets::viewSourceStyle):
+ * css/DocumentRuleSets.cpp:
+ (WebCore::DocumentRuleSets::initUserStyle):
+ (WebCore::makeRuleSet):
+ (WebCore::DocumentRuleSets::resetAuthorStyle):
+ * css/DocumentRuleSets.h:
+ * css/RuleSet.cpp:
+ (WebCore::RuleSet::addToRuleSet):
+ (WebCore::RuleSet::addRegionRule):
+ * css/RuleSet.h:
+ (WebCore::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair):
+
2014-02-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r163376.
diff --git a/Source/WebCore/css/CSSDefaultStyleSheets.cpp b/Source/WebCore/css/CSSDefaultStyleSheets.cpp
index e700243..5624bf9 100644
--- a/Source/WebCore/css/CSSDefaultStyleSheets.cpp
+++ b/Source/WebCore/css/CSSDefaultStyleSheets.cpp
@@ -107,14 +107,14 @@
ASSERT(defaultPrintStyle == defaultStyle);
delete defaultStyle;
simpleDefaultStyleSheet->deref();
- defaultStyle = RuleSet::create().leakPtr();
- defaultPrintStyle = RuleSet::create().leakPtr();
+ defaultStyle = std::make_unique<RuleSet>().release();
+ defaultPrintStyle = std::make_unique<RuleSet>().release();
simpleDefaultStyleSheet = 0;
} else {
ASSERT(!defaultStyle);
- defaultStyle = RuleSet::create().leakPtr();
- defaultPrintStyle = RuleSet::create().leakPtr();
- defaultQuirksStyle = RuleSet::create().leakPtr();
+ defaultStyle = std::make_unique<RuleSet>().release();
+ defaultPrintStyle = std::make_unique<RuleSet>().release();
+ defaultQuirksStyle = std::make_unique<RuleSet>().release();
}
// Strict-mode rules.
@@ -134,10 +134,10 @@
ASSERT(!defaultStyle);
ASSERT(!simpleDefaultStyleSheet);
- defaultStyle = RuleSet::create().leakPtr();
+ defaultStyle = std::make_unique<RuleSet>().release();
// There are no media-specific rules in the simple default style.
defaultPrintStyle = defaultStyle;
- defaultQuirksStyle = RuleSet::create().leakPtr();
+ defaultQuirksStyle = std::make_unique<RuleSet>().release();
simpleDefaultStyleSheet = parseUASheet(simpleUserAgentStyleSheet, strlen(simpleUserAgentStyleSheet));
defaultStyle->addRulesFromSheet(simpleDefaultStyleSheet, screenEval());
@@ -149,7 +149,7 @@
{
if (!defaultViewSourceStyle) {
static StyleSheetContents* viewSourceStyleSheet = parseUASheet(sourceUserAgentStyleSheet, sizeof(sourceUserAgentStyleSheet));
- defaultViewSourceStyle = RuleSet::create().leakPtr();
+ defaultViewSourceStyle = std::make_unique<RuleSet>().release();
defaultViewSourceStyle->addRulesFromSheet(viewSourceStyleSheet, screenEval());
}
return defaultViewSourceStyle;
diff --git a/Source/WebCore/css/DocumentRuleSets.cpp b/Source/WebCore/css/DocumentRuleSets.cpp
index a3ede04..43e299d 100644
--- a/Source/WebCore/css/DocumentRuleSets.cpp
+++ b/Source/WebCore/css/DocumentRuleSets.cpp
@@ -48,13 +48,13 @@
void DocumentRuleSets::initUserStyle(DocumentStyleSheetCollection& styleSheetCollection, const MediaQueryEvaluator& medium, StyleResolver& resolver)
{
- OwnPtr<RuleSet> tempUserStyle = RuleSet::create();
+ auto tempUserStyle = std::make_unique<RuleSet>();
if (CSSStyleSheet* pageUserSheet = styleSheetCollection.pageUserSheet())
tempUserStyle->addRulesFromSheet(&pageUserSheet->contents(), medium, &resolver);
collectRulesFromUserStyleSheets(styleSheetCollection.injectedUserStyleSheets(), *tempUserStyle, medium, resolver);
collectRulesFromUserStyleSheets(styleSheetCollection.documentUserStyleSheets(), *tempUserStyle, medium, resolver);
if (tempUserStyle->ruleCount() > 0 || tempUserStyle->pageRules().size() > 0)
- m_userStyle = tempUserStyle.release();
+ m_userStyle = std::move(tempUserStyle);
}
void DocumentRuleSets::collectRulesFromUserStyleSheets(const Vector<RefPtr<CSSStyleSheet>>& userSheets, RuleSet& userStyle, const MediaQueryEvaluator& medium, StyleResolver& resolver)
@@ -65,21 +65,21 @@
}
}
-static PassOwnPtr<RuleSet> makeRuleSet(const Vector<RuleFeature>& rules)
+static std::unique_ptr<RuleSet> makeRuleSet(const Vector<RuleFeature>& rules)
{
size_t size = rules.size();
if (!size)
return nullptr;
- OwnPtr<RuleSet> ruleSet = RuleSet::create();
+ auto ruleSet = std::make_unique<RuleSet>();
for (size_t i = 0; i < size; ++i)
ruleSet->addRule(rules[i].rule, rules[i].selectorIndex, rules[i].hasDocumentSecurityOrigin ? RuleHasDocumentSecurityOrigin : RuleHasNoSpecialState);
ruleSet->shrinkToFit();
- return ruleSet.release();
+ return ruleSet;
}
void DocumentRuleSets::resetAuthorStyle()
{
- m_authorStyle = RuleSet::create();
+ m_authorStyle = std::make_unique<RuleSet>();
m_authorStyle->disableAutoShrinkToFit();
}
diff --git a/Source/WebCore/css/DocumentRuleSets.h b/Source/WebCore/css/DocumentRuleSets.h
index 0ebeb20..288b8ca 100644
--- a/Source/WebCore/css/DocumentRuleSets.h
+++ b/Source/WebCore/css/DocumentRuleSets.h
@@ -25,8 +25,7 @@
#include "RuleFeature.h"
#include "RuleSet.h"
-
-#include <wtf/OwnPtr.h>
+#include <memory>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
@@ -58,11 +57,11 @@
private:
void collectRulesFromUserStyleSheets(const Vector<RefPtr<CSSStyleSheet>>&, RuleSet& userStyle, const MediaQueryEvaluator&, StyleResolver&);
- OwnPtr<RuleSet> m_authorStyle;
- OwnPtr<RuleSet> m_userStyle;
+ std::unique_ptr<RuleSet> m_authorStyle;
+ std::unique_ptr<RuleSet> m_userStyle;
RuleFeatureSet m_features;
- OwnPtr<RuleSet> m_siblingRuleSet;
- OwnPtr<RuleSet> m_uncommonAttributeRuleSet;
+ std::unique_ptr<RuleSet> m_siblingRuleSet;
+ std::unique_ptr<RuleSet> m_uncommonAttributeRuleSet;
};
} // namespace WebCore
diff --git a/Source/WebCore/css/RuleSet.cpp b/Source/WebCore/css/RuleSet.cpp
index 3e7f943..86bc247 100644
--- a/Source/WebCore/css/RuleSet.cpp
+++ b/Source/WebCore/css/RuleSet.cpp
@@ -171,9 +171,9 @@
{
if (!key)
return;
- OwnPtr<Vector<RuleData>>& rules = map.add(key, nullptr).iterator->value;
+ std::unique_ptr<Vector<RuleData>>& rules = map.add(key, nullptr).iterator->value;
if (!rules)
- rules = adoptPtr(new Vector<RuleData>);
+ rules = std::make_unique<Vector<RuleData>>();
rules->append(ruleData);
}
@@ -248,7 +248,7 @@
void RuleSet::addRegionRule(StyleRuleRegion* regionRule, bool hasDocumentSecurityOrigin)
{
- OwnPtr<RuleSet> regionRuleSet = RuleSet::create();
+ auto regionRuleSet = std::make_unique<RuleSet>();
// The region rule set should take into account the position inside the parent rule set.
// Otherwise, the rules inside region block might be incorrectly positioned before other similar rules from
// the stylesheet that contains the region block.
@@ -267,7 +267,7 @@
// Update the "global" rule count so that proper order is maintained
m_ruleCount = regionRuleSet->m_ruleCount;
- m_regionSelectorsAndRuleSets.append(RuleSetSelectorPair(regionRule->selectorList().first(), regionRuleSet.release()));
+ m_regionSelectorsAndRuleSets.append(RuleSetSelectorPair(regionRule->selectorList().first(), std::move(regionRuleSet)));
}
void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase>>& rules, const MediaQueryEvaluator& medium, StyleResolver* resolver, const ContainerNode* scope, bool hasDocumentSecurityOrigin, AddRuleFlags addRuleFlags)
diff --git a/Source/WebCore/css/RuleSet.h b/Source/WebCore/css/RuleSet.h
index f82be27..cc10c74 100644
--- a/Source/WebCore/css/RuleSet.h
+++ b/Source/WebCore/css/RuleSet.h
@@ -128,16 +128,16 @@
WTF_MAKE_NONCOPYABLE(RuleSet); WTF_MAKE_FAST_ALLOCATED;
public:
struct RuleSetSelectorPair {
- RuleSetSelectorPair(const CSSSelector* selector, PassOwnPtr<RuleSet> ruleSet) : selector(selector), ruleSet(ruleSet) { }
+ RuleSetSelectorPair(const CSSSelector* selector, std::unique_ptr<RuleSet> ruleSet) : selector(selector), ruleSet(std::move(ruleSet)) { }
RuleSetSelectorPair(const RuleSetSelectorPair& pair) : selector(pair.selector), ruleSet(const_cast<RuleSetSelectorPair*>(&pair)->ruleSet.release()) { }
const CSSSelector* selector;
- OwnPtr<RuleSet> ruleSet;
+ std::unique_ptr<RuleSet> ruleSet;
};
- static PassOwnPtr<RuleSet> create() { return adoptPtr(new RuleSet); }
+ RuleSet();
- typedef HashMap<AtomicStringImpl*, OwnPtr<Vector<RuleData>>> AtomRuleMap;
+ typedef HashMap<AtomicStringImpl*, std::unique_ptr<Vector<RuleData>>> AtomRuleMap;
void addRulesFromSheet(StyleSheetContents*, const MediaQueryEvaluator&, StyleResolver* = 0, const ContainerNode* = 0);
@@ -170,8 +170,6 @@
void addChildRules(const Vector<RefPtr<StyleRuleBase>>&, const MediaQueryEvaluator& medium, StyleResolver*, const ContainerNode* scope, bool hasDocumentSecurityOrigin, AddRuleFlags);
bool findBestRuleSetAndAdd(const CSSSelector*, RuleData&);
- RuleSet();
-
AtomRuleMap m_idRules;
AtomRuleMap m_classRules;
AtomRuleMap m_tagRules;