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

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

Issue 2158733003: [Typed-OM] Add StringOrCSSVariableReferenceValue type (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify variable Created 4 years, 5 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/cssom/CSSTokenStreamValue.h" 5 #include "core/css/cssom/CSSTokenStreamValue.h"
6 6
7 #include "core/css/CSSVariableReferenceValue.h" 7 #include "core/css/CSSVariableReferenceValue.h"
8 #include "core/css/parser/CSSTokenizer.h" 8 #include "core/css/parser/CSSTokenizer.h"
9 #include "wtf/text/StringBuilder.h" 9 #include "wtf/text/StringBuilder.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 namespace { 13 namespace {
14 14
15 class TokenStreamValueIterationSource final : public ValueIterable<String>::Iter ationSource { 15 class TokenStreamValueIterationSource final : public ValueIterable<StringOrCSSVa riableReferenceValue>::IterationSource {
16 public: 16 public:
17 explicit TokenStreamValueIterationSource(CSSTokenStreamValue* tokenStreamVal ue) 17 explicit TokenStreamValueIterationSource(CSSTokenStreamValue* tokenStreamVal ue)
18 : m_tokenStreamValue(tokenStreamValue) 18 : m_tokenStreamValue(tokenStreamValue)
19 { 19 {
20 } 20 }
21 21
22 bool next(ScriptState*, String& value, ExceptionState&) override 22 bool next(ScriptState*, StringOrCSSVariableReferenceValue& value, ExceptionS tate&) override
23 { 23 {
24 if (m_index >= m_tokenStreamValue->size()) 24 if (m_index >= m_tokenStreamValue->size())
25 return false; 25 return false;
26 value = m_tokenStreamValue->fragmentAtIndex(m_index); 26 value.setString(m_tokenStreamValue->fragmentAtIndex(m_index));
27 return true; 27 return true;
28 } 28 }
29 29
30 DEFINE_INLINE_VIRTUAL_TRACE() 30 DEFINE_INLINE_VIRTUAL_TRACE()
31 { 31 {
32 visitor->trace(m_tokenStreamValue); 32 visitor->trace(m_tokenStreamValue);
33 ValueIterable<String>::IterationSource::trace(visitor); 33 ValueIterable<StringOrCSSVariableReferenceValue>::IterationSource::trace (visitor);
34 } 34 }
35 35
36 private: 36 private:
37 const Member<CSSTokenStreamValue> m_tokenStreamValue; 37 const Member<CSSTokenStreamValue> m_tokenStreamValue;
38 }; 38 };
39 39
40 } // namespace 40 } // namespace
41 41
42 ValueIterable<String>::IterationSource* CSSTokenStreamValue::startIteration(Scri ptState*, ExceptionState&) 42 ValueIterable<StringOrCSSVariableReferenceValue>::IterationSource* CSSTokenStrea mValue::startIteration(ScriptState*, ExceptionState&)
43 { 43 {
44 return new TokenStreamValueIterationSource(this); 44 return new TokenStreamValueIterationSource(this);
45 } 45 }
46 46
47 CSSValue* CSSTokenStreamValue::toCSSValue() const 47 CSSValue* CSSTokenStreamValue::toCSSValue() const
48 { 48 {
49 StringBuilder tokens; 49 StringBuilder tokens;
50 50
51 for (unsigned i = 0; i < m_fragments.size(); i++) { 51 for (unsigned i = 0; i < m_fragments.size(); i++) {
52 if (i) 52 if (i)
53 tokens.append("/**/"); 53 tokens.append("/**/");
54 tokens.append(m_fragments[i]); 54 tokens.append(m_fragments[i]);
55 } 55 }
56 56
57 CSSTokenizer::Scope scope(tokens.toString()); 57 CSSTokenizer::Scope scope(tokens.toString());
58 58
59 return CSSVariableReferenceValue::create(CSSVariableData::create(scope.token Range())); 59 return CSSVariableReferenceValue::create(CSSVariableData::create(scope.token Range()));
60 } 60 }
61 61
62 } // namespace blink 62 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698