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

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

Issue 2167073002: Replace most callers of nextInputChar with peekWithoutReplacement in CSSTokenizer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/css/parser/CSSTokenizer.cpp
diff --git a/third_party/WebKit/Source/core/css/parser/CSSTokenizer.cpp b/third_party/WebKit/Source/core/css/parser/CSSTokenizer.cpp
index 64153c2d6dadfb5ad2cf14d42921051674915215..ac95dbbf755fbd0f0f021f67c5a575154dbbad4f 100644
--- a/third_party/WebKit/Source/core/css/parser/CSSTokenizer.cpp
+++ b/third_party/WebKit/Source/core/css/parser/CSSTokenizer.cpp
@@ -246,7 +246,7 @@ CSSParserToken CSSTokenizer::semiColon(UChar cc)
CSSParserToken CSSTokenizer::hash(UChar cc)
{
- UChar nextChar = m_input.nextInputChar();
+ UChar nextChar = m_input.peekWithoutReplacement(0);
if (isNameCodePoint(nextChar) || twoCharsAreValidEscape(nextChar, m_input.peekWithoutReplacement(1))) {
HashTokenType type = nextCharsAreIdentifier() ? HashTokenId : HashTokenUnrestricted;
return CSSParserToken(type, consumeName());
@@ -299,7 +299,7 @@ CSSParserToken CSSTokenizer::commercialAt(UChar cc)
CSSParserToken CSSTokenizer::reverseSolidus(UChar cc)
{
- if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) {
+ if (twoCharsAreValidEscape(cc, m_input.peekWithoutReplacement(0))) {
reconsume(cc);
return consumeIdentLikeToken();
}
@@ -314,7 +314,7 @@ CSSParserToken CSSTokenizer::asciiDigit(UChar cc)
CSSParserToken CSSTokenizer::letterU(UChar cc)
{
- if (m_input.nextInputChar() == '+'
+ if (m_input.peekWithoutReplacement(0) == '+'
&& (isASCIIHexDigit(m_input.peekWithoutReplacement(1))
|| m_input.peekWithoutReplacement(1) == '?')) {
m_input.advance();
@@ -366,11 +366,12 @@ CSSParserToken CSSTokenizer::nextToken()
static NumericSign getSign(CSSTokenizerInputStream& input, unsigned& offset)
{
- if (input.nextInputChar() == '+') {
+ UChar next = input.peekWithoutReplacement(0);
+ if (next == '+') {
++offset;
return PlusSign;
}
- if (input.nextInputChar() == '-') {
+ if (next == '-') {
++offset;
return MinusSign;
}
@@ -467,7 +468,7 @@ CSSParserToken CSSTokenizer::consumeIdentLikeToken()
// The spec is slightly different so as to avoid dropping whitespace
// tokens, but they wouldn't be used and this is easier.
m_input.advanceUntilNonWhitespace();
- UChar next = m_input.nextInputChar();
+ UChar next = m_input.peekWithoutReplacement(0);
if (next != '"' && next != '\'')
return consumeUrlToken();
}
@@ -507,7 +508,7 @@ CSSParserToken CSSTokenizer::consumeStringTokenUntil(UChar endingCodePoint)
if (cc == '\\') {
if (m_input.nextInputChar() == kEndOfFileMarker)
continue;
- if (isNewLine(m_input.nextInputChar()))
+ if (isNewLine(m_input.peekWithoutReplacement(0)))
consumeSingleWhitespaceIfNext(); // This handles \r\n for us
else
output.append(consumeEscape());
@@ -519,11 +520,11 @@ CSSParserToken CSSTokenizer::consumeStringTokenUntil(UChar endingCodePoint)
CSSParserToken CSSTokenizer::consumeUnicodeRange()
{
- ASSERT(isASCIIHexDigit(m_input.nextInputChar()) || m_input.nextInputChar() == '?');
+ DCHECK(isASCIIHexDigit(m_input.peekWithoutReplacement(0)) || m_input.peekWithoutReplacement(0) == '?');
int lengthRemaining = 6;
UChar32 start = 0;
- while (lengthRemaining && isASCIIHexDigit(m_input.nextInputChar())) {
+ while (lengthRemaining && isASCIIHexDigit(m_input.peekWithoutReplacement(0))) {
start = start * 16 + toASCIIHexValue(consume());
--lengthRemaining;
}
@@ -535,14 +536,14 @@ CSSParserToken CSSTokenizer::consumeUnicodeRange()
end = end * 16 + 0xF;
--lengthRemaining;
} while (lengthRemaining && consumeIfNext('?'));
- } else if (m_input.nextInputChar() == '-' && isASCIIHexDigit(m_input.peekWithoutReplacement(1))) {
+ } else if (m_input.peekWithoutReplacement(0) == '-' && isASCIIHexDigit(m_input.peekWithoutReplacement(1))) {
m_input.advance();
lengthRemaining = 6;
end = 0;
do {
end = end * 16 + toASCIIHexValue(consume());
--lengthRemaining;
- } while (lengthRemaining && isASCIIHexDigit(m_input.nextInputChar()));
+ } while (lengthRemaining && isASCIIHexDigit(m_input.peekWithoutReplacement(0)));
}
return CSSParserToken(UnicodeRangeToken, start, end);
@@ -588,7 +589,7 @@ CSSParserToken CSSTokenizer::consumeUrlToken()
break;
if (cc == '\\') {
- if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) {
+ if (twoCharsAreValidEscape(cc, m_input.peekWithoutReplacement(0))) {
result.append(consumeEscape());
continue;
}
@@ -609,7 +610,7 @@ void CSSTokenizer::consumeBadUrlRemnants()
UChar cc = consume();
if (cc == ')' || cc == kEndOfFileMarker)
return;
- if (twoCharsAreValidEscape(cc, m_input.nextInputChar()))
+ if (twoCharsAreValidEscape(cc, m_input.peekWithoutReplacement(0)))
consumeEscape();
}
}
@@ -617,10 +618,10 @@ void CSSTokenizer::consumeBadUrlRemnants()
void CSSTokenizer::consumeSingleWhitespaceIfNext()
{
// We check for \r\n and HTML spaces since we don't do preprocessing
- UChar c = m_input.nextInputChar();
- if (c == '\r' && m_input.peekWithoutReplacement(1) == '\n')
+ UChar next = m_input.peekWithoutReplacement(0);
+ if (next == '\r' && m_input.peekWithoutReplacement(1) == '\n')
m_input.advance(2);
- else if (isHTMLSpace(c))
+ else if (isHTMLSpace(next))
m_input.advance();
}
@@ -642,7 +643,11 @@ void CSSTokenizer::consumeUntilCommentEndFound()
bool CSSTokenizer::consumeIfNext(UChar character)
{
- if (m_input.nextInputChar() == character) {
+ // Since we're not doing replacement we can't tell the difference from
+ // a NUL in the middle and the kEndOfFileMarker, so character must not be
+ // NUL.
+ DCHECK(character);
+ if (m_input.peekWithoutReplacement(0) == character) {
m_input.advance();
return true;
}
@@ -676,7 +681,7 @@ StringView CSSTokenizer::consumeName()
result.append(cc);
continue;
}
- if (twoCharsAreValidEscape(cc, m_input.nextInputChar())) {
+ if (twoCharsAreValidEscape(cc, m_input.peekWithoutReplacement(0))) {
result.append(consumeEscape());
continue;
}
@@ -694,7 +699,7 @@ UChar32 CSSTokenizer::consumeEscape()
unsigned consumedHexDigits = 1;
StringBuilder hexChars;
hexChars.append(cc);
- while (consumedHexDigits < 6 && isASCIIHexDigit(m_input.nextInputChar())) {
+ while (consumedHexDigits < 6 && isASCIIHexDigit(m_input.peekWithoutReplacement(0))) {
cc = consume();
hexChars.append(cc);
consumedHexDigits++;
@@ -715,13 +720,13 @@ UChar32 CSSTokenizer::consumeEscape()
bool CSSTokenizer::nextTwoCharsAreValidEscape()
{
- return twoCharsAreValidEscape(m_input.nextInputChar(), m_input.peekWithoutReplacement(1));
+ return twoCharsAreValidEscape(m_input.peekWithoutReplacement(0), m_input.peekWithoutReplacement(1));
}
// http://www.w3.org/TR/css3-syntax/#starts-with-a-number
bool CSSTokenizer::nextCharsAreNumber(UChar first)
{
- UChar second = m_input.nextInputChar();
+ UChar second = m_input.peekWithoutReplacement(0);
if (isASCIIDigit(first))
return true;
if (first == '+' || first == '-')
@@ -742,7 +747,7 @@ bool CSSTokenizer::nextCharsAreNumber()
// http://dev.w3.org/csswg/css-syntax/#would-start-an-identifier
bool CSSTokenizer::nextCharsAreIdentifier(UChar first)
{
- UChar second = m_input.nextInputChar();
+ UChar second = m_input.peekWithoutReplacement(0);
if (isNameStartCodePoint(first) || twoCharsAreValidEscape(first, second))
return true;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698