OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "config.h" | |
6 #include "core/css/CSSVariableData.h" | |
7 | |
8 #include "core/css/parser/CSSParserTokenRange.h" | |
9 #include "wtf/text/StringBuilder.h" | |
10 | |
11 namespace blink { | |
12 | |
13 template<typename CharacterType> void CSSVariableData::updateTokens(const CSSPar serTokenRange& range) | |
14 { | |
15 const CharacterType* currentOffset = m_backingString.getCharacters<Character Type>(); | |
16 for (auto&& token : range) { | |
alancutter (OOO until 2018)
2015/10/28 07:31:20
auto&& scares me, can this just be const CSSParser
leviw_travelin_and_unemployed
2015/10/30 21:41:16
Done.
| |
17 if (token.hasStringBacking()) { | |
18 unsigned length = token.value().length(); | |
19 CSSParserString parserString; | |
20 parserString.init(currentOffset, length); | |
21 m_tokens.append(token.copyWithUpdatedString(parserString)); | |
22 currentOffset += length; | |
23 } else { | |
24 m_tokens.append(token); | |
25 } | |
26 } | |
27 ASSERT(currentOffset == m_backingString.getCharacters<CharacterType>() + m_b ackingString.length()); | |
28 } | |
29 | |
30 void CSSVariableData::consumeAndUpdateTokens(const CSSParserTokenRange& range) | |
31 { | |
32 StringBuilder stringBuilder; | |
33 CSSParserTokenRange localRange = range; | |
34 | |
35 while (!localRange.atEnd()) { | |
36 CSSParserToken token = localRange.consume(); | |
37 if (token.hasStringBacking()) { | |
38 CSSParserString value = token.value(); | |
39 if (value.is8Bit()) | |
40 stringBuilder.append(value.characters8(), value.length()); | |
41 else | |
42 stringBuilder.append(value.characters16(), value.length()); | |
43 } | |
44 } | |
45 m_backingString = stringBuilder.toString(); | |
46 if (m_backingString.is8Bit()) | |
47 updateTokens<LChar>(range); | |
48 else | |
49 updateTokens<UChar>(range); | |
50 } | |
51 | |
52 CSSVariableData::CSSVariableData(const CSSParserTokenRange& range, bool needsVar iableResolution) | |
53 : m_needsVariableResolution(needsVariableResolution) | |
54 { | |
55 ASSERT(!range.atEnd()); | |
56 consumeAndUpdateTokens(range); | |
alancutter (OOO until 2018)
2015/10/28 07:31:20
I think range.deepCopy(m_backingString, m_tokens)
| |
57 } | |
58 | |
59 } // namespace blink | |
OLD | NEW |