From abd5cd702de656229fd3b570fdc7edb4758fbbb0 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Thu, 12 Dec 2013 13:09:42 +1100 Subject: [PATCH] Bug 773296 - Part 9: Give nsCSSScanner the ability to remember when it encounters a "var(" token. r=dbaron This is the first part of handling variable references in regular properties. We have the scanner set a flag whenever it returns a "var(" token, so that when we come to the end of parsing a property that failed, we know that it is because of a variable reference. --- layout/style/nsCSSScanner.cpp | 3 +++ layout/style/nsCSSScanner.h | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/layout/style/nsCSSScanner.cpp b/layout/style/nsCSSScanner.cpp index 70e6b3ecff9..3a105e28827 100644 --- a/layout/style/nsCSSScanner.cpp +++ b/layout/style/nsCSSScanner.cpp @@ -353,6 +353,7 @@ nsCSSScanner::nsCSSScanner(const nsAString& aBuffer, uint32_t aLineNumber) , mSVGMode(false) , mRecording(false) , mSeenBadToken(false) + , mSeenVariableReference(false) { MOZ_COUNT_CTOR(nsCSSScanner); } @@ -721,6 +722,8 @@ nsCSSScanner::ScanIdent(nsCSSToken& aToken) aToken.mType = eCSSToken_Function; if (aToken.mIdent.LowerCaseEqualsLiteral("url")) { NextURL(aToken); + } else if (aToken.mIdent.LowerCaseEqualsLiteral("var")) { + mSeenVariableReference = true; } return true; } diff --git a/layout/style/nsCSSScanner.h b/layout/style/nsCSSScanner.h index e0918d575db..7ce28d97561 100644 --- a/layout/style/nsCSSScanner.h +++ b/layout/style/nsCSSScanner.h @@ -178,13 +178,12 @@ class nsCSSScanner { } // Reset or check whether a BAD_URL or BAD_STRING token has been seen. - void ClearSeenBadToken() { - mSeenBadToken = false; - } + void ClearSeenBadToken() { mSeenBadToken = false; } + bool SeenBadToken() const { return mSeenBadToken; } - bool SeenBadToken() const { - return mSeenBadToken; - } + // Reset or check whether a "var(" FUNCTION token has been seen. + void ClearSeenVariableReference() { mSeenVariableReference = false; } + bool SeenVariableReference() const { return mSeenVariableReference; } // Get the 1-based line number of the last character of // the most recently processed token. @@ -319,6 +318,7 @@ protected: bool mSVGMode; bool mRecording; bool mSeenBadToken; + bool mSeenVariableReference; }; #endif /* nsCSSScanner_h___ */