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

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

Issue 1498713002: Store custom property backing strings in resolved CSSVariableData objects. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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/resolver/CSSVariableResolver.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 #ifndef CSSVariableData_h 5 #ifndef CSSVariableData_h
6 #define CSSVariableData_h 6 #define CSSVariableData_h
7 7
8 #include "core/css/parser/CSSParserToken.h" 8 #include "core/css/parser/CSSParserToken.h"
9 #include "core/css/parser/CSSParserTokenRange.h" 9 #include "core/css/parser/CSSParserTokenRange.h"
10 #include "wtf/RefCounted.h" 10 #include "wtf/RefCounted.h"
11 #include "wtf/text/WTFString.h" 11 #include "wtf/text/WTFString.h"
12 12
13 namespace blink { 13 namespace blink {
14 14
15 class CSSParserTokenRange; 15 class CSSParserTokenRange;
16 16
17 class CSSVariableData : public RefCounted<CSSVariableData> { 17 class CSSVariableData : public RefCounted<CSSVariableData> {
18 WTF_MAKE_NONCOPYABLE(CSSVariableData); 18 WTF_MAKE_NONCOPYABLE(CSSVariableData);
19 USING_FAST_MALLOC(CSSVariableData); 19 USING_FAST_MALLOC(CSSVariableData);
20 public: 20 public:
21 static PassRefPtr<CSSVariableData> create(const CSSParserTokenRange& range, bool needsVariableResolution = true) 21 static PassRefPtr<CSSVariableData> create(const CSSParserTokenRange& range, bool needsVariableResolution = true)
22 { 22 {
23 return adoptRef(new CSSVariableData(range, needsVariableResolution)); 23 return adoptRef(new CSSVariableData(range, needsVariableResolution));
24 } 24 }
25 25
26 static PassRefPtr<CSSVariableData> createResolved(const Vector<CSSParserToke n>& resolvedTokens) 26 static PassRefPtr<CSSVariableData> createResolved(const Vector<CSSParserToke n>& resolvedTokens, PassRefPtr<CSSVariableData> unresolvedData)
27 { 27 {
28 return adoptRef(new CSSVariableData(resolvedTokens)); 28 return adoptRef(new CSSVariableData(resolvedTokens, unresolvedData->m_ba ckingString));
29 } 29 }
30 30
31 CSSParserTokenRange tokenRange() { return m_tokens; } 31 CSSParserTokenRange tokenRange() { return m_tokens; }
32 32
33 const Vector<CSSParserToken>& tokens() { return m_tokens; } 33 const Vector<CSSParserToken>& tokens() { return m_tokens; }
34 34
35 bool needsVariableResolution() const { return m_needsVariableResolution; } 35 bool needsVariableResolution() const { return m_needsVariableResolution; }
36 private: 36 private:
37 CSSVariableData(const CSSParserTokenRange&, bool needsVariableResolution); 37 CSSVariableData(const CSSParserTokenRange&, bool needsVariableResolution);
38 38
39 // We can safely copy the tokens (which have raw pointers to substrings) bec ause 39 // We can safely copy the tokens (which have raw pointers to substrings) bec ause
40 // StylePropertySets contain references to CSSCustomPropertyDeclarations, wh ich 40 // StylePropertySets contain references to CSSCustomPropertyDeclarations, wh ich
41 // point to the unresolved CSSVariableData values that own the backing strin gs 41 // point to the unresolved CSSVariableData values that own the backing strin gs
42 // this will potentially reference. 42 // this will potentially reference.
alancutter (OOO until 2018) 2015/12/03 04:14:12 We should update the comment to the new lifetime g
shans 2015/12/03 04:29:55 This comment isn't wrong.. I think I'll submit (p
43 CSSVariableData(const Vector<CSSParserToken>& resolvedTokens) 43 CSSVariableData(const Vector<CSSParserToken>& resolvedTokens, String backing String)
44 : m_tokens(resolvedTokens) 44 : m_backingString(backingString)
45 , m_tokens(resolvedTokens)
45 , m_needsVariableResolution(false) 46 , m_needsVariableResolution(false)
46 { } 47 { }
47 48
48 void consumeAndUpdateTokens(const CSSParserTokenRange&); 49 void consumeAndUpdateTokens(const CSSParserTokenRange&);
49 template<typename CharacterType> void updateTokens(const CSSParserTokenRange &); 50 template<typename CharacterType> void updateTokens(const CSSParserTokenRange &);
50 51
51 String m_backingString; 52 String m_backingString;
52 Vector<CSSParserToken> m_tokens; 53 Vector<CSSParserToken> m_tokens;
53 const bool m_needsVariableResolution; 54 const bool m_needsVariableResolution;
54 }; 55 };
55 56
56 } // namespace blink 57 } // namespace blink
57 58
58 #endif // CSSVariableData_h 59 #endif // CSSVariableData_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/resolver/CSSVariableResolver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698