Bug 1410624: Integrate QuerySelectorAll in Gecko. r=heycam

MozReview-Commit-ID: 2Jf3Z6ikjXB
This commit is contained in:
Emilio Cobos Álvarez 2017-10-22 02:19:14 +02:00
Родитель 8df4224bb5
Коммит 707ec18980
2 изменённых файлов: 18 добавлений и 10 удалений

Просмотреть файл

@ -2945,16 +2945,23 @@ nsINode::QuerySelectorAll(const nsAString& aSelector, ErrorResult& aResult)
{
RefPtr<nsSimpleContentList> contentList = new nsSimpleContentList(this);
nsCSSSelectorList* selectorList = ParseSelectorList(aSelector, aResult);
if (selectorList) {
FindMatchingElements<false, AutoTArray<Element*, 128>>(this,
selectorList,
*contentList,
aResult);
} else {
// Either we failed (and aResult already has the exception), or this
// is a pseudo-element-only selector that matches nothing.
}
WithSelectorList<void>(
aSelector,
aResult,
[&](const RawServoSelectorList* aList) {
if (!aList) {
return;
}
Servo_SelectorList_QueryAll(this, aList, contentList.get());
},
[&](nsCSSSelectorList* aList) {
if (!aList) {
return;
}
FindMatchingElements<false, AutoTArray<Element*, 128>>(
this, aList, *contentList, aResult);
}
);
return contentList.forget();
}

Просмотреть файл

@ -2866,6 +2866,7 @@ Gecko_ContentList_AppendAll(
MOZ_ASSERT(aList);
aList->SetCapacity(aLength);
for (size_t i = 0; i < aLength; ++i) {
aList->AppendElement(const_cast<Element*>(aElements[i]));
}