OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
6 #include "core/css/parser/CSSParserToken.h" | 6 #include "core/css/parser/CSSParserToken.h" |
7 | 7 |
8 #include "core/css/CSSMarkup.h" | 8 #include "core/css/CSSMarkup.h" |
9 #include "core/css/parser/CSSPropertyParser.h" | 9 #include "core/css/parser/CSSPropertyParser.h" |
10 #include "wtf/HashMap.h" | 10 #include "wtf/HashMap.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 ASSERT(m_type == IdentToken); | 109 ASSERT(m_type == IdentToken); |
110 return unresolvedCSSPropertyID(value()); | 110 return unresolvedCSSPropertyID(value()); |
111 } | 111 } |
112 | 112 |
113 void CSSParserToken::serialize(StringBuilder& builder) const | 113 void CSSParserToken::serialize(StringBuilder& builder) const |
114 { | 114 { |
115 // This is currently only used for @supports CSSOM. To keep our implementati
on | 115 // This is currently only used for @supports CSSOM. To keep our implementati
on |
116 // simple we handle some of the edge cases incorrectly (see comments below). | 116 // simple we handle some of the edge cases incorrectly (see comments below). |
117 switch (type()) { | 117 switch (type()) { |
118 case IdentToken: | 118 case IdentToken: |
119 return serializeIdentifier(value(), builder); | 119 serializeIdentifier(value(), builder); |
| 120 break; |
120 case FunctionToken: | 121 case FunctionToken: |
121 serializeIdentifier(value(), builder); | 122 serializeIdentifier(value(), builder); |
122 return builder.append('('); | 123 return builder.append('('); |
123 case AtKeywordToken: | 124 case AtKeywordToken: |
124 builder.append('@'); | 125 builder.append('@'); |
125 return serializeIdentifier(value(), builder); | 126 serializeIdentifier(value(), builder); |
| 127 break; |
126 case HashToken: | 128 case HashToken: |
127 // This will always serialize as a hash-token with 'id' type instead of | 129 // This will always serialize as a hash-token with 'id' type instead of |
128 // preserving the type of the input. | 130 // preserving the type of the input. |
129 builder.append('#'); | 131 builder.append('#'); |
130 return serializeIdentifier(value(), builder); | 132 serializeIdentifier(value(), builder); |
| 133 break; |
131 case UrlToken: | 134 case UrlToken: |
132 builder.append("url("); | 135 builder.append("url("); |
133 serializeIdentifier(value(), builder); | 136 serializeIdentifier(value(), builder); |
134 return builder.append(")"); | 137 return builder.append(")"); |
135 case DelimiterToken: | 138 case DelimiterToken: |
136 if (delimiter() == '\\') | 139 if (delimiter() == '\\') |
137 return builder.append("\\\n"); | 140 return builder.append("\\\n"); |
138 return builder.append(delimiter()); | 141 return builder.append(delimiter()); |
139 case NumberToken: | 142 case NumberToken: |
140 // These won't properly preserve the NumericValueType flag | 143 // These won't properly preserve the NumericValueType flag |
141 return builder.appendNumber(numericValue()); | 144 return builder.appendNumber(numericValue()); |
142 case PercentageToken: | 145 case PercentageToken: |
143 builder.appendNumber(numericValue()); | 146 builder.appendNumber(numericValue()); |
144 return builder.append('%'); | 147 return builder.append('%'); |
145 case DimensionToken: | 148 case DimensionToken: |
146 // This will incorrectly serialize e.g. 4e3e2 as 4000e2 | 149 // This will incorrectly serialize e.g. 4e3e2 as 4000e2 |
147 builder.appendNumber(numericValue()); | 150 builder.appendNumber(numericValue()); |
148 return serializeIdentifier(value(), builder); | 151 serializeIdentifier(value(), builder); |
| 152 break; |
149 case UnicodeRangeToken: | 153 case UnicodeRangeToken: |
150 return builder.append(String::format("U+%X-%X", unicodeRangeStart(), uni
codeRangeEnd())); | 154 return builder.append(String::format("U+%X-%X", unicodeRangeStart(), uni
codeRangeEnd())); |
151 case StringToken: | 155 case StringToken: |
152 return serializeString(value(), builder); | 156 return serializeString(value(), builder); |
153 | 157 |
154 case IncludeMatchToken: | 158 case IncludeMatchToken: |
155 return builder.append("~="); | 159 return builder.append("~="); |
156 case DashMatchToken: | 160 case DashMatchToken: |
157 return builder.append("|="); | 161 return builder.append("|="); |
158 case PrefixMatchToken: | 162 case PrefixMatchToken: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 return builder.append('}'); | 197 return builder.append('}'); |
194 | 198 |
195 case EOFToken: | 199 case EOFToken: |
196 case CommentToken: | 200 case CommentToken: |
197 ASSERT_NOT_REACHED(); | 201 ASSERT_NOT_REACHED(); |
198 return; | 202 return; |
199 } | 203 } |
200 } | 204 } |
201 | 205 |
202 } // namespace blink | 206 } // namespace blink |
OLD | NEW |