| Index: third_party/WebKit/Source/core/css/CSSVariableData.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/CSSVariableData.cpp b/third_party/WebKit/Source/core/css/CSSVariableData.cpp
|
| index 1ec695b6459298bfe50f7899c6b4d45346efd787..ab7b7163704c3248347d9ec764a3cbb130b9e442 100644
|
| --- a/third_party/WebKit/Source/core/css/CSSVariableData.cpp
|
| +++ b/third_party/WebKit/Source/core/css/CSSVariableData.cpp
|
| @@ -22,21 +22,23 @@ StylePropertySet* CSSVariableData::PropertySet() {
|
| }
|
|
|
| template <typename CharacterType>
|
| -void CSSVariableData::UpdateTokens(const CSSParserTokenRange& range) {
|
| +static void UpdateTokens(const CSSParserTokenRange& range,
|
| + const String& backing_string,
|
| + Vector<CSSParserToken>& result) {
|
| const CharacterType* current_offset =
|
| - backing_string_.GetCharacters<CharacterType>();
|
| + backing_string.GetCharacters<CharacterType>();
|
| for (const CSSParserToken& token : range) {
|
| if (token.HasStringBacking()) {
|
| unsigned length = token.Value().length();
|
| StringView string(current_offset, length);
|
| - tokens_.push_back(token.CopyWithUpdatedString(string));
|
| + result.push_back(token.CopyWithUpdatedString(string));
|
| current_offset += length;
|
| } else {
|
| - tokens_.push_back(token);
|
| + result.push_back(token);
|
| }
|
| }
|
| - DCHECK(current_offset == backing_string_.GetCharacters<CharacterType>() +
|
| - backing_string_.length());
|
| + DCHECK(current_offset == backing_string.GetCharacters<CharacterType>() +
|
| + backing_string.length());
|
| }
|
|
|
| bool CSSVariableData::operator==(const CSSVariableData& other) const {
|
| @@ -44,6 +46,8 @@ bool CSSVariableData::operator==(const CSSVariableData& other) const {
|
| }
|
|
|
| void CSSVariableData::ConsumeAndUpdateTokens(const CSSParserTokenRange& range) {
|
| + DCHECK_EQ(tokens_.size(), 0u);
|
| + DCHECK_EQ(backing_strings_.size(), 0u);
|
| StringBuilder string_builder;
|
| CSSParserTokenRange local_range = range;
|
|
|
| @@ -52,11 +56,12 @@ void CSSVariableData::ConsumeAndUpdateTokens(const CSSParserTokenRange& range) {
|
| if (token.HasStringBacking())
|
| string_builder.Append(token.Value());
|
| }
|
| - backing_string_ = string_builder.ToString();
|
| - if (backing_string_.Is8Bit())
|
| - UpdateTokens<LChar>(range);
|
| + String backing_string = string_builder.ToString();
|
| + backing_strings_.push_back(backing_string);
|
| + if (backing_string.Is8Bit())
|
| + UpdateTokens<LChar>(range, backing_string, tokens_);
|
| else
|
| - UpdateTokens<UChar>(range);
|
| + UpdateTokens<UChar>(range, backing_string, tokens_);
|
| }
|
|
|
| CSSVariableData::CSSVariableData(const CSSParserTokenRange& range,
|
|
|