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

Side by Side Diff: third_party/WebKit/Source/core/css/CSSVariableData.cpp

Issue 2024373002: Replace CSSParserString with StringView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Match arguments to equalStringView. Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/cssom/CSSKeywordValue.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/css/CSSVariableData.h" 5 #include "core/css/CSSVariableData.h"
6 6
7 #include "core/css/parser/CSSParser.h" 7 #include "core/css/parser/CSSParser.h"
8 #include "core/css/parser/CSSParserTokenRange.h" 8 #include "core/css/parser/CSSParserTokenRange.h"
9 #include "wtf/text/StringBuilder.h" 9 #include "wtf/text/StringBuilder.h"
10 #include "wtf/text/StringView.h"
10 11
11 namespace blink { 12 namespace blink {
12 13
13 StylePropertySet* CSSVariableData::propertySet() 14 StylePropertySet* CSSVariableData::propertySet()
14 { 15 {
15 ASSERT(!m_needsVariableResolution); 16 ASSERT(!m_needsVariableResolution);
16 if (!m_cachedPropertySet) { 17 if (!m_cachedPropertySet) {
17 m_propertySet = CSSParser::parseCustomPropertySet(m_tokens); 18 m_propertySet = CSSParser::parseCustomPropertySet(m_tokens);
18 m_cachedPropertySet = true; 19 m_cachedPropertySet = true;
19 } 20 }
20 return m_propertySet.get(); 21 return m_propertySet.get();
21 } 22 }
22 23
23 template<typename CharacterType> void CSSVariableData::updateTokens(const CSSPar serTokenRange& range) 24 template<typename CharacterType> void CSSVariableData::updateTokens(const CSSPar serTokenRange& range)
24 { 25 {
25 const CharacterType* currentOffset = m_backingString.getCharacters<Character Type>(); 26 const CharacterType* currentOffset = m_backingString.getCharacters<Character Type>();
26 for (const CSSParserToken& token : range) { 27 for (const CSSParserToken& token : range) {
27 if (token.hasStringBacking()) { 28 if (token.hasStringBacking()) {
28 unsigned length = token.value().length(); 29 unsigned length = token.value().length();
29 CSSParserString parserString; 30 StringView string(currentOffset, length);
30 parserString.init(currentOffset, length); 31 m_tokens.append(token.copyWithUpdatedString(string));
31 m_tokens.append(token.copyWithUpdatedString(parserString));
32 currentOffset += length; 32 currentOffset += length;
33 } else { 33 } else {
34 m_tokens.append(token); 34 m_tokens.append(token);
35 } 35 }
36 } 36 }
37 ASSERT(currentOffset == m_backingString.getCharacters<CharacterType>() + m_b ackingString.length()); 37 ASSERT(currentOffset == m_backingString.getCharacters<CharacterType>() + m_b ackingString.length());
38 } 38 }
39 39
40 bool CSSVariableData::operator==(const CSSVariableData& other) const 40 bool CSSVariableData::operator==(const CSSVariableData& other) const
41 { 41 {
42 return tokens() == other.tokens(); 42 return tokens() == other.tokens();
43 } 43 }
44 44
45 void CSSVariableData::consumeAndUpdateTokens(const CSSParserTokenRange& range) 45 void CSSVariableData::consumeAndUpdateTokens(const CSSParserTokenRange& range)
46 { 46 {
47 StringBuilder stringBuilder; 47 StringBuilder stringBuilder;
48 CSSParserTokenRange localRange = range; 48 CSSParserTokenRange localRange = range;
49 49
50 while (!localRange.atEnd()) { 50 while (!localRange.atEnd()) {
51 CSSParserToken token = localRange.consume(); 51 CSSParserToken token = localRange.consume();
52 if (token.hasStringBacking()) { 52 if (token.hasStringBacking())
53 CSSParserString value = token.value(); 53 stringBuilder.append(token.value());
54 if (value.is8Bit())
55 stringBuilder.append(value.characters8(), value.length());
56 else
57 stringBuilder.append(value.characters16(), value.length());
58 }
59 } 54 }
60 m_backingString = stringBuilder.toString(); 55 m_backingString = stringBuilder.toString();
61 if (m_backingString.is8Bit()) 56 if (m_backingString.is8Bit())
62 updateTokens<LChar>(range); 57 updateTokens<LChar>(range);
63 else 58 else
64 updateTokens<UChar>(range); 59 updateTokens<UChar>(range);
65 } 60 }
66 61
67 CSSVariableData::CSSVariableData(const CSSParserTokenRange& range, bool needsVar iableResolution) 62 CSSVariableData::CSSVariableData(const CSSParserTokenRange& range, bool needsVar iableResolution)
68 : m_needsVariableResolution(needsVariableResolution) 63 : m_needsVariableResolution(needsVariableResolution)
69 , m_cachedPropertySet(false) 64 , m_cachedPropertySet(false)
70 { 65 {
71 ASSERT(!range.atEnd()); 66 ASSERT(!range.atEnd());
72 consumeAndUpdateTokens(range); 67 consumeAndUpdateTokens(range);
73 } 68 }
74 69
75 } // namespace blink 70 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/cssom/CSSKeywordValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698