Diff
Modified: trunk/Source/WebCore/ChangeLog (234813 => 234814)
--- trunk/Source/WebCore/ChangeLog 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/ChangeLog 2018-08-13 20:17:09 UTC (rev 234814)
@@ -1,3 +1,27 @@
+2018-08-13 Alex Christensen <[email protected]>
+
+ Modernize CSSSelectorList a little
+ https://bugs.webkit.org/show_bug.cgi?id=188527
+
+ Reviewed by Simon Fraser.
+
+ No change in behavior. Just use make_unique and move semantics a little more.
+
+ * css/CSSSelectorList.cpp:
+ (WebCore::CSSSelectorList::CSSSelectorList):
+ (WebCore::CSSSelectorList::adoptSelectorVector): Deleted.
+ * css/CSSSelectorList.h:
+ * css/StyleRule.h:
+ * css/parser/CSSParserImpl.cpp:
+ (WebCore::CSSParserImpl::parsePageSelector):
+ * css/parser/CSSParserSelector.cpp:
+ (WebCore::CSSParserSelector::adoptSelectorVector):
+ * css/parser/CSSParserSelector.h:
+ * css/parser/CSSSelectorParser.cpp:
+ (WebCore::CSSSelectorParser::consumeComplexSelectorList):
+ (WebCore::CSSSelectorParser::consumeCompoundSelectorList):
+ (WebCore::CSSSelectorParser::consumePseudo):
+
2018-08-13 Antti Koivisto <[email protected]>
Meaning of OptionSet::contains is unclear when used with OptionSet argument
Modified: trunk/Source/WebCore/css/CSSSelectorList.cpp (234813 => 234814)
--- trunk/Source/WebCore/css/CSSSelectorList.cpp 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/CSSSelectorList.cpp 2018-08-13 20:17:09 UTC (rev 234814)
@@ -48,11 +48,10 @@
other.m_selectorArray = nullptr;
}
-void CSSSelectorList::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
+CSSSelectorList::CSSSelectorList(Vector<std::unique_ptr<CSSParserSelector>>&& selectorVector)
{
ASSERT_WITH_SECURITY_IMPLICATION(!selectorVector.isEmpty());
- deleteSelectors();
size_t flattenedSize = 0;
for (size_t i = 0; i < selectorVector.size(); ++i) {
for (CSSParserSelector* selector = selectorVector[i].get(); selector; selector = selector->tagHistory())
@@ -82,7 +81,6 @@
}
ASSERT(flattenedSize == arrayIndex);
m_selectorArray[arrayIndex - 1].setLastInSelectorList();
- selectorVector.clear();
}
unsigned CSSSelectorList::componentCount() const
Modified: trunk/Source/WebCore/css/CSSSelectorList.h (234813 => 234814)
--- trunk/Source/WebCore/css/CSSSelectorList.h 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/CSSSelectorList.h 2018-08-13 20:17:09 UTC (rev 234814)
@@ -38,10 +38,10 @@
CSSSelectorList() : m_selectorArray(0) { }
CSSSelectorList(const CSSSelectorList&);
CSSSelectorList(CSSSelectorList&&);
+ CSSSelectorList(Vector<std::unique_ptr<CSSParserSelector>>&&);
~CSSSelectorList() { deleteSelectors(); }
- void adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector);
void adoptSelectorArray(CSSSelector* selectors) { ASSERT(!m_selectorArray); m_selectorArray = selectors; }
bool isValid() const { return !!m_selectorArray; }
Modified: trunk/Source/WebCore/css/StyleRule.h (234813 => 234814)
--- trunk/Source/WebCore/css/StyleRule.h 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/StyleRule.h 2018-08-13 20:17:09 UTC (rev 234814)
@@ -208,7 +208,6 @@
const StyleProperties& properties() const { return m_properties; }
MutableStyleProperties& mutableProperties();
- void parserAdoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectors) { m_selectorList.adoptSelectorVector(selectors); }
void wrapperAdoptSelectorList(CSSSelectorList& selectors) { m_selectorList = WTFMove(selectors); }
Ref<StyleRulePage> copy() const { return adoptRef(*new StyleRulePage(*this)); }
Modified: trunk/Source/WebCore/css/parser/CSSParserImpl.cpp (234813 => 234814)
--- trunk/Source/WebCore/css/parser/CSSParserImpl.cpp 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/parser/CSSParserImpl.cpp 2018-08-13 20:17:09 UTC (rev 234814)
@@ -282,9 +282,9 @@
std::unique_ptr<CSSParserSelector> selector;
if (!typeSelector.isNull() && pseudo.isNull())
- selector = std::unique_ptr<CSSParserSelector>(new CSSParserSelector(QualifiedName(nullAtom(), typeSelector, styleSheet->defaultNamespace())));
+ selector = std::make_unique<CSSParserSelector>(QualifiedName(nullAtom(), typeSelector, styleSheet->defaultNamespace()));
else {
- selector = std::unique_ptr<CSSParserSelector>(new CSSParserSelector);
+ selector = std::make_unique<CSSParserSelector>();
if (!pseudo.isNull()) {
selector = std::unique_ptr<CSSParserSelector>(CSSParserSelector::parsePagePseudoSelector(pseudo));
if (!selector || selector->match() != CSSSelector::PagePseudoClass)
@@ -295,11 +295,7 @@
}
selector->setForPage();
- Vector<std::unique_ptr<CSSParserSelector>> selectorVector;
- selectorVector.append(WTFMove(selector));
- CSSSelectorList selectorList;
- selectorList.adoptSelectorVector(selectorVector);
- return selectorList;
+ return { Vector<std::unique_ptr<CSSParserSelector>>::from(WTFMove(selector)) };
}
std::unique_ptr<Vector<double>> CSSParserImpl::parseKeyframeKeyList(const String& keyList)
Modified: trunk/Source/WebCore/css/parser/CSSParserSelector.cpp (234813 => 234814)
--- trunk/Source/WebCore/css/parser/CSSParserSelector.cpp 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/parser/CSSParserSelector.cpp 2018-08-13 20:17:09 UTC (rev 234814)
@@ -124,11 +124,9 @@
}
}
-void CSSParserSelector::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector)
+void CSSParserSelector::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>&& selectorVector)
{
- auto selectorList = std::make_unique<CSSSelectorList>();
- selectorList->adoptSelectorVector(selectorVector);
- m_selector->setSelectorList(WTFMove(selectorList));
+ m_selector->setSelectorList(std::make_unique<CSSSelectorList>(WTFMove(selectorVector)));
}
void CSSParserSelector::setLangArgumentList(std::unique_ptr<Vector<AtomicString>> argumentList)
Modified: trunk/Source/WebCore/css/parser/CSSParserSelector.h (234813 => 234814)
--- trunk/Source/WebCore/css/parser/CSSParserSelector.h 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/parser/CSSParserSelector.h 2018-08-13 20:17:09 UTC (rev 234814)
@@ -71,7 +71,7 @@
void setPseudoElementType(CSSSelector::PseudoElementType type) { m_selector->setPseudoElementType(type); }
- void adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>& selectorVector);
+ void adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>&&);
void setLangArgumentList(std::unique_ptr<Vector<AtomicString>>);
void setSelectorList(std::unique_ptr<CSSSelectorList>);
Modified: trunk/Source/WebCore/css/parser/CSSSelectorParser.cpp (234813 => 234814)
--- trunk/Source/WebCore/css/parser/CSSSelectorParser.cpp 2018-08-13 20:01:50 UTC (rev 234813)
+++ trunk/Source/WebCore/css/parser/CSSSelectorParser.cpp 2018-08-13 20:17:09 UTC (rev 234814)
@@ -68,11 +68,9 @@
selectorList.append(WTFMove(selector));
}
- CSSSelectorList list;
if (m_failedParsing)
- return list;
- list.adoptSelectorVector(selectorList);
- return list;
+ return { };
+ return { WTFMove(selectorList) };
}
CSSSelectorList CSSSelectorParser::consumeCompoundSelectorList(CSSParserTokenRange& range)
@@ -92,11 +90,9 @@
selectorList.append(WTFMove(selector));
}
- CSSSelectorList list;
if (m_failedParsing)
- return list;
- list.adoptSelectorVector(selectorList);
- return list;
+ return { };
+ return { WTFMove(selectorList) };
}
static bool consumeLangArgumentList(std::unique_ptr<Vector<AtomicString>>& argumentList, CSSParserTokenRange& range)
@@ -631,9 +627,7 @@
block.consumeWhitespace();
if (!innerSelector || !block.atEnd())
return nullptr;
- Vector<std::unique_ptr<CSSParserSelector>> selectorVector;
- selectorVector.append(WTFMove(innerSelector));
- selector->adoptSelectorVector(selectorVector);
+ selector->adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelector>>::from(WTFMove(innerSelector)));
return selector;
}
default: