Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp

Issue 2616093003: Make CSSParserContext be garbage collected. (Closed)
Patch Set: fix fuzzer compile Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
index 33e69d2192ce6561da902d708cea6a3803f93fc3..37b6f8f3de33d5a2695c83a2bab09fbf2a5380f8 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp
@@ -14,9 +14,9 @@
namespace blink {
-static void recordSelectorStats(const CSSParserContext& context,
+static void recordSelectorStats(const CSSParserContext* context,
const CSSSelectorList& selectorList) {
- if (!context.useCounter())
+ if (!context->isUseCounterRecordingEnabled())
return;
for (const CSSSelector* selector = selectorList.first(); selector;
@@ -53,11 +53,11 @@ static void recordSelectorStats(const CSSParserContext& context,
feature = UseCounter::CSSSelectorPseudoFullScreen;
break;
case CSSSelector::PseudoListBox:
- if (context.mode() != UASheetMode)
+ if (context->mode() != UASheetMode)
feature = UseCounter::CSSSelectorInternalPseudoListBox;
break;
case CSSSelector::PseudoWebKitCustomElement:
- if (context.mode() != UASheetMode) {
+ if (context->mode() != UASheetMode) {
if (current->value() == "-internal-media-controls-cast-button")
feature = UseCounter::CSSSelectorInternalMediaControlsCastButton;
else if (current->value() ==
@@ -67,25 +67,25 @@ static void recordSelectorStats(const CSSParserContext& context,
}
break;
case CSSSelector::PseudoSpatialNavigationFocus:
- if (context.mode() != UASheetMode)
+ if (context->mode() != UASheetMode)
feature =
UseCounter::CSSSelectorInternalPseudoSpatialNavigationFocus;
break;
case CSSSelector::PseudoReadOnly:
- if (context.mode() != UASheetMode)
+ if (context->mode() != UASheetMode)
feature = UseCounter::CSSSelectorPseudoReadOnly;
break;
case CSSSelector::PseudoReadWrite:
- if (context.mode() != UASheetMode)
+ if (context->mode() != UASheetMode)
feature = UseCounter::CSSSelectorPseudoReadWrite;
break;
default:
break;
}
if (feature != UseCounter::NumberOfFeatures)
- context.useCounter()->count(feature);
+ context->useCounter()->count(feature);
if (current->relation() == CSSSelector::IndirectAdjacent)
- context.useCounter()->count(UseCounter::CSSSelectorIndirectAdjacent);
+ context->useCounter()->count(UseCounter::CSSSelectorIndirectAdjacent);
if (current->selectorList())
recordSelectorStats(context, *current->selectorList());
}
@@ -94,7 +94,7 @@ static void recordSelectorStats(const CSSParserContext& context,
CSSSelectorList CSSSelectorParser::parseSelector(
CSSParserTokenRange range,
- const CSSParserContext& context,
+ const CSSParserContext* context,
StyleSheetContents* styleSheet) {
CSSSelectorParser parser(context, styleSheet);
range.consumeWhitespace();
@@ -106,7 +106,7 @@ CSSSelectorList CSSSelectorParser::parseSelector(
return result;
}
-CSSSelectorParser::CSSSelectorParser(const CSSParserContext& context,
+CSSSelectorParser::CSSSelectorParser(const CSSParserContext* context,
StyleSheetContents* styleSheet)
: m_context(context), m_styleSheet(styleSheet) {}
@@ -191,7 +191,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeComplexSelector(
for (CSSParserSelector* simple = selector.get();
simple && !previousCompoundFlags; simple = simple->tagHistory())
- previousCompoundFlags |= extractCompoundFlags(*simple, m_context.mode());
+ previousCompoundFlags |= extractCompoundFlags(*simple, m_context->mode());
while (CSSSelector::RelationType combinator = consumeCombinator(range)) {
std::unique_ptr<CSSParserSelector> nextSelector =
@@ -202,10 +202,10 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeComplexSelector(
if (previousCompoundFlags & HasPseudoElementForRightmostCompound)
return nullptr;
CSSParserSelector* end = nextSelector.get();
- unsigned compoundFlags = extractCompoundFlags(*end, m_context.mode());
+ unsigned compoundFlags = extractCompoundFlags(*end, m_context->mode());
while (end->tagHistory()) {
end = end->tagHistory();
- compoundFlags |= extractCompoundFlags(*end, m_context.mode());
+ compoundFlags |= extractCompoundFlags(*end, m_context->mode());
}
end->setRelation(combinator);
if (previousCompoundFlags & HasContentPseudoElement)
@@ -312,7 +312,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(
if (compoundSelector->match() == CSSSelector::PseudoElement)
compoundPseudoElement = compoundSelector->pseudoType();
}
- if (m_context.isHTMLDocument())
+ if (m_context->isHTMLDocument())
elementName = elementName.lower();
while (std::unique_ptr<CSSParserSelector> simpleSelector =
@@ -321,7 +321,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(
// The UASheetMode check is a work-around to allow this selector in
// mediaControls(New).css:
// video::-webkit-media-text-track-region-container.scrolling
- if (m_context.mode() != UASheetMode &&
+ if (m_context->mode() != UASheetMode &&
!isSimpleSelectorValidAfterPseudoElement(*simpleSelector.get(),
compoundPseudoElement)) {
m_failedParsing = true;
@@ -423,7 +423,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeId(
std::unique_ptr<CSSParserSelector> selector = CSSParserSelector::create();
selector->setMatch(CSSSelector::Id);
AtomicString value = range.consume().value().toAtomicString();
- selector->setValue(value, isQuirksModeBehavior(m_context.matchMode()));
+ selector->setValue(value, isQuirksModeBehavior(m_context->matchMode()));
return selector;
}
@@ -437,7 +437,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeClass(
std::unique_ptr<CSSParserSelector> selector = CSSParserSelector::create();
selector->setMatch(CSSSelector::Class);
AtomicString value = range.consume().value().toAtomicString();
- selector->setValue(value, isQuirksModeBehavior(m_context.matchMode()));
+ selector->setValue(value, isQuirksModeBehavior(m_context->matchMode()));
return selector;
}
@@ -453,7 +453,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeAttribute(
return nullptr;
block.consumeWhitespace();
- if (m_context.isHTMLDocument())
+ if (m_context->isHTMLDocument())
attributeName = attributeName.lower();
AtomicString namespaceURI = determineNamespace(namespacePrefix);
@@ -616,7 +616,7 @@ CSSSelector::RelationType CSSSelectorParser::consumeCombinator(
case '>':
if (!RuntimeEnabledFeatures::
shadowPiercingDescendantCombinatorEnabled() ||
- m_context.isDynamicProfile() ||
+ m_context->isDynamicProfile() ||
range.peek(1).type() != DelimiterToken ||
range.peek(1).delimiter() != '>') {
range.consumeIncludingWhitespace();

Powered by Google App Engine
This is Rietveld 408576698