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

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

Issue 2346193002: Split CSSPrimitiveValue into CSSPrimitiveValue and CSSIdentifierValue (Closed)
Patch Set: Rebase please work Created 4 years, 2 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 /* 1 /*
2 * Copyright (C) 2007 Alexey Proskuryakov <ap@nypop.com>. 2 * Copyright (C) 2007 Alexey Proskuryakov <ap@nypop.com>.
3 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
4 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 4 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
5 * Copyright (C) 2009 Jeff Schiller <codedread@gmail.com> 5 * Copyright (C) 2009 Jeff Schiller <codedread@gmail.com>
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 14 matching lines...) Expand all
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */ 28 */
29 29
30 #ifndef CSSPrimitiveValueMappings_h 30 #ifndef CSSPrimitiveValueMappings_h
31 #define CSSPrimitiveValueMappings_h 31 #define CSSPrimitiveValueMappings_h
32 32
33 #include "core/CSSValueKeywords.h" 33 #include "core/CSSValueKeywords.h"
34 #include "core/css/CSSCalculationValue.h" 34 #include "core/css/CSSCalculationValue.h"
35 #include "core/css/CSSIdentifierValue.h"
35 #include "core/css/CSSPrimitiveValue.h" 36 #include "core/css/CSSPrimitiveValue.h"
36 #include "core/css/CSSReflectionDirection.h" 37 #include "core/css/CSSReflectionDirection.h"
37 #include "core/css/CSSToLengthConversionData.h" 38 #include "core/css/CSSToLengthConversionData.h"
38 #include "core/style/ComputedStyleConstants.h" 39 #include "core/style/ComputedStyleConstants.h"
40 #include "core/style/LineClampValue.h"
39 #include "core/style/SVGComputedStyleDefs.h" 41 #include "core/style/SVGComputedStyleDefs.h"
40 #include "core/style/LineClampValue.h"
41 #include "platform/Length.h" 42 #include "platform/Length.h"
42 #include "platform/ThemeTypes.h" 43 #include "platform/ThemeTypes.h"
43 #include "platform/fonts/FontDescription.h" 44 #include "platform/fonts/FontDescription.h"
44 #include "platform/fonts/FontSmoothingMode.h" 45 #include "platform/fonts/FontSmoothingMode.h"
45 #include "platform/fonts/TextRenderingMode.h" 46 #include "platform/fonts/TextRenderingMode.h"
46 #include "platform/graphics/GraphicsTypes.h" 47 #include "platform/graphics/GraphicsTypes.h"
47 #include "platform/scroll/ScrollableArea.h" 48 #include "platform/scroll/ScrollableArea.h"
48 #include "platform/text/TextDirection.h" 49 #include "platform/text/TextDirection.h"
49 #include "platform/text/TextRun.h" 50 #include "platform/text/TextRun.h"
50 #include "platform/text/UnicodeBidi.h" 51 #include "platform/text/UnicodeBidi.h"
51 #include "platform/text/WritingMode.h" 52 #include "platform/text/WritingMode.h"
52 #include "public/platform/WebBlendMode.h" 53 #include "public/platform/WebBlendMode.h"
53 #include "wtf/MathExtras.h" 54 #include "wtf/MathExtras.h"
54 55
55 namespace blink { 56 namespace blink {
56 57
58 // TODO(sashab): Move these to CSSPrimitiveValue.h.
57 template<> inline short CSSPrimitiveValue::convertTo() const 59 template<> inline short CSSPrimitiveValue::convertTo() const
58 { 60 {
59 ASSERT(isNumber()); 61 ASSERT(isNumber());
60 return clampTo<short>(getDoubleValue()); 62 return clampTo<short>(getDoubleValue());
61 } 63 }
62 64
63 template<> inline unsigned short CSSPrimitiveValue::convertTo() const 65 template<> inline unsigned short CSSPrimitiveValue::convertTo() const
64 { 66 {
65 ASSERT(isNumber()); 67 ASSERT(isNumber());
66 return clampTo<unsigned short>(getDoubleValue()); 68 return clampTo<unsigned short>(getDoubleValue());
(...skipping 29 matching lines...) Expand all
96 if (type() == UnitType::Integer) 98 if (type() == UnitType::Integer)
97 return LineClampValue(clampTo<int>(m_value.num), LineClampLineCount); 99 return LineClampValue(clampTo<int>(m_value.num), LineClampLineCount);
98 100
99 if (type() == UnitType::Percentage) 101 if (type() == UnitType::Percentage)
100 return LineClampValue(clampTo<int>(m_value.num), LineClampPercentage); 102 return LineClampValue(clampTo<int>(m_value.num), LineClampPercentage);
101 103
102 ASSERT_NOT_REACHED(); 104 ASSERT_NOT_REACHED();
103 return LineClampValue(); 105 return LineClampValue();
104 } 106 }
105 107
106 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CSSReflectionDirection e) 108 // TODO(sashab): Move these to CSSIdentifierValueMappings.h, and update to use
107 : CSSValue(PrimitiveClass) 109 // the CSSValuePool.
110 template<> inline CSSIdentifierValue::CSSIdentifierValue(CSSReflectionDirection e)
111 : CSSValue(IdentifierClass)
108 { 112 {
109 init(UnitType::ValueID);
110 switch (e) { 113 switch (e) {
111 case ReflectionAbove: 114 case ReflectionAbove:
112 m_value.valueID = CSSValueAbove; 115 m_valueID = CSSValueAbove;
113 break; 116 break;
114 case ReflectionBelow: 117 case ReflectionBelow:
115 m_value.valueID = CSSValueBelow; 118 m_valueID = CSSValueBelow;
116 break; 119 break;
117 case ReflectionLeft: 120 case ReflectionLeft:
118 m_value.valueID = CSSValueLeft; 121 m_valueID = CSSValueLeft;
119 break; 122 break;
120 case ReflectionRight: 123 case ReflectionRight:
121 m_value.valueID = CSSValueRight; 124 m_valueID = CSSValueRight;
122 } 125 }
123 } 126 }
124 127
125 template<> inline CSSReflectionDirection CSSPrimitiveValue::convertTo() const 128 template<> inline CSSReflectionDirection CSSIdentifierValue::convertTo() const
126 { 129 {
127 ASSERT(isValueID()); 130 switch (m_valueID) {
128 switch (m_value.valueID) {
129 case CSSValueAbove: 131 case CSSValueAbove:
130 return ReflectionAbove; 132 return ReflectionAbove;
131 case CSSValueBelow: 133 case CSSValueBelow:
132 return ReflectionBelow; 134 return ReflectionBelow;
133 case CSSValueLeft: 135 case CSSValueLeft:
134 return ReflectionLeft; 136 return ReflectionLeft;
135 case CSSValueRight: 137 case CSSValueRight:
136 return ReflectionRight; 138 return ReflectionRight;
137 default: 139 default:
138 break; 140 break;
139 } 141 }
140 142
141 ASSERT_NOT_REACHED(); 143 ASSERT_NOT_REACHED();
142 return ReflectionBelow; 144 return ReflectionBelow;
143 } 145 }
144 146
145 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ColumnFill columnFill) 147 template<> inline CSSIdentifierValue::CSSIdentifierValue(ColumnFill columnFill)
146 : CSSValue(PrimitiveClass) 148 : CSSValue(IdentifierClass)
147 { 149 {
148 init(UnitType::ValueID);
149 switch (columnFill) { 150 switch (columnFill) {
150 case ColumnFillAuto: 151 case ColumnFillAuto:
151 m_value.valueID = CSSValueAuto; 152 m_valueID = CSSValueAuto;
152 break; 153 break;
153 case ColumnFillBalance: 154 case ColumnFillBalance:
154 m_value.valueID = CSSValueBalance; 155 m_valueID = CSSValueBalance;
155 break; 156 break;
156 } 157 }
157 } 158 }
158 159
159 template<> inline ColumnFill CSSPrimitiveValue::convertTo() const 160 template<> inline ColumnFill CSSIdentifierValue::convertTo() const
160 { 161 {
161 if (type() == UnitType::ValueID) { 162 if (m_valueID == CSSValueBalance)
162 if (m_value.valueID == CSSValueBalance) 163 return ColumnFillBalance;
163 return ColumnFillBalance; 164 if (m_valueID == CSSValueAuto)
164 if (m_value.valueID == CSSValueAuto) 165 return ColumnFillAuto;
165 return ColumnFillAuto;
166 }
167 ASSERT_NOT_REACHED(); 166 ASSERT_NOT_REACHED();
168 return ColumnFillBalance; 167 return ColumnFillBalance;
169 } 168 }
170 169
171 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ColumnSpan columnSpan) 170 template<> inline CSSIdentifierValue::CSSIdentifierValue(ColumnSpan columnSpan)
172 : CSSValue(PrimitiveClass) 171 : CSSValue(IdentifierClass)
173 { 172 {
174 init(UnitType::ValueID);
175 switch (columnSpan) { 173 switch (columnSpan) {
176 case ColumnSpanAll: 174 case ColumnSpanAll:
177 m_value.valueID = CSSValueAll; 175 m_valueID = CSSValueAll;
178 break; 176 break;
179 case ColumnSpanNone: 177 case ColumnSpanNone:
180 m_value.valueID = CSSValueNone; 178 m_valueID = CSSValueNone;
181 break; 179 break;
182 } 180 }
183 } 181 }
184 182
185 template<> inline ColumnSpan CSSPrimitiveValue::convertTo() const 183 template<> inline ColumnSpan CSSIdentifierValue::convertTo() const
186 { 184 {
187 ASSERT(isValueID()); 185 switch (m_valueID) {
188 switch (m_value.valueID) {
189 case CSSValueAll: 186 case CSSValueAll:
190 return ColumnSpanAll; 187 return ColumnSpanAll;
191 default: 188 default:
192 ASSERT_NOT_REACHED(); 189 ASSERT_NOT_REACHED();
193 // fall-through 190 // fall-through
194 case CSSValueNone: 191 case CSSValueNone:
195 return ColumnSpanNone; 192 return ColumnSpanNone;
196 } 193 }
197 } 194 }
198 195
199 196
200 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(PrintColorAdjust value) 197 template<> inline CSSIdentifierValue::CSSIdentifierValue(PrintColorAdjust value)
201 : CSSValue(PrimitiveClass) 198 : CSSValue(IdentifierClass)
202 { 199 {
203 init(UnitType::ValueID);
204 switch (value) { 200 switch (value) {
205 case PrintColorAdjustExact: 201 case PrintColorAdjustExact:
206 m_value.valueID = CSSValueExact; 202 m_valueID = CSSValueExact;
207 break; 203 break;
208 case PrintColorAdjustEconomy: 204 case PrintColorAdjustEconomy:
209 m_value.valueID = CSSValueEconomy; 205 m_valueID = CSSValueEconomy;
210 break; 206 break;
211 } 207 }
212 } 208 }
213 209
214 template<> inline PrintColorAdjust CSSPrimitiveValue::convertTo() const 210 template<> inline PrintColorAdjust CSSIdentifierValue::convertTo() const
215 { 211 {
216 ASSERT(isValueID()); 212 switch (m_valueID) {
217 switch (m_value.valueID) {
218 case CSSValueEconomy: 213 case CSSValueEconomy:
219 return PrintColorAdjustEconomy; 214 return PrintColorAdjustEconomy;
220 case CSSValueExact: 215 case CSSValueExact:
221 return PrintColorAdjustExact; 216 return PrintColorAdjustExact;
222 default: 217 default:
223 break; 218 break;
224 } 219 }
225 220
226 ASSERT_NOT_REACHED(); 221 ASSERT_NOT_REACHED();
227 return PrintColorAdjustEconomy; 222 return PrintColorAdjustEconomy;
228 } 223 }
229 224
230 225
231 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBorderStyle e) 226 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBorderStyle e)
232 : CSSValue(PrimitiveClass) 227 : CSSValue(IdentifierClass)
233 { 228 {
234 init(UnitType::ValueID);
235 switch (e) { 229 switch (e) {
236 case BorderStyleNone: 230 case BorderStyleNone:
237 m_value.valueID = CSSValueNone; 231 m_valueID = CSSValueNone;
238 break; 232 break;
239 case BorderStyleHidden: 233 case BorderStyleHidden:
240 m_value.valueID = CSSValueHidden; 234 m_valueID = CSSValueHidden;
241 break; 235 break;
242 case BorderStyleInset: 236 case BorderStyleInset:
243 m_value.valueID = CSSValueInset; 237 m_valueID = CSSValueInset;
244 break; 238 break;
245 case BorderStyleGroove: 239 case BorderStyleGroove:
246 m_value.valueID = CSSValueGroove; 240 m_valueID = CSSValueGroove;
247 break; 241 break;
248 case BorderStyleRidge: 242 case BorderStyleRidge:
249 m_value.valueID = CSSValueRidge; 243 m_valueID = CSSValueRidge;
250 break; 244 break;
251 case BorderStyleOutset: 245 case BorderStyleOutset:
252 m_value.valueID = CSSValueOutset; 246 m_valueID = CSSValueOutset;
253 break; 247 break;
254 case BorderStyleDotted: 248 case BorderStyleDotted:
255 m_value.valueID = CSSValueDotted; 249 m_valueID = CSSValueDotted;
256 break; 250 break;
257 case BorderStyleDashed: 251 case BorderStyleDashed:
258 m_value.valueID = CSSValueDashed; 252 m_valueID = CSSValueDashed;
259 break; 253 break;
260 case BorderStyleSolid: 254 case BorderStyleSolid:
261 m_value.valueID = CSSValueSolid; 255 m_valueID = CSSValueSolid;
262 break; 256 break;
263 case BorderStyleDouble: 257 case BorderStyleDouble:
264 m_value.valueID = CSSValueDouble; 258 m_valueID = CSSValueDouble;
265 break; 259 break;
266 } 260 }
267 } 261 }
268 262
269 template<> inline EBorderStyle CSSPrimitiveValue::convertTo() const 263 template<> inline EBorderStyle CSSIdentifierValue::convertTo() const
270 { 264 {
271 ASSERT(isValueID()); 265 if (m_valueID == CSSValueAuto) // Valid for CSS outline-style
272 if (m_value.valueID == CSSValueAuto) // Valid for CSS outline-style
273 return BorderStyleDotted; 266 return BorderStyleDotted;
274 return (EBorderStyle)(m_value.valueID - CSSValueNone); 267 return (EBorderStyle)(m_valueID - CSSValueNone);
275 } 268 }
276 269
277 template<> inline OutlineIsAuto CSSPrimitiveValue::convertTo() const 270 template<> inline OutlineIsAuto CSSIdentifierValue::convertTo() const
278 { 271 {
279 if (m_value.valueID == CSSValueAuto) 272 if (m_valueID == CSSValueAuto)
280 return OutlineIsAutoOn; 273 return OutlineIsAutoOn;
281 return OutlineIsAutoOff; 274 return OutlineIsAutoOff;
282 } 275 }
283 276
284 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CompositeOperator e) 277 template<> inline CSSIdentifierValue::CSSIdentifierValue(CompositeOperator e)
285 : CSSValue(PrimitiveClass) 278 : CSSValue(IdentifierClass)
286 { 279 {
287 init(UnitType::ValueID);
288 switch (e) { 280 switch (e) {
289 case CompositeClear: 281 case CompositeClear:
290 m_value.valueID = CSSValueClear; 282 m_valueID = CSSValueClear;
291 break; 283 break;
292 case CompositeCopy: 284 case CompositeCopy:
293 m_value.valueID = CSSValueCopy; 285 m_valueID = CSSValueCopy;
294 break; 286 break;
295 case CompositeSourceOver: 287 case CompositeSourceOver:
296 m_value.valueID = CSSValueSourceOver; 288 m_valueID = CSSValueSourceOver;
297 break; 289 break;
298 case CompositeSourceIn: 290 case CompositeSourceIn:
299 m_value.valueID = CSSValueSourceIn; 291 m_valueID = CSSValueSourceIn;
300 break; 292 break;
301 case CompositeSourceOut: 293 case CompositeSourceOut:
302 m_value.valueID = CSSValueSourceOut; 294 m_valueID = CSSValueSourceOut;
303 break; 295 break;
304 case CompositeSourceAtop: 296 case CompositeSourceAtop:
305 m_value.valueID = CSSValueSourceAtop; 297 m_valueID = CSSValueSourceAtop;
306 break; 298 break;
307 case CompositeDestinationOver: 299 case CompositeDestinationOver:
308 m_value.valueID = CSSValueDestinationOver; 300 m_valueID = CSSValueDestinationOver;
309 break; 301 break;
310 case CompositeDestinationIn: 302 case CompositeDestinationIn:
311 m_value.valueID = CSSValueDestinationIn; 303 m_valueID = CSSValueDestinationIn;
312 break; 304 break;
313 case CompositeDestinationOut: 305 case CompositeDestinationOut:
314 m_value.valueID = CSSValueDestinationOut; 306 m_valueID = CSSValueDestinationOut;
315 break; 307 break;
316 case CompositeDestinationAtop: 308 case CompositeDestinationAtop:
317 m_value.valueID = CSSValueDestinationAtop; 309 m_valueID = CSSValueDestinationAtop;
318 break; 310 break;
319 case CompositeXOR: 311 case CompositeXOR:
320 m_value.valueID = CSSValueXor; 312 m_valueID = CSSValueXor;
321 break; 313 break;
322 case CompositePlusLighter: 314 case CompositePlusLighter:
323 m_value.valueID = CSSValuePlusLighter; 315 m_valueID = CSSValuePlusLighter;
324 break; 316 break;
325 default: 317 default:
326 ASSERT_NOT_REACHED(); 318 ASSERT_NOT_REACHED();
327 break; 319 break;
328 } 320 }
329 } 321 }
330 322
331 template<> inline CompositeOperator CSSPrimitiveValue::convertTo() const 323 template<> inline CompositeOperator CSSIdentifierValue::convertTo() const
332 { 324 {
333 ASSERT(isValueID()); 325 switch (m_valueID) {
334 switch (m_value.valueID) {
335 case CSSValueClear: 326 case CSSValueClear:
336 return CompositeClear; 327 return CompositeClear;
337 case CSSValueCopy: 328 case CSSValueCopy:
338 return CompositeCopy; 329 return CompositeCopy;
339 case CSSValueSourceOver: 330 case CSSValueSourceOver:
340 return CompositeSourceOver; 331 return CompositeSourceOver;
341 case CSSValueSourceIn: 332 case CSSValueSourceIn:
342 return CompositeSourceIn; 333 return CompositeSourceIn;
343 case CSSValueSourceOut: 334 case CSSValueSourceOut:
344 return CompositeSourceOut; 335 return CompositeSourceOut;
(...skipping 12 matching lines...) Expand all
357 case CSSValuePlusLighter: 348 case CSSValuePlusLighter:
358 return CompositePlusLighter; 349 return CompositePlusLighter;
359 default: 350 default:
360 break; 351 break;
361 } 352 }
362 353
363 ASSERT_NOT_REACHED(); 354 ASSERT_NOT_REACHED();
364 return CompositeClear; 355 return CompositeClear;
365 } 356 }
366 357
367 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ControlPart e) 358 template<> inline CSSIdentifierValue::CSSIdentifierValue(ControlPart e)
368 : CSSValue(PrimitiveClass) 359 : CSSValue(IdentifierClass)
369 { 360 {
370 init(UnitType::ValueID);
371 switch (e) { 361 switch (e) {
372 case NoControlPart: 362 case NoControlPart:
373 m_value.valueID = CSSValueNone; 363 m_valueID = CSSValueNone;
374 break; 364 break;
375 case CheckboxPart: 365 case CheckboxPart:
376 m_value.valueID = CSSValueCheckbox; 366 m_valueID = CSSValueCheckbox;
377 break; 367 break;
378 case RadioPart: 368 case RadioPart:
379 m_value.valueID = CSSValueRadio; 369 m_valueID = CSSValueRadio;
380 break; 370 break;
381 case PushButtonPart: 371 case PushButtonPart:
382 m_value.valueID = CSSValuePushButton; 372 m_valueID = CSSValuePushButton;
383 break; 373 break;
384 case SquareButtonPart: 374 case SquareButtonPart:
385 m_value.valueID = CSSValueSquareButton; 375 m_valueID = CSSValueSquareButton;
386 break; 376 break;
387 case ButtonPart: 377 case ButtonPart:
388 m_value.valueID = CSSValueButton; 378 m_valueID = CSSValueButton;
389 break; 379 break;
390 case ButtonBevelPart: 380 case ButtonBevelPart:
391 m_value.valueID = CSSValueButtonBevel; 381 m_valueID = CSSValueButtonBevel;
392 break; 382 break;
393 case InnerSpinButtonPart: 383 case InnerSpinButtonPart:
394 m_value.valueID = CSSValueInnerSpinButton; 384 m_valueID = CSSValueInnerSpinButton;
395 break; 385 break;
396 case ListboxPart: 386 case ListboxPart:
397 m_value.valueID = CSSValueListbox; 387 m_valueID = CSSValueListbox;
398 break; 388 break;
399 case ListItemPart: 389 case ListItemPart:
400 m_value.valueID = CSSValueListitem; 390 m_valueID = CSSValueListitem;
401 break; 391 break;
402 case MediaEnterFullscreenButtonPart: 392 case MediaEnterFullscreenButtonPart:
403 m_value.valueID = CSSValueMediaEnterFullscreenButton; 393 m_valueID = CSSValueMediaEnterFullscreenButton;
404 break; 394 break;
405 case MediaExitFullscreenButtonPart: 395 case MediaExitFullscreenButtonPart:
406 m_value.valueID = CSSValueMediaExitFullscreenButton; 396 m_valueID = CSSValueMediaExitFullscreenButton;
407 break; 397 break;
408 case MediaPlayButtonPart: 398 case MediaPlayButtonPart:
409 m_value.valueID = CSSValueMediaPlayButton; 399 m_valueID = CSSValueMediaPlayButton;
410 break; 400 break;
411 case MediaOverlayPlayButtonPart: 401 case MediaOverlayPlayButtonPart:
412 m_value.valueID = CSSValueMediaOverlayPlayButton; 402 m_valueID = CSSValueMediaOverlayPlayButton;
413 break; 403 break;
414 case MediaMuteButtonPart: 404 case MediaMuteButtonPart:
415 m_value.valueID = CSSValueMediaMuteButton; 405 m_valueID = CSSValueMediaMuteButton;
416 break; 406 break;
417 case MediaToggleClosedCaptionsButtonPart: 407 case MediaToggleClosedCaptionsButtonPart:
418 m_value.valueID = CSSValueMediaToggleClosedCaptionsButton; 408 m_valueID = CSSValueMediaToggleClosedCaptionsButton;
419 break; 409 break;
420 case MediaCastOffButtonPart: 410 case MediaCastOffButtonPart:
421 m_value.valueID = CSSValueInternalMediaCastOffButton; 411 m_valueID = CSSValueInternalMediaCastOffButton;
422 break; 412 break;
423 case MediaOverlayCastOffButtonPart: 413 case MediaOverlayCastOffButtonPart:
424 m_value.valueID = CSSValueInternalMediaOverlayCastOffButton; 414 m_valueID = CSSValueInternalMediaOverlayCastOffButton;
425 break; 415 break;
426 case MediaSliderPart: 416 case MediaSliderPart:
427 m_value.valueID = CSSValueMediaSlider; 417 m_valueID = CSSValueMediaSlider;
428 break; 418 break;
429 case MediaSliderThumbPart: 419 case MediaSliderThumbPart:
430 m_value.valueID = CSSValueMediaSliderthumb; 420 m_valueID = CSSValueMediaSliderthumb;
431 break; 421 break;
432 case MediaVolumeSliderContainerPart: 422 case MediaVolumeSliderContainerPart:
433 m_value.valueID = CSSValueMediaVolumeSliderContainer; 423 m_valueID = CSSValueMediaVolumeSliderContainer;
434 break; 424 break;
435 case MediaVolumeSliderPart: 425 case MediaVolumeSliderPart:
436 m_value.valueID = CSSValueMediaVolumeSlider; 426 m_valueID = CSSValueMediaVolumeSlider;
437 break; 427 break;
438 case MediaVolumeSliderThumbPart: 428 case MediaVolumeSliderThumbPart:
439 m_value.valueID = CSSValueMediaVolumeSliderthumb; 429 m_valueID = CSSValueMediaVolumeSliderthumb;
440 break; 430 break;
441 case MediaControlsBackgroundPart: 431 case MediaControlsBackgroundPart:
442 m_value.valueID = CSSValueMediaControlsBackground; 432 m_valueID = CSSValueMediaControlsBackground;
443 break; 433 break;
444 case MediaControlsFullscreenBackgroundPart: 434 case MediaControlsFullscreenBackgroundPart:
445 m_value.valueID = CSSValueMediaControlsFullscreenBackground; 435 m_valueID = CSSValueMediaControlsFullscreenBackground;
446 break; 436 break;
447 case MediaFullscreenVolumeSliderPart: 437 case MediaFullscreenVolumeSliderPart:
448 m_value.valueID = CSSValueMediaFullscreenVolumeSlider; 438 m_valueID = CSSValueMediaFullscreenVolumeSlider;
449 break; 439 break;
450 case MediaFullscreenVolumeSliderThumbPart: 440 case MediaFullscreenVolumeSliderThumbPart:
451 m_value.valueID = CSSValueMediaFullscreenVolumeSliderThumb; 441 m_valueID = CSSValueMediaFullscreenVolumeSliderThumb;
452 break; 442 break;
453 case MediaCurrentTimePart: 443 case MediaCurrentTimePart:
454 m_value.valueID = CSSValueMediaCurrentTimeDisplay; 444 m_valueID = CSSValueMediaCurrentTimeDisplay;
455 break; 445 break;
456 case MediaTimeRemainingPart: 446 case MediaTimeRemainingPart:
457 m_value.valueID = CSSValueMediaTimeRemainingDisplay; 447 m_valueID = CSSValueMediaTimeRemainingDisplay;
458 break; 448 break;
459 case MediaTrackSelectionCheckmarkPart: 449 case MediaTrackSelectionCheckmarkPart:
460 m_value.valueID = CSSValueInternalMediaTrackSelectionCheckmark; 450 m_valueID = CSSValueInternalMediaTrackSelectionCheckmark;
461 break; 451 break;
462 case MediaClosedCaptionsIconPart: 452 case MediaClosedCaptionsIconPart:
463 m_value.valueID = CSSValueInternalMediaClosedCaptionsIcon; 453 m_valueID = CSSValueInternalMediaClosedCaptionsIcon;
464 break; 454 break;
465 case MediaSubtitlesIconPart: 455 case MediaSubtitlesIconPart:
466 m_value.valueID = CSSValueInternalMediaSubtitlesIcon; 456 m_valueID = CSSValueInternalMediaSubtitlesIcon;
467 break; 457 break;
468 case MediaOverflowMenuButtonPart: 458 case MediaOverflowMenuButtonPart:
469 m_value.valueID = CSSValueInternalMediaOverflowButton; 459 m_valueID = CSSValueInternalMediaOverflowButton;
470 break; 460 break;
471 case MediaDownloadIconPart: 461 case MediaDownloadIconPart:
472 m_value.valueID = CSSValueInternalMediaDownloadButton; 462 m_valueID = CSSValueInternalMediaDownloadButton;
473 break; 463 break;
474 case MenulistPart: 464 case MenulistPart:
475 m_value.valueID = CSSValueMenulist; 465 m_valueID = CSSValueMenulist;
476 break; 466 break;
477 case MenulistButtonPart: 467 case MenulistButtonPart:
478 m_value.valueID = CSSValueMenulistButton; 468 m_valueID = CSSValueMenulistButton;
479 break; 469 break;
480 case MenulistTextPart: 470 case MenulistTextPart:
481 m_value.valueID = CSSValueMenulistText; 471 m_valueID = CSSValueMenulistText;
482 break; 472 break;
483 case MenulistTextFieldPart: 473 case MenulistTextFieldPart:
484 m_value.valueID = CSSValueMenulistTextfield; 474 m_valueID = CSSValueMenulistTextfield;
485 break; 475 break;
486 case MeterPart: 476 case MeterPart:
487 m_value.valueID = CSSValueMeter; 477 m_valueID = CSSValueMeter;
488 break; 478 break;
489 case ProgressBarPart: 479 case ProgressBarPart:
490 m_value.valueID = CSSValueProgressBar; 480 m_valueID = CSSValueProgressBar;
491 break; 481 break;
492 case ProgressBarValuePart: 482 case ProgressBarValuePart:
493 m_value.valueID = CSSValueProgressBarValue; 483 m_valueID = CSSValueProgressBarValue;
494 break; 484 break;
495 case SliderHorizontalPart: 485 case SliderHorizontalPart:
496 m_value.valueID = CSSValueSliderHorizontal; 486 m_valueID = CSSValueSliderHorizontal;
497 break; 487 break;
498 case SliderVerticalPart: 488 case SliderVerticalPart:
499 m_value.valueID = CSSValueSliderVertical; 489 m_valueID = CSSValueSliderVertical;
500 break; 490 break;
501 case SliderThumbHorizontalPart: 491 case SliderThumbHorizontalPart:
502 m_value.valueID = CSSValueSliderthumbHorizontal; 492 m_valueID = CSSValueSliderthumbHorizontal;
503 break; 493 break;
504 case SliderThumbVerticalPart: 494 case SliderThumbVerticalPart:
505 m_value.valueID = CSSValueSliderthumbVertical; 495 m_valueID = CSSValueSliderthumbVertical;
506 break; 496 break;
507 case CaretPart: 497 case CaretPart:
508 m_value.valueID = CSSValueCaret; 498 m_valueID = CSSValueCaret;
509 break; 499 break;
510 case SearchFieldPart: 500 case SearchFieldPart:
511 m_value.valueID = CSSValueSearchfield; 501 m_valueID = CSSValueSearchfield;
512 break; 502 break;
513 case SearchFieldCancelButtonPart: 503 case SearchFieldCancelButtonPart:
514 m_value.valueID = CSSValueSearchfieldCancelButton; 504 m_valueID = CSSValueSearchfieldCancelButton;
515 break; 505 break;
516 case TextFieldPart: 506 case TextFieldPart:
517 m_value.valueID = CSSValueTextfield; 507 m_valueID = CSSValueTextfield;
518 break; 508 break;
519 case TextAreaPart: 509 case TextAreaPart:
520 m_value.valueID = CSSValueTextarea; 510 m_valueID = CSSValueTextarea;
521 break; 511 break;
522 case CapsLockIndicatorPart: 512 case CapsLockIndicatorPart:
523 m_value.valueID = CSSValueCapsLockIndicator; 513 m_valueID = CSSValueCapsLockIndicator;
524 break; 514 break;
525 } 515 }
526 } 516 }
527 517
528 template<> inline ControlPart CSSPrimitiveValue::convertTo() const 518 template<> inline ControlPart CSSIdentifierValue::convertTo() const
529 { 519 {
530 ASSERT(isValueID()); 520 if (m_valueID == CSSValueNone)
531 if (m_value.valueID == CSSValueNone)
532 return NoControlPart; 521 return NoControlPart;
533 return ControlPart(m_value.valueID - CSSValueCheckbox + 1); 522 return ControlPart(m_valueID - CSSValueCheckbox + 1);
534 } 523 }
535 524
536 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBackfaceVisibility e) 525 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBackfaceVisibility e)
537 : CSSValue(PrimitiveClass) 526 : CSSValue(IdentifierClass)
538 { 527 {
539 init(UnitType::ValueID);
540 switch (e) { 528 switch (e) {
541 case BackfaceVisibilityVisible: 529 case BackfaceVisibilityVisible:
542 m_value.valueID = CSSValueVisible; 530 m_valueID = CSSValueVisible;
543 break; 531 break;
544 case BackfaceVisibilityHidden: 532 case BackfaceVisibilityHidden:
545 m_value.valueID = CSSValueHidden; 533 m_valueID = CSSValueHidden;
546 break; 534 break;
547 } 535 }
548 } 536 }
549 537
550 template<> inline EBackfaceVisibility CSSPrimitiveValue::convertTo() const 538 template<> inline EBackfaceVisibility CSSIdentifierValue::convertTo() const
551 { 539 {
552 ASSERT(isValueID()); 540 switch (m_valueID) {
553 switch (m_value.valueID) {
554 case CSSValueVisible: 541 case CSSValueVisible:
555 return BackfaceVisibilityVisible; 542 return BackfaceVisibilityVisible;
556 case CSSValueHidden: 543 case CSSValueHidden:
557 return BackfaceVisibilityHidden; 544 return BackfaceVisibilityHidden;
558 default: 545 default:
559 break; 546 break;
560 } 547 }
561 548
562 ASSERT_NOT_REACHED(); 549 ASSERT_NOT_REACHED();
563 return BackfaceVisibilityHidden; 550 return BackfaceVisibilityHidden;
564 } 551 }
565 552
566 553
567 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillAttachment e) 554 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFillAttachment e)
568 : CSSValue(PrimitiveClass) 555 : CSSValue(IdentifierClass)
569 { 556 {
570 init(UnitType::ValueID);
571 switch (e) { 557 switch (e) {
572 case ScrollBackgroundAttachment: 558 case ScrollBackgroundAttachment:
573 m_value.valueID = CSSValueScroll; 559 m_valueID = CSSValueScroll;
574 break; 560 break;
575 case LocalBackgroundAttachment: 561 case LocalBackgroundAttachment:
576 m_value.valueID = CSSValueLocal; 562 m_valueID = CSSValueLocal;
577 break; 563 break;
578 case FixedBackgroundAttachment: 564 case FixedBackgroundAttachment:
579 m_value.valueID = CSSValueFixed; 565 m_valueID = CSSValueFixed;
580 break; 566 break;
581 } 567 }
582 } 568 }
583 569
584 template<> inline EFillAttachment CSSPrimitiveValue::convertTo() const 570 template<> inline EFillAttachment CSSIdentifierValue::convertTo() const
585 { 571 {
586 ASSERT(isValueID()); 572 switch (m_valueID) {
587 switch (m_value.valueID) {
588 case CSSValueScroll: 573 case CSSValueScroll:
589 return ScrollBackgroundAttachment; 574 return ScrollBackgroundAttachment;
590 case CSSValueLocal: 575 case CSSValueLocal:
591 return LocalBackgroundAttachment; 576 return LocalBackgroundAttachment;
592 case CSSValueFixed: 577 case CSSValueFixed:
593 return FixedBackgroundAttachment; 578 return FixedBackgroundAttachment;
594 default: 579 default:
595 break; 580 break;
596 } 581 }
597 582
598 ASSERT_NOT_REACHED(); 583 ASSERT_NOT_REACHED();
599 return ScrollBackgroundAttachment; 584 return ScrollBackgroundAttachment;
600 } 585 }
601 586
602 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillBox e) 587 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFillBox e)
603 : CSSValue(PrimitiveClass) 588 : CSSValue(IdentifierClass)
604 { 589 {
605 init(UnitType::ValueID);
606 switch (e) { 590 switch (e) {
607 case BorderFillBox: 591 case BorderFillBox:
608 m_value.valueID = CSSValueBorderBox; 592 m_valueID = CSSValueBorderBox;
609 break; 593 break;
610 case PaddingFillBox: 594 case PaddingFillBox:
611 m_value.valueID = CSSValuePaddingBox; 595 m_valueID = CSSValuePaddingBox;
612 break; 596 break;
613 case ContentFillBox: 597 case ContentFillBox:
614 m_value.valueID = CSSValueContentBox; 598 m_valueID = CSSValueContentBox;
615 break; 599 break;
616 case TextFillBox: 600 case TextFillBox:
617 m_value.valueID = CSSValueText; 601 m_valueID = CSSValueText;
618 break; 602 break;
619 } 603 }
620 } 604 }
621 605
622 template<> inline EFillBox CSSPrimitiveValue::convertTo() const 606 template<> inline EFillBox CSSIdentifierValue::convertTo() const
623 { 607 {
624 ASSERT(isValueID()); 608 switch (m_valueID) {
625 switch (m_value.valueID) {
626 case CSSValueBorder: 609 case CSSValueBorder:
627 case CSSValueBorderBox: 610 case CSSValueBorderBox:
628 return BorderFillBox; 611 return BorderFillBox;
629 case CSSValuePadding: 612 case CSSValuePadding:
630 case CSSValuePaddingBox: 613 case CSSValuePaddingBox:
631 return PaddingFillBox; 614 return PaddingFillBox;
632 case CSSValueContent: 615 case CSSValueContent:
633 case CSSValueContentBox: 616 case CSSValueContentBox:
634 return ContentFillBox; 617 return ContentFillBox;
635 case CSSValueText: 618 case CSSValueText:
636 return TextFillBox; 619 return TextFillBox;
637 default: 620 default:
638 break; 621 break;
639 } 622 }
640 623
641 ASSERT_NOT_REACHED(); 624 ASSERT_NOT_REACHED();
642 return BorderFillBox; 625 return BorderFillBox;
643 } 626 }
644 627
645 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillRepeat e) 628 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFillRepeat e)
646 : CSSValue(PrimitiveClass) 629 : CSSValue(IdentifierClass)
647 { 630 {
648 init(UnitType::ValueID);
649 switch (e) { 631 switch (e) {
650 case RepeatFill: 632 case RepeatFill:
651 m_value.valueID = CSSValueRepeat; 633 m_valueID = CSSValueRepeat;
652 break; 634 break;
653 case NoRepeatFill: 635 case NoRepeatFill:
654 m_value.valueID = CSSValueNoRepeat; 636 m_valueID = CSSValueNoRepeat;
655 break; 637 break;
656 case RoundFill: 638 case RoundFill:
657 m_value.valueID = CSSValueRound; 639 m_valueID = CSSValueRound;
658 break; 640 break;
659 case SpaceFill: 641 case SpaceFill:
660 m_value.valueID = CSSValueSpace; 642 m_valueID = CSSValueSpace;
661 break; 643 break;
662 } 644 }
663 } 645 }
664 646
665 template<> inline EFillRepeat CSSPrimitiveValue::convertTo() const 647 template<> inline EFillRepeat CSSIdentifierValue::convertTo() const
666 { 648 {
667 ASSERT(isValueID()); 649 switch (m_valueID) {
668 switch (m_value.valueID) {
669 case CSSValueRepeat: 650 case CSSValueRepeat:
670 return RepeatFill; 651 return RepeatFill;
671 case CSSValueNoRepeat: 652 case CSSValueNoRepeat:
672 return NoRepeatFill; 653 return NoRepeatFill;
673 case CSSValueRound: 654 case CSSValueRound:
674 return RoundFill; 655 return RoundFill;
675 case CSSValueSpace: 656 case CSSValueSpace:
676 return SpaceFill; 657 return SpaceFill;
677 default: 658 default:
678 break; 659 break;
679 } 660 }
680 661
681 ASSERT_NOT_REACHED(); 662 ASSERT_NOT_REACHED();
682 return RepeatFill; 663 return RepeatFill;
683 } 664 }
684 665
685 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxPack e) 666 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxPack e)
686 : CSSValue(PrimitiveClass) 667 : CSSValue(IdentifierClass)
687 { 668 {
688 init(UnitType::ValueID);
689 switch (e) { 669 switch (e) {
690 case BoxPackStart: 670 case BoxPackStart:
691 m_value.valueID = CSSValueStart; 671 m_valueID = CSSValueStart;
692 break; 672 break;
693 case BoxPackCenter: 673 case BoxPackCenter:
694 m_value.valueID = CSSValueCenter; 674 m_valueID = CSSValueCenter;
695 break; 675 break;
696 case BoxPackEnd: 676 case BoxPackEnd:
697 m_value.valueID = CSSValueEnd; 677 m_valueID = CSSValueEnd;
698 break; 678 break;
699 case BoxPackJustify: 679 case BoxPackJustify:
700 m_value.valueID = CSSValueJustify; 680 m_valueID = CSSValueJustify;
701 break; 681 break;
702 } 682 }
703 } 683 }
704 684
705 template<> inline EBoxPack CSSPrimitiveValue::convertTo() const 685 template<> inline EBoxPack CSSIdentifierValue::convertTo() const
706 { 686 {
707 ASSERT(isValueID()); 687 switch (m_valueID) {
708 switch (m_value.valueID) {
709 case CSSValueStart: 688 case CSSValueStart:
710 return BoxPackStart; 689 return BoxPackStart;
711 case CSSValueEnd: 690 case CSSValueEnd:
712 return BoxPackEnd; 691 return BoxPackEnd;
713 case CSSValueCenter: 692 case CSSValueCenter:
714 return BoxPackCenter; 693 return BoxPackCenter;
715 case CSSValueJustify: 694 case CSSValueJustify:
716 return BoxPackJustify; 695 return BoxPackJustify;
717 default: 696 default:
718 break; 697 break;
719 } 698 }
720 699
721 ASSERT_NOT_REACHED(); 700 ASSERT_NOT_REACHED();
722 return BoxPackJustify; 701 return BoxPackJustify;
723 } 702 }
724 703
725 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxAlignment e) 704 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxAlignment e)
726 : CSSValue(PrimitiveClass) 705 : CSSValue(IdentifierClass)
727 { 706 {
728 init(UnitType::ValueID);
729 switch (e) { 707 switch (e) {
730 case BSTRETCH: 708 case BSTRETCH:
731 m_value.valueID = CSSValueStretch; 709 m_valueID = CSSValueStretch;
732 break; 710 break;
733 case BSTART: 711 case BSTART:
734 m_value.valueID = CSSValueStart; 712 m_valueID = CSSValueStart;
735 break; 713 break;
736 case BCENTER: 714 case BCENTER:
737 m_value.valueID = CSSValueCenter; 715 m_valueID = CSSValueCenter;
738 break; 716 break;
739 case BEND: 717 case BEND:
740 m_value.valueID = CSSValueEnd; 718 m_valueID = CSSValueEnd;
741 break; 719 break;
742 case BBASELINE: 720 case BBASELINE:
743 m_value.valueID = CSSValueBaseline; 721 m_valueID = CSSValueBaseline;
744 break; 722 break;
745 } 723 }
746 } 724 }
747 725
748 template<> inline EBoxAlignment CSSPrimitiveValue::convertTo() const 726 template<> inline EBoxAlignment CSSIdentifierValue::convertTo() const
749 { 727 {
750 ASSERT(isValueID()); 728 switch (m_valueID) {
751 switch (m_value.valueID) {
752 case CSSValueStretch: 729 case CSSValueStretch:
753 return BSTRETCH; 730 return BSTRETCH;
754 case CSSValueStart: 731 case CSSValueStart:
755 return BSTART; 732 return BSTART;
756 case CSSValueEnd: 733 case CSSValueEnd:
757 return BEND; 734 return BEND;
758 case CSSValueCenter: 735 case CSSValueCenter:
759 return BCENTER; 736 return BCENTER;
760 case CSSValueBaseline: 737 case CSSValueBaseline:
761 return BBASELINE; 738 return BBASELINE;
762 default: 739 default:
763 break; 740 break;
764 } 741 }
765 742
766 ASSERT_NOT_REACHED(); 743 ASSERT_NOT_REACHED();
767 return BSTRETCH; 744 return BSTRETCH;
768 } 745 }
769 746
770 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxDecorationBreak e) 747 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxDecorationBreak e)
771 : CSSValue(PrimitiveClass) 748 : CSSValue(IdentifierClass)
772 { 749 {
773 init(UnitType::ValueID);
774 switch (e) { 750 switch (e) {
775 case BoxDecorationBreakSlice: 751 case BoxDecorationBreakSlice:
776 m_value.valueID = CSSValueSlice; 752 m_valueID = CSSValueSlice;
777 break; 753 break;
778 case BoxDecorationBreakClone: 754 case BoxDecorationBreakClone:
779 m_value.valueID = CSSValueClone; 755 m_valueID = CSSValueClone;
780 break; 756 break;
781 } 757 }
782 } 758 }
783 759
784 template<> inline EBoxDecorationBreak CSSPrimitiveValue::convertTo() const 760 template<> inline EBoxDecorationBreak CSSIdentifierValue::convertTo() const
785 { 761 {
786 ASSERT(isValueID()); 762 switch (m_valueID) {
787 switch (m_value.valueID) {
788 case CSSValueSlice: 763 case CSSValueSlice:
789 return BoxDecorationBreakSlice; 764 return BoxDecorationBreakSlice;
790 case CSSValueClone: 765 case CSSValueClone:
791 return BoxDecorationBreakClone; 766 return BoxDecorationBreakClone;
792 default: 767 default:
793 break; 768 break;
794 } 769 }
795 770
796 ASSERT_NOT_REACHED(); 771 ASSERT_NOT_REACHED();
797 return BoxDecorationBreakSlice; 772 return BoxDecorationBreakSlice;
798 } 773 }
799 774
800 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(BackgroundEdgeOrigin e) 775 template<> inline CSSIdentifierValue::CSSIdentifierValue(BackgroundEdgeOrigin e)
801 : CSSValue(PrimitiveClass) 776 : CSSValue(IdentifierClass)
802 { 777 {
803 init(UnitType::ValueID);
804 switch (e) { 778 switch (e) {
805 case TopEdge: 779 case TopEdge:
806 m_value.valueID = CSSValueTop; 780 m_valueID = CSSValueTop;
807 break; 781 break;
808 case RightEdge: 782 case RightEdge:
809 m_value.valueID = CSSValueRight; 783 m_valueID = CSSValueRight;
810 break; 784 break;
811 case BottomEdge: 785 case BottomEdge:
812 m_value.valueID = CSSValueBottom; 786 m_valueID = CSSValueBottom;
813 break; 787 break;
814 case LeftEdge: 788 case LeftEdge:
815 m_value.valueID = CSSValueLeft; 789 m_valueID = CSSValueLeft;
816 break; 790 break;
817 } 791 }
818 } 792 }
819 793
820 template<> inline BackgroundEdgeOrigin CSSPrimitiveValue::convertTo() const 794 template<> inline BackgroundEdgeOrigin CSSIdentifierValue::convertTo() const
821 { 795 {
822 ASSERT(isValueID()); 796 switch (m_valueID) {
823 switch (m_value.valueID) {
824 case CSSValueTop: 797 case CSSValueTop:
825 return TopEdge; 798 return TopEdge;
826 case CSSValueRight: 799 case CSSValueRight:
827 return RightEdge; 800 return RightEdge;
828 case CSSValueBottom: 801 case CSSValueBottom:
829 return BottomEdge; 802 return BottomEdge;
830 case CSSValueLeft: 803 case CSSValueLeft:
831 return LeftEdge; 804 return LeftEdge;
832 default: 805 default:
833 break; 806 break;
834 } 807 }
835 808
836 ASSERT_NOT_REACHED(); 809 ASSERT_NOT_REACHED();
837 return TopEdge; 810 return TopEdge;
838 } 811 }
839 812
840 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxSizing e) 813 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxSizing e)
841 : CSSValue(PrimitiveClass) 814 : CSSValue(IdentifierClass)
842 { 815 {
843 init(UnitType::ValueID);
844 switch (e) { 816 switch (e) {
845 case BoxSizingBorderBox: 817 case BoxSizingBorderBox:
846 m_value.valueID = CSSValueBorderBox; 818 m_valueID = CSSValueBorderBox;
847 break; 819 break;
848 case BoxSizingContentBox: 820 case BoxSizingContentBox:
849 m_value.valueID = CSSValueContentBox; 821 m_valueID = CSSValueContentBox;
850 break; 822 break;
851 } 823 }
852 } 824 }
853 825
854 template<> inline EBoxSizing CSSPrimitiveValue::convertTo() const 826 template<> inline EBoxSizing CSSIdentifierValue::convertTo() const
855 { 827 {
856 ASSERT(isValueID()); 828 switch (m_valueID) {
857 switch (m_value.valueID) {
858 case CSSValueBorderBox: 829 case CSSValueBorderBox:
859 return BoxSizingBorderBox; 830 return BoxSizingBorderBox;
860 case CSSValueContentBox: 831 case CSSValueContentBox:
861 return BoxSizingContentBox; 832 return BoxSizingContentBox;
862 default: 833 default:
863 break; 834 break;
864 } 835 }
865 836
866 ASSERT_NOT_REACHED(); 837 ASSERT_NOT_REACHED();
867 return BoxSizingBorderBox; 838 return BoxSizingBorderBox;
868 } 839 }
869 840
870 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxDirection e) 841 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxDirection e)
871 : CSSValue(PrimitiveClass) 842 : CSSValue(IdentifierClass)
872 { 843 {
873 init(UnitType::ValueID);
874 switch (e) { 844 switch (e) {
875 case BNORMAL: 845 case BNORMAL:
876 m_value.valueID = CSSValueNormal; 846 m_valueID = CSSValueNormal;
877 break; 847 break;
878 case BREVERSE: 848 case BREVERSE:
879 m_value.valueID = CSSValueReverse; 849 m_valueID = CSSValueReverse;
880 break; 850 break;
881 } 851 }
882 } 852 }
883 853
884 template<> inline EBoxDirection CSSPrimitiveValue::convertTo() const 854 template<> inline EBoxDirection CSSIdentifierValue::convertTo() const
885 { 855 {
886 ASSERT(isValueID()); 856 switch (m_valueID) {
887 switch (m_value.valueID) {
888 case CSSValueNormal: 857 case CSSValueNormal:
889 return BNORMAL; 858 return BNORMAL;
890 case CSSValueReverse: 859 case CSSValueReverse:
891 return BREVERSE; 860 return BREVERSE;
892 default: 861 default:
893 break; 862 break;
894 } 863 }
895 864
896 ASSERT_NOT_REACHED(); 865 ASSERT_NOT_REACHED();
897 return BNORMAL; 866 return BNORMAL;
898 } 867 }
899 868
900 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxLines e) 869 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxLines e)
901 : CSSValue(PrimitiveClass) 870 : CSSValue(IdentifierClass)
902 { 871 {
903 init(UnitType::ValueID);
904 switch (e) { 872 switch (e) {
905 case SINGLE: 873 case SINGLE:
906 m_value.valueID = CSSValueSingle; 874 m_valueID = CSSValueSingle;
907 break; 875 break;
908 case MULTIPLE: 876 case MULTIPLE:
909 m_value.valueID = CSSValueMultiple; 877 m_valueID = CSSValueMultiple;
910 break; 878 break;
911 } 879 }
912 } 880 }
913 881
914 template<> inline EBoxLines CSSPrimitiveValue::convertTo() const 882 template<> inline EBoxLines CSSIdentifierValue::convertTo() const
915 { 883 {
916 ASSERT(isValueID()); 884 switch (m_valueID) {
917 switch (m_value.valueID) {
918 case CSSValueSingle: 885 case CSSValueSingle:
919 return SINGLE; 886 return SINGLE;
920 case CSSValueMultiple: 887 case CSSValueMultiple:
921 return MULTIPLE; 888 return MULTIPLE;
922 default: 889 default:
923 break; 890 break;
924 } 891 }
925 892
926 ASSERT_NOT_REACHED(); 893 ASSERT_NOT_REACHED();
927 return SINGLE; 894 return SINGLE;
928 } 895 }
929 896
930 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBoxOrient e) 897 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBoxOrient e)
931 : CSSValue(PrimitiveClass) 898 : CSSValue(IdentifierClass)
932 { 899 {
933 init(UnitType::ValueID);
934 switch (e) { 900 switch (e) {
935 case HORIZONTAL: 901 case HORIZONTAL:
936 m_value.valueID = CSSValueHorizontal; 902 m_valueID = CSSValueHorizontal;
937 break; 903 break;
938 case VERTICAL: 904 case VERTICAL:
939 m_value.valueID = CSSValueVertical; 905 m_valueID = CSSValueVertical;
940 break; 906 break;
941 } 907 }
942 } 908 }
943 909
944 template<> inline EBoxOrient CSSPrimitiveValue::convertTo() const 910 template<> inline EBoxOrient CSSIdentifierValue::convertTo() const
945 { 911 {
946 ASSERT(isValueID()); 912 switch (m_valueID) {
947 switch (m_value.valueID) {
948 case CSSValueHorizontal: 913 case CSSValueHorizontal:
949 case CSSValueInlineAxis: 914 case CSSValueInlineAxis:
950 return HORIZONTAL; 915 return HORIZONTAL;
951 case CSSValueVertical: 916 case CSSValueVertical:
952 case CSSValueBlockAxis: 917 case CSSValueBlockAxis:
953 return VERTICAL; 918 return VERTICAL;
954 default: 919 default:
955 break; 920 break;
956 } 921 }
957 922
958 ASSERT_NOT_REACHED(); 923 ASSERT_NOT_REACHED();
959 return HORIZONTAL; 924 return HORIZONTAL;
960 } 925 }
961 926
962 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ECaptionSide e) 927 template<> inline CSSIdentifierValue::CSSIdentifierValue(ECaptionSide e)
963 : CSSValue(PrimitiveClass) 928 : CSSValue(IdentifierClass)
964 { 929 {
965 init(UnitType::ValueID);
966 switch (e) { 930 switch (e) {
967 case ECaptionSide::Left: 931 case ECaptionSide::Left:
968 m_value.valueID = CSSValueLeft; 932 m_valueID = CSSValueLeft;
969 break; 933 break;
970 case ECaptionSide::Right: 934 case ECaptionSide::Right:
971 m_value.valueID = CSSValueRight; 935 m_valueID = CSSValueRight;
972 break; 936 break;
973 case ECaptionSide::Top: 937 case ECaptionSide::Top:
974 m_value.valueID = CSSValueTop; 938 m_valueID = CSSValueTop;
975 break; 939 break;
976 case ECaptionSide::Bottom: 940 case ECaptionSide::Bottom:
977 m_value.valueID = CSSValueBottom; 941 m_valueID = CSSValueBottom;
978 break; 942 break;
979 } 943 }
980 } 944 }
981 945
982 template<> inline ECaptionSide CSSPrimitiveValue::convertTo() const 946 template<> inline ECaptionSide CSSIdentifierValue::convertTo() const
983 { 947 {
984 ASSERT(isValueID()); 948 switch (m_valueID) {
985 switch (m_value.valueID) {
986 case CSSValueLeft: 949 case CSSValueLeft:
987 return ECaptionSide::Left; 950 return ECaptionSide::Left;
988 case CSSValueRight: 951 case CSSValueRight:
989 return ECaptionSide::Right; 952 return ECaptionSide::Right;
990 case CSSValueTop: 953 case CSSValueTop:
991 return ECaptionSide::Top; 954 return ECaptionSide::Top;
992 case CSSValueBottom: 955 case CSSValueBottom:
993 return ECaptionSide::Bottom; 956 return ECaptionSide::Bottom;
994 default: 957 default:
995 break; 958 break;
996 } 959 }
997 960
998 ASSERT_NOT_REACHED(); 961 ASSERT_NOT_REACHED();
999 return ECaptionSide::Top; 962 return ECaptionSide::Top;
1000 } 963 }
1001 964
1002 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EClear e) 965 template<> inline CSSIdentifierValue::CSSIdentifierValue(EClear e)
1003 : CSSValue(PrimitiveClass) 966 : CSSValue(IdentifierClass)
1004 { 967 {
1005 init(UnitType::ValueID);
1006 switch (e) { 968 switch (e) {
1007 case ClearNone: 969 case ClearNone:
1008 m_value.valueID = CSSValueNone; 970 m_valueID = CSSValueNone;
1009 break; 971 break;
1010 case ClearLeft: 972 case ClearLeft:
1011 m_value.valueID = CSSValueLeft; 973 m_valueID = CSSValueLeft;
1012 break; 974 break;
1013 case ClearRight: 975 case ClearRight:
1014 m_value.valueID = CSSValueRight; 976 m_valueID = CSSValueRight;
1015 break; 977 break;
1016 case ClearBoth: 978 case ClearBoth:
1017 m_value.valueID = CSSValueBoth; 979 m_valueID = CSSValueBoth;
1018 break; 980 break;
1019 } 981 }
1020 } 982 }
1021 983
1022 template<> inline EClear CSSPrimitiveValue::convertTo() const 984 template<> inline EClear CSSIdentifierValue::convertTo() const
1023 { 985 {
1024 ASSERT(isValueID()); 986 switch (m_valueID) {
1025 switch (m_value.valueID) {
1026 case CSSValueNone: 987 case CSSValueNone:
1027 return ClearNone; 988 return ClearNone;
1028 case CSSValueLeft: 989 case CSSValueLeft:
1029 return ClearLeft; 990 return ClearLeft;
1030 case CSSValueRight: 991 case CSSValueRight:
1031 return ClearRight; 992 return ClearRight;
1032 case CSSValueBoth: 993 case CSSValueBoth:
1033 return ClearBoth; 994 return ClearBoth;
1034 default: 995 default:
1035 break; 996 break;
1036 } 997 }
1037 998
1038 ASSERT_NOT_REACHED(); 999 ASSERT_NOT_REACHED();
1039 return ClearNone; 1000 return ClearNone;
1040 } 1001 }
1041 1002
1042 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ECursor e) 1003 template<> inline CSSIdentifierValue::CSSIdentifierValue(ECursor e)
1043 : CSSValue(PrimitiveClass) 1004 : CSSValue(IdentifierClass)
1044 { 1005 {
1045 init(UnitType::ValueID);
1046 switch (e) { 1006 switch (e) {
1047 case CURSOR_AUTO: 1007 case CURSOR_AUTO:
1048 m_value.valueID = CSSValueAuto; 1008 m_valueID = CSSValueAuto;
1049 break; 1009 break;
1050 case CURSOR_CROSS: 1010 case CURSOR_CROSS:
1051 m_value.valueID = CSSValueCrosshair; 1011 m_valueID = CSSValueCrosshair;
1052 break; 1012 break;
1053 case CURSOR_DEFAULT: 1013 case CURSOR_DEFAULT:
1054 m_value.valueID = CSSValueDefault; 1014 m_valueID = CSSValueDefault;
1055 break; 1015 break;
1056 case CURSOR_POINTER: 1016 case CURSOR_POINTER:
1057 m_value.valueID = CSSValuePointer; 1017 m_valueID = CSSValuePointer;
1058 break; 1018 break;
1059 case CURSOR_MOVE: 1019 case CURSOR_MOVE:
1060 m_value.valueID = CSSValueMove; 1020 m_valueID = CSSValueMove;
1061 break; 1021 break;
1062 case CURSOR_CELL: 1022 case CURSOR_CELL:
1063 m_value.valueID = CSSValueCell; 1023 m_valueID = CSSValueCell;
1064 break; 1024 break;
1065 case CURSOR_VERTICAL_TEXT: 1025 case CURSOR_VERTICAL_TEXT:
1066 m_value.valueID = CSSValueVerticalText; 1026 m_valueID = CSSValueVerticalText;
1067 break; 1027 break;
1068 case CURSOR_CONTEXT_MENU: 1028 case CURSOR_CONTEXT_MENU:
1069 m_value.valueID = CSSValueContextMenu; 1029 m_valueID = CSSValueContextMenu;
1070 break; 1030 break;
1071 case CURSOR_ALIAS: 1031 case CURSOR_ALIAS:
1072 m_value.valueID = CSSValueAlias; 1032 m_valueID = CSSValueAlias;
1073 break; 1033 break;
1074 case CURSOR_COPY: 1034 case CURSOR_COPY:
1075 m_value.valueID = CSSValueCopy; 1035 m_valueID = CSSValueCopy;
1076 break; 1036 break;
1077 case CURSOR_NONE: 1037 case CURSOR_NONE:
1078 m_value.valueID = CSSValueNone; 1038 m_valueID = CSSValueNone;
1079 break; 1039 break;
1080 case CURSOR_PROGRESS: 1040 case CURSOR_PROGRESS:
1081 m_value.valueID = CSSValueProgress; 1041 m_valueID = CSSValueProgress;
1082 break; 1042 break;
1083 case CURSOR_NO_DROP: 1043 case CURSOR_NO_DROP:
1084 m_value.valueID = CSSValueNoDrop; 1044 m_valueID = CSSValueNoDrop;
1085 break; 1045 break;
1086 case CURSOR_NOT_ALLOWED: 1046 case CURSOR_NOT_ALLOWED:
1087 m_value.valueID = CSSValueNotAllowed; 1047 m_valueID = CSSValueNotAllowed;
1088 break; 1048 break;
1089 case CURSOR_ZOOM_IN: 1049 case CURSOR_ZOOM_IN:
1090 m_value.valueID = CSSValueZoomIn; 1050 m_valueID = CSSValueZoomIn;
1091 break; 1051 break;
1092 case CURSOR_ZOOM_OUT: 1052 case CURSOR_ZOOM_OUT:
1093 m_value.valueID = CSSValueZoomOut; 1053 m_valueID = CSSValueZoomOut;
1094 break; 1054 break;
1095 case CURSOR_E_RESIZE: 1055 case CURSOR_E_RESIZE:
1096 m_value.valueID = CSSValueEResize; 1056 m_valueID = CSSValueEResize;
1097 break; 1057 break;
1098 case CURSOR_NE_RESIZE: 1058 case CURSOR_NE_RESIZE:
1099 m_value.valueID = CSSValueNeResize; 1059 m_valueID = CSSValueNeResize;
1100 break; 1060 break;
1101 case CURSOR_NW_RESIZE: 1061 case CURSOR_NW_RESIZE:
1102 m_value.valueID = CSSValueNwResize; 1062 m_valueID = CSSValueNwResize;
1103 break; 1063 break;
1104 case CURSOR_N_RESIZE: 1064 case CURSOR_N_RESIZE:
1105 m_value.valueID = CSSValueNResize; 1065 m_valueID = CSSValueNResize;
1106 break; 1066 break;
1107 case CURSOR_SE_RESIZE: 1067 case CURSOR_SE_RESIZE:
1108 m_value.valueID = CSSValueSeResize; 1068 m_valueID = CSSValueSeResize;
1109 break; 1069 break;
1110 case CURSOR_SW_RESIZE: 1070 case CURSOR_SW_RESIZE:
1111 m_value.valueID = CSSValueSwResize; 1071 m_valueID = CSSValueSwResize;
1112 break; 1072 break;
1113 case CURSOR_S_RESIZE: 1073 case CURSOR_S_RESIZE:
1114 m_value.valueID = CSSValueSResize; 1074 m_valueID = CSSValueSResize;
1115 break; 1075 break;
1116 case CURSOR_W_RESIZE: 1076 case CURSOR_W_RESIZE:
1117 m_value.valueID = CSSValueWResize; 1077 m_valueID = CSSValueWResize;
1118 break; 1078 break;
1119 case CURSOR_EW_RESIZE: 1079 case CURSOR_EW_RESIZE:
1120 m_value.valueID = CSSValueEwResize; 1080 m_valueID = CSSValueEwResize;
1121 break; 1081 break;
1122 case CURSOR_NS_RESIZE: 1082 case CURSOR_NS_RESIZE:
1123 m_value.valueID = CSSValueNsResize; 1083 m_valueID = CSSValueNsResize;
1124 break; 1084 break;
1125 case CURSOR_NESW_RESIZE: 1085 case CURSOR_NESW_RESIZE:
1126 m_value.valueID = CSSValueNeswResize; 1086 m_valueID = CSSValueNeswResize;
1127 break; 1087 break;
1128 case CURSOR_NWSE_RESIZE: 1088 case CURSOR_NWSE_RESIZE:
1129 m_value.valueID = CSSValueNwseResize; 1089 m_valueID = CSSValueNwseResize;
1130 break; 1090 break;
1131 case CURSOR_COL_RESIZE: 1091 case CURSOR_COL_RESIZE:
1132 m_value.valueID = CSSValueColResize; 1092 m_valueID = CSSValueColResize;
1133 break; 1093 break;
1134 case CURSOR_ROW_RESIZE: 1094 case CURSOR_ROW_RESIZE:
1135 m_value.valueID = CSSValueRowResize; 1095 m_valueID = CSSValueRowResize;
1136 break; 1096 break;
1137 case CURSOR_TEXT: 1097 case CURSOR_TEXT:
1138 m_value.valueID = CSSValueText; 1098 m_valueID = CSSValueText;
1139 break; 1099 break;
1140 case CURSOR_WAIT: 1100 case CURSOR_WAIT:
1141 m_value.valueID = CSSValueWait; 1101 m_valueID = CSSValueWait;
1142 break; 1102 break;
1143 case CURSOR_HELP: 1103 case CURSOR_HELP:
1144 m_value.valueID = CSSValueHelp; 1104 m_valueID = CSSValueHelp;
1145 break; 1105 break;
1146 case CURSOR_ALL_SCROLL: 1106 case CURSOR_ALL_SCROLL:
1147 m_value.valueID = CSSValueAllScroll; 1107 m_valueID = CSSValueAllScroll;
1148 break; 1108 break;
1149 case CURSOR_WEBKIT_GRAB: 1109 case CURSOR_WEBKIT_GRAB:
1150 m_value.valueID = CSSValueWebkitGrab; 1110 m_valueID = CSSValueWebkitGrab;
1151 break; 1111 break;
1152 case CURSOR_WEBKIT_GRABBING: 1112 case CURSOR_WEBKIT_GRABBING:
1153 m_value.valueID = CSSValueWebkitGrabbing; 1113 m_valueID = CSSValueWebkitGrabbing;
1154 break; 1114 break;
1155 } 1115 }
1156 } 1116 }
1157 1117
1158 template<> inline ECursor CSSPrimitiveValue::convertTo() const 1118 template<> inline ECursor CSSIdentifierValue::convertTo() const
1159 { 1119 {
1160 ASSERT(isValueID()); 1120 switch (m_valueID) {
1161 switch (m_value.valueID) {
1162 case CSSValueCopy: 1121 case CSSValueCopy:
1163 return CURSOR_COPY; 1122 return CURSOR_COPY;
1164 case CSSValueWebkitZoomIn: 1123 case CSSValueWebkitZoomIn:
1165 return CURSOR_ZOOM_IN; 1124 return CURSOR_ZOOM_IN;
1166 case CSSValueWebkitZoomOut: 1125 case CSSValueWebkitZoomOut:
1167 return CURSOR_ZOOM_OUT; 1126 return CURSOR_ZOOM_OUT;
1168 case CSSValueNone: 1127 case CSSValueNone:
1169 return CURSOR_NONE; 1128 return CURSOR_NONE;
1170 default: 1129 default:
1171 return static_cast<ECursor>(m_value.valueID - CSSValueAuto); 1130 return static_cast<ECursor>(m_valueID - CSSValueAuto);
1172 } 1131 }
1173 } 1132 }
1174 1133
1175 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDisplay e) 1134 template<> inline CSSIdentifierValue::CSSIdentifierValue(EDisplay e)
1176 : CSSValue(PrimitiveClass) 1135 : CSSValue(IdentifierClass)
1177 { 1136 {
1178 init(UnitType::ValueID);
1179 switch (e) { 1137 switch (e) {
1180 case EDisplay::Inline: 1138 case EDisplay::Inline:
1181 m_value.valueID = CSSValueInline; 1139 m_valueID = CSSValueInline;
1182 break; 1140 break;
1183 case EDisplay::Block: 1141 case EDisplay::Block:
1184 m_value.valueID = CSSValueBlock; 1142 m_valueID = CSSValueBlock;
1185 break; 1143 break;
1186 case EDisplay::ListItem: 1144 case EDisplay::ListItem:
1187 m_value.valueID = CSSValueListItem; 1145 m_valueID = CSSValueListItem;
1188 break; 1146 break;
1189 case EDisplay::InlineBlock: 1147 case EDisplay::InlineBlock:
1190 m_value.valueID = CSSValueInlineBlock; 1148 m_valueID = CSSValueInlineBlock;
1191 break; 1149 break;
1192 case EDisplay::Table: 1150 case EDisplay::Table:
1193 m_value.valueID = CSSValueTable; 1151 m_valueID = CSSValueTable;
1194 break; 1152 break;
1195 case EDisplay::InlineTable: 1153 case EDisplay::InlineTable:
1196 m_value.valueID = CSSValueInlineTable; 1154 m_valueID = CSSValueInlineTable;
1197 break; 1155 break;
1198 case EDisplay::TableRowGroup: 1156 case EDisplay::TableRowGroup:
1199 m_value.valueID = CSSValueTableRowGroup; 1157 m_valueID = CSSValueTableRowGroup;
1200 break; 1158 break;
1201 case EDisplay::TableHeaderGroup: 1159 case EDisplay::TableHeaderGroup:
1202 m_value.valueID = CSSValueTableHeaderGroup; 1160 m_valueID = CSSValueTableHeaderGroup;
1203 break; 1161 break;
1204 case EDisplay::TableFooterGroup: 1162 case EDisplay::TableFooterGroup:
1205 m_value.valueID = CSSValueTableFooterGroup; 1163 m_valueID = CSSValueTableFooterGroup;
1206 break; 1164 break;
1207 case EDisplay::TableRow: 1165 case EDisplay::TableRow:
1208 m_value.valueID = CSSValueTableRow; 1166 m_valueID = CSSValueTableRow;
1209 break; 1167 break;
1210 case EDisplay::TableColumnGroup: 1168 case EDisplay::TableColumnGroup:
1211 m_value.valueID = CSSValueTableColumnGroup; 1169 m_valueID = CSSValueTableColumnGroup;
1212 break; 1170 break;
1213 case EDisplay::TableColumn: 1171 case EDisplay::TableColumn:
1214 m_value.valueID = CSSValueTableColumn; 1172 m_valueID = CSSValueTableColumn;
1215 break; 1173 break;
1216 case EDisplay::TableCell: 1174 case EDisplay::TableCell:
1217 m_value.valueID = CSSValueTableCell; 1175 m_valueID = CSSValueTableCell;
1218 break; 1176 break;
1219 case EDisplay::TableCaption: 1177 case EDisplay::TableCaption:
1220 m_value.valueID = CSSValueTableCaption; 1178 m_valueID = CSSValueTableCaption;
1221 break; 1179 break;
1222 case EDisplay::Box: 1180 case EDisplay::Box:
1223 m_value.valueID = CSSValueWebkitBox; 1181 m_valueID = CSSValueWebkitBox;
1224 break; 1182 break;
1225 case EDisplay::InlineBox: 1183 case EDisplay::InlineBox:
1226 m_value.valueID = CSSValueWebkitInlineBox; 1184 m_valueID = CSSValueWebkitInlineBox;
1227 break; 1185 break;
1228 case EDisplay::Flex: 1186 case EDisplay::Flex:
1229 m_value.valueID = CSSValueFlex; 1187 m_valueID = CSSValueFlex;
1230 break; 1188 break;
1231 case EDisplay::InlineFlex: 1189 case EDisplay::InlineFlex:
1232 m_value.valueID = CSSValueInlineFlex; 1190 m_valueID = CSSValueInlineFlex;
1233 break; 1191 break;
1234 case EDisplay::Grid: 1192 case EDisplay::Grid:
1235 m_value.valueID = CSSValueGrid; 1193 m_valueID = CSSValueGrid;
1236 break; 1194 break;
1237 case EDisplay::InlineGrid: 1195 case EDisplay::InlineGrid:
1238 m_value.valueID = CSSValueInlineGrid; 1196 m_valueID = CSSValueInlineGrid;
1239 break; 1197 break;
1240 case EDisplay::None: 1198 case EDisplay::None:
1241 m_value.valueID = CSSValueNone; 1199 m_valueID = CSSValueNone;
1242 break; 1200 break;
1243 } 1201 }
1244 } 1202 }
1245 1203
1246 template<> inline EDisplay CSSPrimitiveValue::convertTo() const 1204 template<> inline EDisplay CSSIdentifierValue::convertTo() const
1247 { 1205 {
1248 ASSERT(isValueID()); 1206 if (m_valueID == CSSValueNone)
1249 if (m_value.valueID == CSSValueNone)
1250 return EDisplay::None; 1207 return EDisplay::None;
1251 1208
1252 if (m_value.valueID == CSSValueWebkitFlex) 1209 if (m_valueID == CSSValueWebkitFlex)
1253 return EDisplay::Flex; 1210 return EDisplay::Flex;
1254 if (m_value.valueID == CSSValueWebkitInlineFlex) 1211 if (m_valueID == CSSValueWebkitInlineFlex)
1255 return EDisplay::InlineFlex; 1212 return EDisplay::InlineFlex;
1256 1213
1257 EDisplay display = static_cast<EDisplay>(m_value.valueID - CSSValueInline); 1214 EDisplay display = static_cast<EDisplay>(m_valueID - CSSValueInline);
1258 // TODO(sashab): Check display is a valid EDisplay here. 1215 // TODO(sashab): Check display is a valid EDisplay here.
1259 return display; 1216 return display;
1260 } 1217 }
1261 1218
1262 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EEmptyCells e) 1219 template<> inline CSSIdentifierValue::CSSIdentifierValue(EEmptyCells e)
1263 : CSSValue(PrimitiveClass) 1220 : CSSValue(IdentifierClass)
1264 { 1221 {
1265 init(UnitType::ValueID);
1266 switch (e) { 1222 switch (e) {
1267 case EEmptyCells::Show: 1223 case EEmptyCells::Show:
1268 m_value.valueID = CSSValueShow; 1224 m_valueID = CSSValueShow;
1269 break; 1225 break;
1270 case EEmptyCells::Hide: 1226 case EEmptyCells::Hide:
1271 m_value.valueID = CSSValueHide; 1227 m_valueID = CSSValueHide;
1272 break; 1228 break;
1273 } 1229 }
1274 } 1230 }
1275 1231
1276 template<> inline EEmptyCells CSSPrimitiveValue::convertTo() const 1232 template<> inline EEmptyCells CSSIdentifierValue::convertTo() const
1277 { 1233 {
1278 ASSERT(isValueID()); 1234 switch (m_valueID) {
1279 switch (m_value.valueID) {
1280 case CSSValueShow: 1235 case CSSValueShow:
1281 return EEmptyCells::Show; 1236 return EEmptyCells::Show;
1282 case CSSValueHide: 1237 case CSSValueHide:
1283 return EEmptyCells::Hide; 1238 return EEmptyCells::Hide;
1284 default: 1239 default:
1285 break; 1240 break;
1286 } 1241 }
1287 1242
1288 ASSERT_NOT_REACHED(); 1243 ASSERT_NOT_REACHED();
1289 return EEmptyCells::Show; 1244 return EEmptyCells::Show;
1290 } 1245 }
1291 1246
1292 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexDirection e) 1247 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFlexDirection e)
1293 : CSSValue(PrimitiveClass) 1248 : CSSValue(IdentifierClass)
1294 { 1249 {
1295 init(UnitType::ValueID);
1296 switch (e) { 1250 switch (e) {
1297 case FlowRow: 1251 case FlowRow:
1298 m_value.valueID = CSSValueRow; 1252 m_valueID = CSSValueRow;
1299 break; 1253 break;
1300 case FlowRowReverse: 1254 case FlowRowReverse:
1301 m_value.valueID = CSSValueRowReverse; 1255 m_valueID = CSSValueRowReverse;
1302 break; 1256 break;
1303 case FlowColumn: 1257 case FlowColumn:
1304 m_value.valueID = CSSValueColumn; 1258 m_valueID = CSSValueColumn;
1305 break; 1259 break;
1306 case FlowColumnReverse: 1260 case FlowColumnReverse:
1307 m_value.valueID = CSSValueColumnReverse; 1261 m_valueID = CSSValueColumnReverse;
1308 break; 1262 break;
1309 } 1263 }
1310 } 1264 }
1311 1265
1312 template<> inline EFlexDirection CSSPrimitiveValue::convertTo() const 1266 template<> inline EFlexDirection CSSIdentifierValue::convertTo() const
1313 { 1267 {
1314 ASSERT(isValueID()); 1268 switch (m_valueID) {
1315 switch (m_value.valueID) {
1316 case CSSValueRow: 1269 case CSSValueRow:
1317 return FlowRow; 1270 return FlowRow;
1318 case CSSValueRowReverse: 1271 case CSSValueRowReverse:
1319 return FlowRowReverse; 1272 return FlowRowReverse;
1320 case CSSValueColumn: 1273 case CSSValueColumn:
1321 return FlowColumn; 1274 return FlowColumn;
1322 case CSSValueColumnReverse: 1275 case CSSValueColumnReverse:
1323 return FlowColumnReverse; 1276 return FlowColumnReverse;
1324 default: 1277 default:
1325 break; 1278 break;
1326 } 1279 }
1327 1280
1328 ASSERT_NOT_REACHED(); 1281 ASSERT_NOT_REACHED();
1329 return FlowRow; 1282 return FlowRow;
1330 } 1283 }
1331 1284
1332 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFlexWrap e) 1285 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFlexWrap e)
1333 : CSSValue(PrimitiveClass) 1286 : CSSValue(IdentifierClass)
1334 { 1287 {
1335 init(UnitType::ValueID);
1336 switch (e) { 1288 switch (e) {
1337 case FlexNoWrap: 1289 case FlexNoWrap:
1338 m_value.valueID = CSSValueNowrap; 1290 m_valueID = CSSValueNowrap;
1339 break; 1291 break;
1340 case FlexWrap: 1292 case FlexWrap:
1341 m_value.valueID = CSSValueWrap; 1293 m_valueID = CSSValueWrap;
1342 break; 1294 break;
1343 case FlexWrapReverse: 1295 case FlexWrapReverse:
1344 m_value.valueID = CSSValueWrapReverse; 1296 m_valueID = CSSValueWrapReverse;
1345 break; 1297 break;
1346 } 1298 }
1347 } 1299 }
1348 1300
1349 template<> inline EFlexWrap CSSPrimitiveValue::convertTo() const 1301 template<> inline EFlexWrap CSSIdentifierValue::convertTo() const
1350 { 1302 {
1351 ASSERT(isValueID()); 1303 switch (m_valueID) {
1352 switch (m_value.valueID) {
1353 case CSSValueNowrap: 1304 case CSSValueNowrap:
1354 return FlexNoWrap; 1305 return FlexNoWrap;
1355 case CSSValueWrap: 1306 case CSSValueWrap:
1356 return FlexWrap; 1307 return FlexWrap;
1357 case CSSValueWrapReverse: 1308 case CSSValueWrapReverse:
1358 return FlexWrapReverse; 1309 return FlexWrapReverse;
1359 default: 1310 default:
1360 break; 1311 break;
1361 } 1312 }
1362 1313
1363 ASSERT_NOT_REACHED(); 1314 ASSERT_NOT_REACHED();
1364 return FlexNoWrap; 1315 return FlexNoWrap;
1365 } 1316 }
1366 1317
1367 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFloat e) 1318 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFloat e)
1368 : CSSValue(PrimitiveClass) 1319 : CSSValue(IdentifierClass)
1369 { 1320 {
1370 init(UnitType::ValueID);
1371 switch (e) { 1321 switch (e) {
1372 case EFloat::None: 1322 case EFloat::None:
1373 m_value.valueID = CSSValueNone; 1323 m_valueID = CSSValueNone;
1374 break; 1324 break;
1375 case EFloat::Left: 1325 case EFloat::Left:
1376 m_value.valueID = CSSValueLeft; 1326 m_valueID = CSSValueLeft;
1377 break; 1327 break;
1378 case EFloat::Right: 1328 case EFloat::Right:
1379 m_value.valueID = CSSValueRight; 1329 m_valueID = CSSValueRight;
1380 break; 1330 break;
1381 } 1331 }
1382 } 1332 }
1383 1333
1384 template<> inline EFloat CSSPrimitiveValue::convertTo() const 1334 template<> inline EFloat CSSIdentifierValue::convertTo() const
1385 { 1335 {
1386 ASSERT(isValueID()); 1336 switch (m_valueID) {
1387 switch (m_value.valueID) {
1388 case CSSValueLeft: 1337 case CSSValueLeft:
1389 return EFloat::Left; 1338 return EFloat::Left;
1390 case CSSValueRight: 1339 case CSSValueRight:
1391 return EFloat::Right; 1340 return EFloat::Right;
1392 case CSSValueNone: 1341 case CSSValueNone:
1393 return EFloat::None; 1342 return EFloat::None;
1394 default: 1343 default:
1395 break; 1344 break;
1396 } 1345 }
1397 1346
1398 ASSERT_NOT_REACHED(); 1347 ASSERT_NOT_REACHED();
1399 return EFloat::None; 1348 return EFloat::None;
1400 } 1349 }
1401 1350
1402 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Hyphens e) 1351 template<> inline CSSIdentifierValue::CSSIdentifierValue(Hyphens e)
1403 : CSSValue(PrimitiveClass) 1352 : CSSValue(IdentifierClass)
1404 { 1353 {
1405 init(UnitType::ValueID);
1406 switch (e) { 1354 switch (e) {
1407 case HyphensAuto: 1355 case HyphensAuto:
1408 m_value.valueID = CSSValueAuto; 1356 m_valueID = CSSValueAuto;
1409 break; 1357 break;
1410 case HyphensManual: 1358 case HyphensManual:
1411 m_value.valueID = CSSValueManual; 1359 m_valueID = CSSValueManual;
1412 break; 1360 break;
1413 case HyphensNone: 1361 case HyphensNone:
1414 m_value.valueID = CSSValueNone; 1362 m_valueID = CSSValueNone;
1415 break; 1363 break;
1416 } 1364 }
1417 } 1365 }
1418 1366
1419 template<> inline Hyphens CSSPrimitiveValue::convertTo() const 1367 template<> inline Hyphens CSSIdentifierValue::convertTo() const
1420 { 1368 {
1421 DCHECK(isValueID()); 1369 switch (m_valueID) {
1422 switch (m_value.valueID) {
1423 case CSSValueAuto: 1370 case CSSValueAuto:
1424 return HyphensAuto; 1371 return HyphensAuto;
1425 case CSSValueManual: 1372 case CSSValueManual:
1426 return HyphensManual; 1373 return HyphensManual;
1427 case CSSValueNone: 1374 case CSSValueNone:
1428 return HyphensNone; 1375 return HyphensNone;
1429 default: 1376 default:
1430 break; 1377 break;
1431 } 1378 }
1432 1379
1433 NOTREACHED(); 1380 NOTREACHED();
1434 return HyphensManual; 1381 return HyphensManual;
1435 } 1382 }
1436 1383
1437 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineBreak e) 1384 template<> inline CSSIdentifierValue::CSSIdentifierValue(LineBreak e)
1438 : CSSValue(PrimitiveClass) 1385 : CSSValue(IdentifierClass)
1439 { 1386 {
1440 init(UnitType::ValueID);
1441 switch (e) { 1387 switch (e) {
1442 case LineBreakAuto: 1388 case LineBreakAuto:
1443 m_value.valueID = CSSValueAuto; 1389 m_valueID = CSSValueAuto;
1444 break; 1390 break;
1445 case LineBreakLoose: 1391 case LineBreakLoose:
1446 m_value.valueID = CSSValueLoose; 1392 m_valueID = CSSValueLoose;
1447 break; 1393 break;
1448 case LineBreakNormal: 1394 case LineBreakNormal:
1449 m_value.valueID = CSSValueNormal; 1395 m_valueID = CSSValueNormal;
1450 break; 1396 break;
1451 case LineBreakStrict: 1397 case LineBreakStrict:
1452 m_value.valueID = CSSValueStrict; 1398 m_valueID = CSSValueStrict;
1453 break; 1399 break;
1454 case LineBreakAfterWhiteSpace: 1400 case LineBreakAfterWhiteSpace:
1455 m_value.valueID = CSSValueAfterWhiteSpace; 1401 m_valueID = CSSValueAfterWhiteSpace;
1456 break; 1402 break;
1457 } 1403 }
1458 } 1404 }
1459 1405
1460 template<> inline LineBreak CSSPrimitiveValue::convertTo() const 1406 template<> inline LineBreak CSSIdentifierValue::convertTo() const
1461 { 1407 {
1462 ASSERT(isValueID()); 1408 switch (m_valueID) {
1463 switch (m_value.valueID) {
1464 case CSSValueAuto: 1409 case CSSValueAuto:
1465 return LineBreakAuto; 1410 return LineBreakAuto;
1466 case CSSValueLoose: 1411 case CSSValueLoose:
1467 return LineBreakLoose; 1412 return LineBreakLoose;
1468 case CSSValueNormal: 1413 case CSSValueNormal:
1469 return LineBreakNormal; 1414 return LineBreakNormal;
1470 case CSSValueStrict: 1415 case CSSValueStrict:
1471 return LineBreakStrict; 1416 return LineBreakStrict;
1472 case CSSValueAfterWhiteSpace: 1417 case CSSValueAfterWhiteSpace:
1473 return LineBreakAfterWhiteSpace; 1418 return LineBreakAfterWhiteSpace;
1474 default: 1419 default:
1475 break; 1420 break;
1476 } 1421 }
1477 1422
1478 ASSERT_NOT_REACHED(); 1423 ASSERT_NOT_REACHED();
1479 return LineBreakAuto; 1424 return LineBreakAuto;
1480 } 1425 }
1481 1426
1482 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EListStylePosition e) 1427 template<> inline CSSIdentifierValue::CSSIdentifierValue(EListStylePosition e)
1483 : CSSValue(PrimitiveClass) 1428 : CSSValue(IdentifierClass)
1484 { 1429 {
1485 init(UnitType::ValueID);
1486 switch (e) { 1430 switch (e) {
1487 case ListStylePositionOutside: 1431 case ListStylePositionOutside:
1488 m_value.valueID = CSSValueOutside; 1432 m_valueID = CSSValueOutside;
1489 break; 1433 break;
1490 case ListStylePositionInside: 1434 case ListStylePositionInside:
1491 m_value.valueID = CSSValueInside; 1435 m_valueID = CSSValueInside;
1492 break; 1436 break;
1493 } 1437 }
1494 } 1438 }
1495 1439
1496 template<> inline EListStylePosition CSSPrimitiveValue::convertTo() const 1440 template<> inline EListStylePosition CSSIdentifierValue::convertTo() const
1497 { 1441 {
1498 ASSERT(isValueID()); 1442 switch (m_valueID) {
1499 switch (m_value.valueID) {
1500 case CSSValueOutside: 1443 case CSSValueOutside:
1501 return ListStylePositionOutside; 1444 return ListStylePositionOutside;
1502 case CSSValueInside: 1445 case CSSValueInside:
1503 return ListStylePositionInside; 1446 return ListStylePositionInside;
1504 default: 1447 default:
1505 break; 1448 break;
1506 } 1449 }
1507 1450
1508 ASSERT_NOT_REACHED(); 1451 ASSERT_NOT_REACHED();
1509 return ListStylePositionOutside; 1452 return ListStylePositionOutside;
1510 } 1453 }
1511 1454
1512 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EListStyleType e) 1455 template<> inline CSSIdentifierValue::CSSIdentifierValue(EListStyleType e)
1513 : CSSValue(PrimitiveClass) 1456 : CSSValue(IdentifierClass)
1514 { 1457 {
1515 init(UnitType::ValueID);
1516 switch (e) { 1458 switch (e) {
1517 case ArabicIndic: 1459 case ArabicIndic:
1518 m_value.valueID = CSSValueArabicIndic; 1460 m_valueID = CSSValueArabicIndic;
1519 break; 1461 break;
1520 case Armenian: 1462 case Armenian:
1521 m_value.valueID = CSSValueArmenian; 1463 m_valueID = CSSValueArmenian;
1522 break; 1464 break;
1523 case Bengali: 1465 case Bengali:
1524 m_value.valueID = CSSValueBengali; 1466 m_valueID = CSSValueBengali;
1525 break; 1467 break;
1526 case Cambodian: 1468 case Cambodian:
1527 m_value.valueID = CSSValueCambodian; 1469 m_valueID = CSSValueCambodian;
1528 break; 1470 break;
1529 case Circle: 1471 case Circle:
1530 m_value.valueID = CSSValueCircle; 1472 m_valueID = CSSValueCircle;
1531 break; 1473 break;
1532 case CjkEarthlyBranch: 1474 case CjkEarthlyBranch:
1533 m_value.valueID = CSSValueCjkEarthlyBranch; 1475 m_valueID = CSSValueCjkEarthlyBranch;
1534 break; 1476 break;
1535 case CjkHeavenlyStem: 1477 case CjkHeavenlyStem:
1536 m_value.valueID = CSSValueCjkHeavenlyStem; 1478 m_valueID = CSSValueCjkHeavenlyStem;
1537 break; 1479 break;
1538 case CJKIdeographic: 1480 case CJKIdeographic:
1539 m_value.valueID = CSSValueCjkIdeographic; 1481 m_valueID = CSSValueCjkIdeographic;
1540 break; 1482 break;
1541 case DecimalLeadingZero: 1483 case DecimalLeadingZero:
1542 m_value.valueID = CSSValueDecimalLeadingZero; 1484 m_valueID = CSSValueDecimalLeadingZero;
1543 break; 1485 break;
1544 case DecimalListStyle: 1486 case DecimalListStyle:
1545 m_value.valueID = CSSValueDecimal; 1487 m_valueID = CSSValueDecimal;
1546 break; 1488 break;
1547 case Devanagari: 1489 case Devanagari:
1548 m_value.valueID = CSSValueDevanagari; 1490 m_valueID = CSSValueDevanagari;
1549 break; 1491 break;
1550 case Disc: 1492 case Disc:
1551 m_value.valueID = CSSValueDisc; 1493 m_valueID = CSSValueDisc;
1552 break; 1494 break;
1553 case EthiopicHalehame: 1495 case EthiopicHalehame:
1554 m_value.valueID = CSSValueEthiopicHalehame; 1496 m_valueID = CSSValueEthiopicHalehame;
1555 break; 1497 break;
1556 case EthiopicHalehameAm: 1498 case EthiopicHalehameAm:
1557 m_value.valueID = CSSValueEthiopicHalehameAm; 1499 m_valueID = CSSValueEthiopicHalehameAm;
1558 break; 1500 break;
1559 case EthiopicHalehameTiEt: 1501 case EthiopicHalehameTiEt:
1560 m_value.valueID = CSSValueEthiopicHalehameTiEt; 1502 m_valueID = CSSValueEthiopicHalehameTiEt;
1561 break; 1503 break;
1562 case EthiopicHalehameTiEr: 1504 case EthiopicHalehameTiEr:
1563 m_value.valueID = CSSValueEthiopicHalehameTiEr; 1505 m_valueID = CSSValueEthiopicHalehameTiEr;
1564 break; 1506 break;
1565 case Georgian: 1507 case Georgian:
1566 m_value.valueID = CSSValueGeorgian; 1508 m_valueID = CSSValueGeorgian;
1567 break; 1509 break;
1568 case Gujarati: 1510 case Gujarati:
1569 m_value.valueID = CSSValueGujarati; 1511 m_valueID = CSSValueGujarati;
1570 break; 1512 break;
1571 case Gurmukhi: 1513 case Gurmukhi:
1572 m_value.valueID = CSSValueGurmukhi; 1514 m_valueID = CSSValueGurmukhi;
1573 break; 1515 break;
1574 case Hangul: 1516 case Hangul:
1575 m_value.valueID = CSSValueHangul; 1517 m_valueID = CSSValueHangul;
1576 break; 1518 break;
1577 case HangulConsonant: 1519 case HangulConsonant:
1578 m_value.valueID = CSSValueHangulConsonant; 1520 m_valueID = CSSValueHangulConsonant;
1579 break; 1521 break;
1580 case KoreanHangulFormal: 1522 case KoreanHangulFormal:
1581 m_value.valueID = CSSValueKoreanHangulFormal; 1523 m_valueID = CSSValueKoreanHangulFormal;
1582 break; 1524 break;
1583 case KoreanHanjaFormal: 1525 case KoreanHanjaFormal:
1584 m_value.valueID = CSSValueKoreanHanjaFormal; 1526 m_valueID = CSSValueKoreanHanjaFormal;
1585 break; 1527 break;
1586 case KoreanHanjaInformal: 1528 case KoreanHanjaInformal:
1587 m_value.valueID = CSSValueKoreanHanjaInformal; 1529 m_valueID = CSSValueKoreanHanjaInformal;
1588 break; 1530 break;
1589 case Hebrew: 1531 case Hebrew:
1590 m_value.valueID = CSSValueHebrew; 1532 m_valueID = CSSValueHebrew;
1591 break; 1533 break;
1592 case Hiragana: 1534 case Hiragana:
1593 m_value.valueID = CSSValueHiragana; 1535 m_valueID = CSSValueHiragana;
1594 break; 1536 break;
1595 case HiraganaIroha: 1537 case HiraganaIroha:
1596 m_value.valueID = CSSValueHiraganaIroha; 1538 m_valueID = CSSValueHiraganaIroha;
1597 break; 1539 break;
1598 case Kannada: 1540 case Kannada:
1599 m_value.valueID = CSSValueKannada; 1541 m_valueID = CSSValueKannada;
1600 break; 1542 break;
1601 case Katakana: 1543 case Katakana:
1602 m_value.valueID = CSSValueKatakana; 1544 m_valueID = CSSValueKatakana;
1603 break; 1545 break;
1604 case KatakanaIroha: 1546 case KatakanaIroha:
1605 m_value.valueID = CSSValueKatakanaIroha; 1547 m_valueID = CSSValueKatakanaIroha;
1606 break; 1548 break;
1607 case Khmer: 1549 case Khmer:
1608 m_value.valueID = CSSValueKhmer; 1550 m_valueID = CSSValueKhmer;
1609 break; 1551 break;
1610 case Lao: 1552 case Lao:
1611 m_value.valueID = CSSValueLao; 1553 m_valueID = CSSValueLao;
1612 break; 1554 break;
1613 case LowerAlpha: 1555 case LowerAlpha:
1614 m_value.valueID = CSSValueLowerAlpha; 1556 m_valueID = CSSValueLowerAlpha;
1615 break; 1557 break;
1616 case LowerArmenian: 1558 case LowerArmenian:
1617 m_value.valueID = CSSValueLowerArmenian; 1559 m_valueID = CSSValueLowerArmenian;
1618 break; 1560 break;
1619 case LowerGreek: 1561 case LowerGreek:
1620 m_value.valueID = CSSValueLowerGreek; 1562 m_valueID = CSSValueLowerGreek;
1621 break; 1563 break;
1622 case LowerLatin: 1564 case LowerLatin:
1623 m_value.valueID = CSSValueLowerLatin; 1565 m_valueID = CSSValueLowerLatin;
1624 break; 1566 break;
1625 case LowerRoman: 1567 case LowerRoman:
1626 m_value.valueID = CSSValueLowerRoman; 1568 m_valueID = CSSValueLowerRoman;
1627 break; 1569 break;
1628 case Malayalam: 1570 case Malayalam:
1629 m_value.valueID = CSSValueMalayalam; 1571 m_valueID = CSSValueMalayalam;
1630 break; 1572 break;
1631 case Mongolian: 1573 case Mongolian:
1632 m_value.valueID = CSSValueMongolian; 1574 m_valueID = CSSValueMongolian;
1633 break; 1575 break;
1634 case Myanmar: 1576 case Myanmar:
1635 m_value.valueID = CSSValueMyanmar; 1577 m_valueID = CSSValueMyanmar;
1636 break; 1578 break;
1637 case NoneListStyle: 1579 case NoneListStyle:
1638 m_value.valueID = CSSValueNone; 1580 m_valueID = CSSValueNone;
1639 break; 1581 break;
1640 case Oriya: 1582 case Oriya:
1641 m_value.valueID = CSSValueOriya; 1583 m_valueID = CSSValueOriya;
1642 break; 1584 break;
1643 case Persian: 1585 case Persian:
1644 m_value.valueID = CSSValuePersian; 1586 m_valueID = CSSValuePersian;
1645 break; 1587 break;
1646 case SimpChineseFormal: 1588 case SimpChineseFormal:
1647 m_value.valueID = CSSValueSimpChineseFormal; 1589 m_valueID = CSSValueSimpChineseFormal;
1648 break; 1590 break;
1649 case SimpChineseInformal: 1591 case SimpChineseInformal:
1650 m_value.valueID = CSSValueSimpChineseInformal; 1592 m_valueID = CSSValueSimpChineseInformal;
1651 break; 1593 break;
1652 case Square: 1594 case Square:
1653 m_value.valueID = CSSValueSquare; 1595 m_valueID = CSSValueSquare;
1654 break; 1596 break;
1655 case Telugu: 1597 case Telugu:
1656 m_value.valueID = CSSValueTelugu; 1598 m_valueID = CSSValueTelugu;
1657 break; 1599 break;
1658 case Thai: 1600 case Thai:
1659 m_value.valueID = CSSValueThai; 1601 m_valueID = CSSValueThai;
1660 break; 1602 break;
1661 case Tibetan: 1603 case Tibetan:
1662 m_value.valueID = CSSValueTibetan; 1604 m_valueID = CSSValueTibetan;
1663 break; 1605 break;
1664 case TradChineseFormal: 1606 case TradChineseFormal:
1665 m_value.valueID = CSSValueTradChineseFormal; 1607 m_valueID = CSSValueTradChineseFormal;
1666 break; 1608 break;
1667 case TradChineseInformal: 1609 case TradChineseInformal:
1668 m_value.valueID = CSSValueTradChineseInformal; 1610 m_valueID = CSSValueTradChineseInformal;
1669 break; 1611 break;
1670 case UpperAlpha: 1612 case UpperAlpha:
1671 m_value.valueID = CSSValueUpperAlpha; 1613 m_valueID = CSSValueUpperAlpha;
1672 break; 1614 break;
1673 case UpperArmenian: 1615 case UpperArmenian:
1674 m_value.valueID = CSSValueUpperArmenian; 1616 m_valueID = CSSValueUpperArmenian;
1675 break; 1617 break;
1676 case UpperLatin: 1618 case UpperLatin:
1677 m_value.valueID = CSSValueUpperLatin; 1619 m_valueID = CSSValueUpperLatin;
1678 break; 1620 break;
1679 case UpperRoman: 1621 case UpperRoman:
1680 m_value.valueID = CSSValueUpperRoman; 1622 m_valueID = CSSValueUpperRoman;
1681 break; 1623 break;
1682 case Urdu: 1624 case Urdu:
1683 m_value.valueID = CSSValueUrdu; 1625 m_valueID = CSSValueUrdu;
1684 break; 1626 break;
1685 } 1627 }
1686 } 1628 }
1687 1629
1688 template<> inline EListStyleType CSSPrimitiveValue::convertTo() const 1630 template<> inline EListStyleType CSSIdentifierValue::convertTo() const
1689 { 1631 {
1690 ASSERT(isValueID()); 1632 switch (m_valueID) {
1691 switch (m_value.valueID) {
1692 case CSSValueNone: 1633 case CSSValueNone:
1693 return NoneListStyle; 1634 return NoneListStyle;
1694 default: 1635 default:
1695 return static_cast<EListStyleType>(m_value.valueID - CSSValueDisc); 1636 return static_cast<EListStyleType>(m_valueID - CSSValueDisc);
1696 } 1637 }
1697 } 1638 }
1698 1639
1699 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMarginCollapse e) 1640 template<> inline CSSIdentifierValue::CSSIdentifierValue(EMarginCollapse e)
1700 : CSSValue(PrimitiveClass) 1641 : CSSValue(IdentifierClass)
1701 { 1642 {
1702 init(UnitType::ValueID);
1703 switch (e) { 1643 switch (e) {
1704 case MarginCollapseCollapse: 1644 case MarginCollapseCollapse:
1705 m_value.valueID = CSSValueCollapse; 1645 m_valueID = CSSValueCollapse;
1706 break; 1646 break;
1707 case MarginCollapseSeparate: 1647 case MarginCollapseSeparate:
1708 m_value.valueID = CSSValueSeparate; 1648 m_valueID = CSSValueSeparate;
1709 break; 1649 break;
1710 case MarginCollapseDiscard: 1650 case MarginCollapseDiscard:
1711 m_value.valueID = CSSValueDiscard; 1651 m_valueID = CSSValueDiscard;
1712 break; 1652 break;
1713 } 1653 }
1714 } 1654 }
1715 1655
1716 template<> inline EMarginCollapse CSSPrimitiveValue::convertTo() const 1656 template<> inline EMarginCollapse CSSIdentifierValue::convertTo() const
1717 { 1657 {
1718 ASSERT(isValueID()); 1658 switch (m_valueID) {
1719 switch (m_value.valueID) {
1720 case CSSValueCollapse: 1659 case CSSValueCollapse:
1721 return MarginCollapseCollapse; 1660 return MarginCollapseCollapse;
1722 case CSSValueSeparate: 1661 case CSSValueSeparate:
1723 return MarginCollapseSeparate; 1662 return MarginCollapseSeparate;
1724 case CSSValueDiscard: 1663 case CSSValueDiscard:
1725 return MarginCollapseDiscard; 1664 return MarginCollapseDiscard;
1726 default: 1665 default:
1727 break; 1666 break;
1728 } 1667 }
1729 1668
1730 ASSERT_NOT_REACHED(); 1669 ASSERT_NOT_REACHED();
1731 return MarginCollapseCollapse; 1670 return MarginCollapseCollapse;
1732 } 1671 }
1733 1672
1734 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EOverflow e) 1673 template<> inline CSSIdentifierValue::CSSIdentifierValue(EOverflow e)
1735 : CSSValue(PrimitiveClass) 1674 : CSSValue(IdentifierClass)
1736 { 1675 {
1737 init(UnitType::ValueID);
1738 switch (e) { 1676 switch (e) {
1739 case OverflowVisible: 1677 case OverflowVisible:
1740 m_value.valueID = CSSValueVisible; 1678 m_valueID = CSSValueVisible;
1741 break; 1679 break;
1742 case OverflowHidden: 1680 case OverflowHidden:
1743 m_value.valueID = CSSValueHidden; 1681 m_valueID = CSSValueHidden;
1744 break; 1682 break;
1745 case OverflowScroll: 1683 case OverflowScroll:
1746 m_value.valueID = CSSValueScroll; 1684 m_valueID = CSSValueScroll;
1747 break; 1685 break;
1748 case OverflowAuto: 1686 case OverflowAuto:
1749 m_value.valueID = CSSValueAuto; 1687 m_valueID = CSSValueAuto;
1750 break; 1688 break;
1751 case OverflowOverlay: 1689 case OverflowOverlay:
1752 m_value.valueID = CSSValueOverlay; 1690 m_valueID = CSSValueOverlay;
1753 break; 1691 break;
1754 case OverflowPagedX: 1692 case OverflowPagedX:
1755 m_value.valueID = CSSValueWebkitPagedX; 1693 m_valueID = CSSValueWebkitPagedX;
1756 break; 1694 break;
1757 case OverflowPagedY: 1695 case OverflowPagedY:
1758 m_value.valueID = CSSValueWebkitPagedY; 1696 m_valueID = CSSValueWebkitPagedY;
1759 break; 1697 break;
1760 } 1698 }
1761 } 1699 }
1762 1700
1763 template<> inline EOverflow CSSPrimitiveValue::convertTo() const 1701 template<> inline EOverflow CSSIdentifierValue::convertTo() const
1764 { 1702 {
1765 ASSERT(isValueID()); 1703 switch (m_valueID) {
1766 switch (m_value.valueID) {
1767 case CSSValueVisible: 1704 case CSSValueVisible:
1768 return OverflowVisible; 1705 return OverflowVisible;
1769 case CSSValueHidden: 1706 case CSSValueHidden:
1770 return OverflowHidden; 1707 return OverflowHidden;
1771 case CSSValueScroll: 1708 case CSSValueScroll:
1772 return OverflowScroll; 1709 return OverflowScroll;
1773 case CSSValueAuto: 1710 case CSSValueAuto:
1774 return OverflowAuto; 1711 return OverflowAuto;
1775 case CSSValueOverlay: 1712 case CSSValueOverlay:
1776 return OverflowOverlay; 1713 return OverflowOverlay;
1777 case CSSValueWebkitPagedX: 1714 case CSSValueWebkitPagedX:
1778 return OverflowPagedX; 1715 return OverflowPagedX;
1779 case CSSValueWebkitPagedY: 1716 case CSSValueWebkitPagedY:
1780 return OverflowPagedY; 1717 return OverflowPagedY;
1781 default: 1718 default:
1782 break; 1719 break;
1783 } 1720 }
1784 1721
1785 ASSERT_NOT_REACHED(); 1722 ASSERT_NOT_REACHED();
1786 return OverflowVisible; 1723 return OverflowVisible;
1787 } 1724 }
1788 1725
1789 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBreak e) 1726 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBreak e)
1790 : CSSValue(PrimitiveClass) 1727 : CSSValue(IdentifierClass)
1791 { 1728 {
1792 init(UnitType::ValueID);
1793 switch (e) { 1729 switch (e) {
1794 default: 1730 default:
1795 ASSERT_NOT_REACHED(); 1731 ASSERT_NOT_REACHED();
1796 case BreakAuto: 1732 case BreakAuto:
1797 m_value.valueID = CSSValueAuto; 1733 m_valueID = CSSValueAuto;
1798 break; 1734 break;
1799 case BreakAlways: 1735 case BreakAlways:
1800 m_value.valueID = CSSValueAlways; 1736 m_valueID = CSSValueAlways;
1801 break; 1737 break;
1802 case BreakAvoid: 1738 case BreakAvoid:
1803 m_value.valueID = CSSValueAvoid; 1739 m_valueID = CSSValueAvoid;
1804 break; 1740 break;
1805 case BreakAvoidPage: 1741 case BreakAvoidPage:
1806 m_value.valueID = CSSValueAvoidPage; 1742 m_valueID = CSSValueAvoidPage;
1807 break; 1743 break;
1808 case BreakPage: 1744 case BreakPage:
1809 m_value.valueID = CSSValuePage; 1745 m_valueID = CSSValuePage;
1810 break; 1746 break;
1811 case BreakLeft: 1747 case BreakLeft:
1812 m_value.valueID = CSSValueLeft; 1748 m_valueID = CSSValueLeft;
1813 break; 1749 break;
1814 case BreakRight: 1750 case BreakRight:
1815 m_value.valueID = CSSValueRight; 1751 m_valueID = CSSValueRight;
1816 break; 1752 break;
1817 case BreakRecto: 1753 case BreakRecto:
1818 m_value.valueID = CSSValueRecto; 1754 m_valueID = CSSValueRecto;
1819 break; 1755 break;
1820 case BreakVerso: 1756 case BreakVerso:
1821 m_value.valueID = CSSValueVerso; 1757 m_valueID = CSSValueVerso;
1822 break; 1758 break;
1823 case BreakAvoidColumn: 1759 case BreakAvoidColumn:
1824 m_value.valueID = CSSValueAvoidColumn; 1760 m_valueID = CSSValueAvoidColumn;
1825 break; 1761 break;
1826 case BreakColumn: 1762 case BreakColumn:
1827 m_value.valueID = CSSValueColumn; 1763 m_valueID = CSSValueColumn;
1828 break; 1764 break;
1829 } 1765 }
1830 } 1766 }
1831 1767
1832 template<> inline EBreak CSSPrimitiveValue::convertTo() const 1768 template<> inline EBreak CSSIdentifierValue::convertTo() const
1833 { 1769 {
1834 ASSERT(isValueID()); 1770 switch (m_valueID) {
1835 switch (m_value.valueID) {
1836 default: 1771 default:
1837 ASSERT_NOT_REACHED(); 1772 ASSERT_NOT_REACHED();
1838 case CSSValueAuto: 1773 case CSSValueAuto:
1839 return BreakAuto; 1774 return BreakAuto;
1840 case CSSValueAvoid: 1775 case CSSValueAvoid:
1841 return BreakAvoid; 1776 return BreakAvoid;
1842 case CSSValueAlways: 1777 case CSSValueAlways:
1843 return BreakAlways; 1778 return BreakAlways;
1844 case CSSValueAvoidPage: 1779 case CSSValueAvoidPage:
1845 return BreakAvoidPage; 1780 return BreakAvoidPage;
1846 case CSSValuePage: 1781 case CSSValuePage:
1847 return BreakPage; 1782 return BreakPage;
1848 case CSSValueLeft: 1783 case CSSValueLeft:
1849 return BreakLeft; 1784 return BreakLeft;
1850 case CSSValueRight: 1785 case CSSValueRight:
1851 return BreakRight; 1786 return BreakRight;
1852 case CSSValueRecto: 1787 case CSSValueRecto:
1853 return BreakRecto; 1788 return BreakRecto;
1854 case CSSValueVerso: 1789 case CSSValueVerso:
1855 return BreakVerso; 1790 return BreakVerso;
1856 case CSSValueAvoidColumn: 1791 case CSSValueAvoidColumn:
1857 return BreakAvoidColumn; 1792 return BreakAvoidColumn;
1858 case CSSValueColumn: 1793 case CSSValueColumn:
1859 return BreakColumn; 1794 return BreakColumn;
1860 } 1795 }
1861 } 1796 }
1862 1797
1863 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPosition e) 1798 template<> inline CSSIdentifierValue::CSSIdentifierValue(EPosition e)
1864 : CSSValue(PrimitiveClass) 1799 : CSSValue(IdentifierClass)
1865 { 1800 {
1866 init(UnitType::ValueID);
1867 switch (e) { 1801 switch (e) {
1868 case StaticPosition: 1802 case StaticPosition:
1869 m_value.valueID = CSSValueStatic; 1803 m_valueID = CSSValueStatic;
1870 break; 1804 break;
1871 case RelativePosition: 1805 case RelativePosition:
1872 m_value.valueID = CSSValueRelative; 1806 m_valueID = CSSValueRelative;
1873 break; 1807 break;
1874 case AbsolutePosition: 1808 case AbsolutePosition:
1875 m_value.valueID = CSSValueAbsolute; 1809 m_valueID = CSSValueAbsolute;
1876 break; 1810 break;
1877 case FixedPosition: 1811 case FixedPosition:
1878 m_value.valueID = CSSValueFixed; 1812 m_valueID = CSSValueFixed;
1879 break; 1813 break;
1880 case StickyPosition: 1814 case StickyPosition:
1881 m_value.valueID = CSSValueSticky; 1815 m_valueID = CSSValueSticky;
1882 break; 1816 break;
1883 } 1817 }
1884 } 1818 }
1885 1819
1886 template<> inline EPosition CSSPrimitiveValue::convertTo() const 1820 template<> inline EPosition CSSIdentifierValue::convertTo() const
1887 { 1821 {
1888 ASSERT(isValueID()); 1822 switch (m_valueID) {
1889 switch (m_value.valueID) {
1890 case CSSValueStatic: 1823 case CSSValueStatic:
1891 return StaticPosition; 1824 return StaticPosition;
1892 case CSSValueRelative: 1825 case CSSValueRelative:
1893 return RelativePosition; 1826 return RelativePosition;
1894 case CSSValueAbsolute: 1827 case CSSValueAbsolute:
1895 return AbsolutePosition; 1828 return AbsolutePosition;
1896 case CSSValueFixed: 1829 case CSSValueFixed:
1897 return FixedPosition; 1830 return FixedPosition;
1898 case CSSValueSticky: 1831 case CSSValueSticky:
1899 return StickyPosition; 1832 return StickyPosition;
1900 default: 1833 default:
1901 break; 1834 break;
1902 } 1835 }
1903 1836
1904 ASSERT_NOT_REACHED(); 1837 ASSERT_NOT_REACHED();
1905 return StaticPosition; 1838 return StaticPosition;
1906 } 1839 }
1907 1840
1908 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EResize e) 1841 template<> inline CSSIdentifierValue::CSSIdentifierValue(EResize e)
1909 : CSSValue(PrimitiveClass) 1842 : CSSValue(IdentifierClass)
1910 { 1843 {
1911 init(UnitType::ValueID);
1912 switch (e) { 1844 switch (e) {
1913 case RESIZE_BOTH: 1845 case RESIZE_BOTH:
1914 m_value.valueID = CSSValueBoth; 1846 m_valueID = CSSValueBoth;
1915 break; 1847 break;
1916 case RESIZE_HORIZONTAL: 1848 case RESIZE_HORIZONTAL:
1917 m_value.valueID = CSSValueHorizontal; 1849 m_valueID = CSSValueHorizontal;
1918 break; 1850 break;
1919 case RESIZE_VERTICAL: 1851 case RESIZE_VERTICAL:
1920 m_value.valueID = CSSValueVertical; 1852 m_valueID = CSSValueVertical;
1921 break; 1853 break;
1922 case RESIZE_NONE: 1854 case RESIZE_NONE:
1923 m_value.valueID = CSSValueNone; 1855 m_valueID = CSSValueNone;
1924 break; 1856 break;
1925 } 1857 }
1926 } 1858 }
1927 1859
1928 template<> inline EResize CSSPrimitiveValue::convertTo() const 1860 template<> inline EResize CSSIdentifierValue::convertTo() const
1929 { 1861 {
1930 ASSERT(isValueID()); 1862 switch (m_valueID) {
1931 switch (m_value.valueID) {
1932 case CSSValueBoth: 1863 case CSSValueBoth:
1933 return RESIZE_BOTH; 1864 return RESIZE_BOTH;
1934 case CSSValueHorizontal: 1865 case CSSValueHorizontal:
1935 return RESIZE_HORIZONTAL; 1866 return RESIZE_HORIZONTAL;
1936 case CSSValueVertical: 1867 case CSSValueVertical:
1937 return RESIZE_VERTICAL; 1868 return RESIZE_VERTICAL;
1938 case CSSValueAuto: 1869 case CSSValueAuto:
1939 ASSERT_NOT_REACHED(); // Depends on settings, thus should be handled by the caller. 1870 ASSERT_NOT_REACHED(); // Depends on settings, thus should be handled by the caller.
1940 return RESIZE_NONE; 1871 return RESIZE_NONE;
1941 case CSSValueNone: 1872 case CSSValueNone:
1942 return RESIZE_NONE; 1873 return RESIZE_NONE;
1943 default: 1874 default:
1944 break; 1875 break;
1945 } 1876 }
1946 1877
1947 ASSERT_NOT_REACHED(); 1878 ASSERT_NOT_REACHED();
1948 return RESIZE_NONE; 1879 return RESIZE_NONE;
1949 } 1880 }
1950 1881
1951 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETableLayout e) 1882 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETableLayout e)
1952 : CSSValue(PrimitiveClass) 1883 : CSSValue(IdentifierClass)
1953 { 1884 {
1954 init(UnitType::ValueID);
1955 switch (e) { 1885 switch (e) {
1956 case TableLayoutAuto: 1886 case TableLayoutAuto:
1957 m_value.valueID = CSSValueAuto; 1887 m_valueID = CSSValueAuto;
1958 break; 1888 break;
1959 case TableLayoutFixed: 1889 case TableLayoutFixed:
1960 m_value.valueID = CSSValueFixed; 1890 m_valueID = CSSValueFixed;
1961 break; 1891 break;
1962 } 1892 }
1963 } 1893 }
1964 1894
1965 template<> inline ETableLayout CSSPrimitiveValue::convertTo() const 1895 template<> inline ETableLayout CSSIdentifierValue::convertTo() const
1966 { 1896 {
1967 ASSERT(isValueID()); 1897 switch (m_valueID) {
1968 switch (m_value.valueID) {
1969 case CSSValueFixed: 1898 case CSSValueFixed:
1970 return TableLayoutFixed; 1899 return TableLayoutFixed;
1971 case CSSValueAuto: 1900 case CSSValueAuto:
1972 return TableLayoutAuto; 1901 return TableLayoutAuto;
1973 default: 1902 default:
1974 break; 1903 break;
1975 } 1904 }
1976 1905
1977 ASSERT_NOT_REACHED(); 1906 ASSERT_NOT_REACHED();
1978 return TableLayoutAuto; 1907 return TableLayoutAuto;
1979 } 1908 }
1980 1909
1981 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextAlign e) 1910 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETextAlign e)
1982 : CSSValue(PrimitiveClass) 1911 : CSSValue(IdentifierClass)
1983 { 1912 {
1984 init(UnitType::ValueID);
1985 switch (e) { 1913 switch (e) {
1986 case TASTART: 1914 case TASTART:
1987 m_value.valueID = CSSValueStart; 1915 m_valueID = CSSValueStart;
1988 break; 1916 break;
1989 case TAEND: 1917 case TAEND:
1990 m_value.valueID = CSSValueEnd; 1918 m_valueID = CSSValueEnd;
1991 break; 1919 break;
1992 case LEFT: 1920 case LEFT:
1993 m_value.valueID = CSSValueLeft; 1921 m_valueID = CSSValueLeft;
1994 break; 1922 break;
1995 case RIGHT: 1923 case RIGHT:
1996 m_value.valueID = CSSValueRight; 1924 m_valueID = CSSValueRight;
1997 break; 1925 break;
1998 case CENTER: 1926 case CENTER:
1999 m_value.valueID = CSSValueCenter; 1927 m_valueID = CSSValueCenter;
2000 break; 1928 break;
2001 case JUSTIFY: 1929 case JUSTIFY:
2002 m_value.valueID = CSSValueJustify; 1930 m_valueID = CSSValueJustify;
2003 break; 1931 break;
2004 case WEBKIT_LEFT: 1932 case WEBKIT_LEFT:
2005 m_value.valueID = CSSValueWebkitLeft; 1933 m_valueID = CSSValueWebkitLeft;
2006 break; 1934 break;
2007 case WEBKIT_RIGHT: 1935 case WEBKIT_RIGHT:
2008 m_value.valueID = CSSValueWebkitRight; 1936 m_valueID = CSSValueWebkitRight;
2009 break; 1937 break;
2010 case WEBKIT_CENTER: 1938 case WEBKIT_CENTER:
2011 m_value.valueID = CSSValueWebkitCenter; 1939 m_valueID = CSSValueWebkitCenter;
2012 break; 1940 break;
2013 } 1941 }
2014 } 1942 }
2015 1943
2016 template<> inline ETextAlign CSSPrimitiveValue::convertTo() const 1944 template<> inline ETextAlign CSSIdentifierValue::convertTo() const
2017 { 1945 {
2018 ASSERT(isValueID()); 1946 switch (m_valueID) {
2019 switch (m_value.valueID) {
2020 case CSSValueWebkitAuto: // Legacy -webkit-auto. Eqiuvalent to start. 1947 case CSSValueWebkitAuto: // Legacy -webkit-auto. Eqiuvalent to start.
2021 case CSSValueStart: 1948 case CSSValueStart:
2022 return TASTART; 1949 return TASTART;
2023 case CSSValueEnd: 1950 case CSSValueEnd:
2024 return TAEND; 1951 return TAEND;
2025 case CSSValueInternalCenter: 1952 case CSSValueInternalCenter:
2026 return CENTER; 1953 return CENTER;
2027 default: 1954 default:
2028 return static_cast<ETextAlign>(m_value.valueID - CSSValueLeft); 1955 return static_cast<ETextAlign>(m_valueID - CSSValueLeft);
2029 } 1956 }
2030 } 1957 }
2031 1958
2032 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextAlignLast e) 1959 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextAlignLast e)
2033 : CSSValue(PrimitiveClass) 1960 : CSSValue(IdentifierClass)
2034 { 1961 {
2035 init(UnitType::ValueID);
2036 switch (e) { 1962 switch (e) {
2037 case TextAlignLastStart: 1963 case TextAlignLastStart:
2038 m_value.valueID = CSSValueStart; 1964 m_valueID = CSSValueStart;
2039 break; 1965 break;
2040 case TextAlignLastEnd: 1966 case TextAlignLastEnd:
2041 m_value.valueID = CSSValueEnd; 1967 m_valueID = CSSValueEnd;
2042 break; 1968 break;
2043 case TextAlignLastLeft: 1969 case TextAlignLastLeft:
2044 m_value.valueID = CSSValueLeft; 1970 m_valueID = CSSValueLeft;
2045 break; 1971 break;
2046 case TextAlignLastRight: 1972 case TextAlignLastRight:
2047 m_value.valueID = CSSValueRight; 1973 m_valueID = CSSValueRight;
2048 break; 1974 break;
2049 case TextAlignLastCenter: 1975 case TextAlignLastCenter:
2050 m_value.valueID = CSSValueCenter; 1976 m_valueID = CSSValueCenter;
2051 break; 1977 break;
2052 case TextAlignLastJustify: 1978 case TextAlignLastJustify:
2053 m_value.valueID = CSSValueJustify; 1979 m_valueID = CSSValueJustify;
2054 break; 1980 break;
2055 case TextAlignLastAuto: 1981 case TextAlignLastAuto:
2056 m_value.valueID = CSSValueAuto; 1982 m_valueID = CSSValueAuto;
2057 break; 1983 break;
2058 } 1984 }
2059 } 1985 }
2060 1986
2061 template<> inline TextAlignLast CSSPrimitiveValue::convertTo() const 1987 template<> inline TextAlignLast CSSIdentifierValue::convertTo() const
2062 { 1988 {
2063 ASSERT(isValueID()); 1989 switch (m_valueID) {
2064 switch (m_value.valueID) {
2065 case CSSValueAuto: 1990 case CSSValueAuto:
2066 return TextAlignLastAuto; 1991 return TextAlignLastAuto;
2067 case CSSValueStart: 1992 case CSSValueStart:
2068 return TextAlignLastStart; 1993 return TextAlignLastStart;
2069 case CSSValueEnd: 1994 case CSSValueEnd:
2070 return TextAlignLastEnd; 1995 return TextAlignLastEnd;
2071 case CSSValueLeft: 1996 case CSSValueLeft:
2072 return TextAlignLastLeft; 1997 return TextAlignLastLeft;
2073 case CSSValueRight: 1998 case CSSValueRight:
2074 return TextAlignLastRight; 1999 return TextAlignLastRight;
2075 case CSSValueCenter: 2000 case CSSValueCenter:
2076 return TextAlignLastCenter; 2001 return TextAlignLastCenter;
2077 case CSSValueJustify: 2002 case CSSValueJustify:
2078 return TextAlignLastJustify; 2003 return TextAlignLastJustify;
2079 default: 2004 default:
2080 break; 2005 break;
2081 } 2006 }
2082 2007
2083 ASSERT_NOT_REACHED(); 2008 ASSERT_NOT_REACHED();
2084 return TextAlignLastAuto; 2009 return TextAlignLastAuto;
2085 } 2010 }
2086 2011
2087 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextJustify e) 2012 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextJustify e)
2088 : CSSValue(PrimitiveClass) 2013 : CSSValue(IdentifierClass)
2089 { 2014 {
2090 init(UnitType::ValueID);
2091 switch (e) { 2015 switch (e) {
2092 case TextJustifyAuto: 2016 case TextJustifyAuto:
2093 m_value.valueID = CSSValueAuto; 2017 m_valueID = CSSValueAuto;
2094 break; 2018 break;
2095 case TextJustifyNone: 2019 case TextJustifyNone:
2096 m_value.valueID = CSSValueNone; 2020 m_valueID = CSSValueNone;
2097 break; 2021 break;
2098 case TextJustifyInterWord: 2022 case TextJustifyInterWord:
2099 m_value.valueID = CSSValueInterWord; 2023 m_valueID = CSSValueInterWord;
2100 break; 2024 break;
2101 case TextJustifyDistribute: 2025 case TextJustifyDistribute:
2102 m_value.valueID = CSSValueDistribute; 2026 m_valueID = CSSValueDistribute;
2103 break; 2027 break;
2104 } 2028 }
2105 } 2029 }
2106 2030
2107 template<> inline TextJustify CSSPrimitiveValue::convertTo() const 2031 template<> inline TextJustify CSSIdentifierValue::convertTo() const
2108 { 2032 {
2109 switch (m_value.valueID) { 2033 switch (m_valueID) {
2110 case CSSValueAuto: 2034 case CSSValueAuto:
2111 return TextJustifyAuto; 2035 return TextJustifyAuto;
2112 case CSSValueNone: 2036 case CSSValueNone:
2113 return TextJustifyNone; 2037 return TextJustifyNone;
2114 case CSSValueInterWord: 2038 case CSSValueInterWord:
2115 return TextJustifyInterWord; 2039 return TextJustifyInterWord;
2116 case CSSValueDistribute: 2040 case CSSValueDistribute:
2117 return TextJustifyDistribute; 2041 return TextJustifyDistribute;
2118 default: 2042 default:
2119 break; 2043 break;
2120 } 2044 }
2121 2045
2122 ASSERT_NOT_REACHED(); 2046 ASSERT_NOT_REACHED();
2123 return TextJustifyAuto; 2047 return TextJustifyAuto;
2124 } 2048 }
2125 2049
2126 template<> inline TextDecoration CSSPrimitiveValue::convertTo() const 2050 template<> inline TextDecoration CSSIdentifierValue::convertTo() const
2127 { 2051 {
2128 ASSERT(isValueID()); 2052 switch (m_valueID) {
2129 switch (m_value.valueID) {
2130 case CSSValueNone: 2053 case CSSValueNone:
2131 return TextDecorationNone; 2054 return TextDecorationNone;
2132 case CSSValueUnderline: 2055 case CSSValueUnderline:
2133 return TextDecorationUnderline; 2056 return TextDecorationUnderline;
2134 case CSSValueOverline: 2057 case CSSValueOverline:
2135 return TextDecorationOverline; 2058 return TextDecorationOverline;
2136 case CSSValueLineThrough: 2059 case CSSValueLineThrough:
2137 return TextDecorationLineThrough; 2060 return TextDecorationLineThrough;
2138 case CSSValueBlink: 2061 case CSSValueBlink:
2139 return TextDecorationBlink; 2062 return TextDecorationBlink;
2140 default: 2063 default:
2141 break; 2064 break;
2142 } 2065 }
2143 2066
2144 ASSERT_NOT_REACHED(); 2067 ASSERT_NOT_REACHED();
2145 return TextDecorationNone; 2068 return TextDecorationNone;
2146 } 2069 }
2147 2070
2148 template<> inline TextDecorationStyle CSSPrimitiveValue::convertTo() const 2071 template<> inline TextDecorationStyle CSSIdentifierValue::convertTo() const
2149 { 2072 {
2150 ASSERT(isValueID()); 2073 switch (m_valueID) {
2151 switch (m_value.valueID) {
2152 case CSSValueSolid: 2074 case CSSValueSolid:
2153 return TextDecorationStyleSolid; 2075 return TextDecorationStyleSolid;
2154 case CSSValueDouble: 2076 case CSSValueDouble:
2155 return TextDecorationStyleDouble; 2077 return TextDecorationStyleDouble;
2156 case CSSValueDotted: 2078 case CSSValueDotted:
2157 return TextDecorationStyleDotted; 2079 return TextDecorationStyleDotted;
2158 case CSSValueDashed: 2080 case CSSValueDashed:
2159 return TextDecorationStyleDashed; 2081 return TextDecorationStyleDashed;
2160 case CSSValueWavy: 2082 case CSSValueWavy:
2161 return TextDecorationStyleWavy; 2083 return TextDecorationStyleWavy;
2162 default: 2084 default:
2163 break; 2085 break;
2164 } 2086 }
2165 2087
2166 ASSERT_NOT_REACHED(); 2088 ASSERT_NOT_REACHED();
2167 return TextDecorationStyleSolid; 2089 return TextDecorationStyleSolid;
2168 } 2090 }
2169 2091
2170 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextUnderlinePosition e) 2092 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextUnderlinePosition e )
2171 : CSSValue(PrimitiveClass) 2093 : CSSValue(IdentifierClass)
2172 { 2094 {
2173 init(UnitType::ValueID);
2174 switch (e) { 2095 switch (e) {
2175 case TextUnderlinePositionAuto: 2096 case TextUnderlinePositionAuto:
2176 m_value.valueID = CSSValueAuto; 2097 m_valueID = CSSValueAuto;
2177 break; 2098 break;
2178 case TextUnderlinePositionUnder: 2099 case TextUnderlinePositionUnder:
2179 m_value.valueID = CSSValueUnder; 2100 m_valueID = CSSValueUnder;
2180 break; 2101 break;
2181 } 2102 }
2182 2103
2183 // FIXME: Implement support for 'under left' and 'under right' values. 2104 // FIXME: Implement support for 'under left' and 'under right' values.
2184 } 2105 }
2185 2106
2186 template<> inline TextUnderlinePosition CSSPrimitiveValue::convertTo() const 2107 template<> inline TextUnderlinePosition CSSIdentifierValue::convertTo() const
2187 { 2108 {
2188 ASSERT(isValueID()); 2109 switch (m_valueID) {
2189 switch (m_value.valueID) {
2190 case CSSValueAuto: 2110 case CSSValueAuto:
2191 return TextUnderlinePositionAuto; 2111 return TextUnderlinePositionAuto;
2192 case CSSValueUnder: 2112 case CSSValueUnder:
2193 return TextUnderlinePositionUnder; 2113 return TextUnderlinePositionUnder;
2194 default: 2114 default:
2195 break; 2115 break;
2196 } 2116 }
2197 2117
2198 // FIXME: Implement support for 'under left' and 'under right' values. 2118 // FIXME: Implement support for 'under left' and 'under right' values.
2199 2119
2200 ASSERT_NOT_REACHED(); 2120 ASSERT_NOT_REACHED();
2201 return TextUnderlinePositionAuto; 2121 return TextUnderlinePositionAuto;
2202 } 2122 }
2203 2123
2204 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextSecurity e) 2124 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETextSecurity e)
2205 : CSSValue(PrimitiveClass) 2125 : CSSValue(IdentifierClass)
2206 { 2126 {
2207 init(UnitType::ValueID);
2208 switch (e) { 2127 switch (e) {
2209 case TSNONE: 2128 case TSNONE:
2210 m_value.valueID = CSSValueNone; 2129 m_valueID = CSSValueNone;
2211 break; 2130 break;
2212 case TSDISC: 2131 case TSDISC:
2213 m_value.valueID = CSSValueDisc; 2132 m_valueID = CSSValueDisc;
2214 break; 2133 break;
2215 case TSCIRCLE: 2134 case TSCIRCLE:
2216 m_value.valueID = CSSValueCircle; 2135 m_valueID = CSSValueCircle;
2217 break; 2136 break;
2218 case TSSQUARE: 2137 case TSSQUARE:
2219 m_value.valueID = CSSValueSquare; 2138 m_valueID = CSSValueSquare;
2220 break; 2139 break;
2221 } 2140 }
2222 } 2141 }
2223 2142
2224 template<> inline ETextSecurity CSSPrimitiveValue::convertTo() const 2143 template<> inline ETextSecurity CSSIdentifierValue::convertTo() const
2225 { 2144 {
2226 ASSERT(isValueID()); 2145 switch (m_valueID) {
2227 switch (m_value.valueID) {
2228 case CSSValueNone: 2146 case CSSValueNone:
2229 return TSNONE; 2147 return TSNONE;
2230 case CSSValueDisc: 2148 case CSSValueDisc:
2231 return TSDISC; 2149 return TSDISC;
2232 case CSSValueCircle: 2150 case CSSValueCircle:
2233 return TSCIRCLE; 2151 return TSCIRCLE;
2234 case CSSValueSquare: 2152 case CSSValueSquare:
2235 return TSSQUARE; 2153 return TSSQUARE;
2236 default: 2154 default:
2237 break; 2155 break;
2238 } 2156 }
2239 2157
2240 ASSERT_NOT_REACHED(); 2158 ASSERT_NOT_REACHED();
2241 return TSNONE; 2159 return TSNONE;
2242 } 2160 }
2243 2161
2244 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextTransform e) 2162 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETextTransform e)
2245 : CSSValue(PrimitiveClass) 2163 : CSSValue(IdentifierClass)
2246 { 2164 {
2247 init(UnitType::ValueID);
2248 switch (e) { 2165 switch (e) {
2249 case CAPITALIZE: 2166 case CAPITALIZE:
2250 m_value.valueID = CSSValueCapitalize; 2167 m_valueID = CSSValueCapitalize;
2251 break; 2168 break;
2252 case UPPERCASE: 2169 case UPPERCASE:
2253 m_value.valueID = CSSValueUppercase; 2170 m_valueID = CSSValueUppercase;
2254 break; 2171 break;
2255 case LOWERCASE: 2172 case LOWERCASE:
2256 m_value.valueID = CSSValueLowercase; 2173 m_valueID = CSSValueLowercase;
2257 break; 2174 break;
2258 case TTNONE: 2175 case TTNONE:
2259 m_value.valueID = CSSValueNone; 2176 m_valueID = CSSValueNone;
2260 break; 2177 break;
2261 } 2178 }
2262 } 2179 }
2263 2180
2264 template<> inline ETextTransform CSSPrimitiveValue::convertTo() const 2181 template<> inline ETextTransform CSSIdentifierValue::convertTo() const
2265 { 2182 {
2266 ASSERT(isValueID()); 2183 switch (m_valueID) {
2267 switch (m_value.valueID) {
2268 case CSSValueCapitalize: 2184 case CSSValueCapitalize:
2269 return CAPITALIZE; 2185 return CAPITALIZE;
2270 case CSSValueUppercase: 2186 case CSSValueUppercase:
2271 return UPPERCASE; 2187 return UPPERCASE;
2272 case CSSValueLowercase: 2188 case CSSValueLowercase:
2273 return LOWERCASE; 2189 return LOWERCASE;
2274 case CSSValueNone: 2190 case CSSValueNone:
2275 return TTNONE; 2191 return TTNONE;
2276 default: 2192 default:
2277 break; 2193 break;
2278 } 2194 }
2279 2195
2280 ASSERT_NOT_REACHED(); 2196 ASSERT_NOT_REACHED();
2281 return TTNONE; 2197 return TTNONE;
2282 } 2198 }
2283 2199
2284 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUnicodeBidi e) 2200 template<> inline CSSIdentifierValue::CSSIdentifierValue(EUnicodeBidi e)
2285 : CSSValue(PrimitiveClass) 2201 : CSSValue(IdentifierClass)
2286 { 2202 {
2287 init(UnitType::ValueID);
2288 switch (e) { 2203 switch (e) {
2289 case UBNormal: 2204 case UBNormal:
2290 m_value.valueID = CSSValueNormal; 2205 m_valueID = CSSValueNormal;
2291 break; 2206 break;
2292 case Embed: 2207 case Embed:
2293 m_value.valueID = CSSValueEmbed; 2208 m_valueID = CSSValueEmbed;
2294 break; 2209 break;
2295 case Override: 2210 case Override:
2296 m_value.valueID = CSSValueBidiOverride; 2211 m_valueID = CSSValueBidiOverride;
2297 break; 2212 break;
2298 case Isolate: 2213 case Isolate:
2299 m_value.valueID = CSSValueIsolate; 2214 m_valueID = CSSValueIsolate;
2300 break; 2215 break;
2301 case IsolateOverride: 2216 case IsolateOverride:
2302 m_value.valueID = CSSValueIsolateOverride; 2217 m_valueID = CSSValueIsolateOverride;
2303 break; 2218 break;
2304 case Plaintext: 2219 case Plaintext:
2305 m_value.valueID = CSSValuePlaintext; 2220 m_valueID = CSSValuePlaintext;
2306 break; 2221 break;
2307 } 2222 }
2308 } 2223 }
2309 2224
2310 template<> inline EUnicodeBidi CSSPrimitiveValue::convertTo() const 2225 template<> inline EUnicodeBidi CSSIdentifierValue::convertTo() const
2311 { 2226 {
2312 ASSERT(isValueID()); 2227 switch (m_valueID) {
2313 switch (m_value.valueID) {
2314 case CSSValueNormal: 2228 case CSSValueNormal:
2315 return UBNormal; 2229 return UBNormal;
2316 case CSSValueEmbed: 2230 case CSSValueEmbed:
2317 return Embed; 2231 return Embed;
2318 case CSSValueBidiOverride: 2232 case CSSValueBidiOverride:
2319 return Override; 2233 return Override;
2320 case CSSValueIsolate: 2234 case CSSValueIsolate:
2321 case CSSValueWebkitIsolate: 2235 case CSSValueWebkitIsolate:
2322 return Isolate; 2236 return Isolate;
2323 case CSSValueIsolateOverride: 2237 case CSSValueIsolateOverride:
2324 case CSSValueWebkitIsolateOverride: 2238 case CSSValueWebkitIsolateOverride:
2325 return IsolateOverride; 2239 return IsolateOverride;
2326 case CSSValuePlaintext: 2240 case CSSValuePlaintext:
2327 case CSSValueWebkitPlaintext: 2241 case CSSValueWebkitPlaintext:
2328 return Plaintext; 2242 return Plaintext;
2329 default: 2243 default:
2330 break; 2244 break;
2331 } 2245 }
2332 2246
2333 ASSERT_NOT_REACHED(); 2247 ASSERT_NOT_REACHED();
2334 return UBNormal; 2248 return UBNormal;
2335 } 2249 }
2336 2250
2337 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserDrag e) 2251 template<> inline CSSIdentifierValue::CSSIdentifierValue(EUserDrag e)
2338 : CSSValue(PrimitiveClass) 2252 : CSSValue(IdentifierClass)
2339 { 2253 {
2340 init(UnitType::ValueID);
2341 switch (e) { 2254 switch (e) {
2342 case DRAG_AUTO: 2255 case DRAG_AUTO:
2343 m_value.valueID = CSSValueAuto; 2256 m_valueID = CSSValueAuto;
2344 break; 2257 break;
2345 case DRAG_NONE: 2258 case DRAG_NONE:
2346 m_value.valueID = CSSValueNone; 2259 m_valueID = CSSValueNone;
2347 break; 2260 break;
2348 case DRAG_ELEMENT: 2261 case DRAG_ELEMENT:
2349 m_value.valueID = CSSValueElement; 2262 m_valueID = CSSValueElement;
2350 break; 2263 break;
2351 default: 2264 default:
2352 break; 2265 break;
2353 } 2266 }
2354 } 2267 }
2355 2268
2356 template<> inline EUserDrag CSSPrimitiveValue::convertTo() const 2269 template<> inline EUserDrag CSSIdentifierValue::convertTo() const
2357 { 2270 {
2358 ASSERT(isValueID()); 2271 switch (m_valueID) {
2359 switch (m_value.valueID) {
2360 case CSSValueAuto: 2272 case CSSValueAuto:
2361 return DRAG_AUTO; 2273 return DRAG_AUTO;
2362 case CSSValueNone: 2274 case CSSValueNone:
2363 return DRAG_NONE; 2275 return DRAG_NONE;
2364 case CSSValueElement: 2276 case CSSValueElement:
2365 return DRAG_ELEMENT; 2277 return DRAG_ELEMENT;
2366 default: 2278 default:
2367 break; 2279 break;
2368 } 2280 }
2369 2281
2370 ASSERT_NOT_REACHED(); 2282 ASSERT_NOT_REACHED();
2371 return DRAG_AUTO; 2283 return DRAG_AUTO;
2372 } 2284 }
2373 2285
2374 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserModify e) 2286 template<> inline CSSIdentifierValue::CSSIdentifierValue(EUserModify e)
2375 : CSSValue(PrimitiveClass) 2287 : CSSValue(IdentifierClass)
2376 { 2288 {
2377 init(UnitType::ValueID);
2378 switch (e) { 2289 switch (e) {
2379 case READ_ONLY: 2290 case READ_ONLY:
2380 m_value.valueID = CSSValueReadOnly; 2291 m_valueID = CSSValueReadOnly;
2381 break; 2292 break;
2382 case READ_WRITE: 2293 case READ_WRITE:
2383 m_value.valueID = CSSValueReadWrite; 2294 m_valueID = CSSValueReadWrite;
2384 break; 2295 break;
2385 case READ_WRITE_PLAINTEXT_ONLY: 2296 case READ_WRITE_PLAINTEXT_ONLY:
2386 m_value.valueID = CSSValueReadWritePlaintextOnly; 2297 m_valueID = CSSValueReadWritePlaintextOnly;
2387 break; 2298 break;
2388 } 2299 }
2389 } 2300 }
2390 2301
2391 template<> inline EUserModify CSSPrimitiveValue::convertTo() const 2302 template<> inline EUserModify CSSIdentifierValue::convertTo() const
2392 { 2303 {
2393 ASSERT(isValueID()); 2304 switch (m_valueID) {
2394 switch (m_value.valueID) {
2395 case CSSValueReadOnly: 2305 case CSSValueReadOnly:
2396 return READ_ONLY; 2306 return READ_ONLY;
2397 case CSSValueReadWrite: 2307 case CSSValueReadWrite:
2398 return READ_WRITE; 2308 return READ_WRITE;
2399 case CSSValueReadWritePlaintextOnly: 2309 case CSSValueReadWritePlaintextOnly:
2400 return READ_WRITE_PLAINTEXT_ONLY; 2310 return READ_WRITE_PLAINTEXT_ONLY;
2401 default: 2311 default:
2402 break; 2312 break;
2403 } 2313 }
2404 2314
2405 ASSERT_NOT_REACHED(); 2315 ASSERT_NOT_REACHED();
2406 return READ_ONLY; 2316 return READ_ONLY;
2407 } 2317 }
2408 2318
2409 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EUserSelect e) 2319 template<> inline CSSIdentifierValue::CSSIdentifierValue(EUserSelect e)
2410 : CSSValue(PrimitiveClass) 2320 : CSSValue(IdentifierClass)
2411 { 2321 {
2412 init(UnitType::ValueID);
2413 switch (e) { 2322 switch (e) {
2414 case SELECT_NONE: 2323 case SELECT_NONE:
2415 m_value.valueID = CSSValueNone; 2324 m_valueID = CSSValueNone;
2416 break; 2325 break;
2417 case SELECT_TEXT: 2326 case SELECT_TEXT:
2418 m_value.valueID = CSSValueText; 2327 m_valueID = CSSValueText;
2419 break; 2328 break;
2420 case SELECT_ALL: 2329 case SELECT_ALL:
2421 m_value.valueID = CSSValueAll; 2330 m_valueID = CSSValueAll;
2422 break; 2331 break;
2423 } 2332 }
2424 } 2333 }
2425 2334
2426 template<> inline EUserSelect CSSPrimitiveValue::convertTo() const 2335 template<> inline EUserSelect CSSIdentifierValue::convertTo() const
2427 { 2336 {
2428 ASSERT(isValueID()); 2337 switch (m_valueID) {
2429 switch (m_value.valueID) {
2430 case CSSValueAuto: 2338 case CSSValueAuto:
2431 return SELECT_TEXT; 2339 return SELECT_TEXT;
2432 case CSSValueNone: 2340 case CSSValueNone:
2433 return SELECT_NONE; 2341 return SELECT_NONE;
2434 case CSSValueText: 2342 case CSSValueText:
2435 return SELECT_TEXT; 2343 return SELECT_TEXT;
2436 case CSSValueAll: 2344 case CSSValueAll:
2437 return SELECT_ALL; 2345 return SELECT_ALL;
2438 default: 2346 default:
2439 break; 2347 break;
2440 } 2348 }
2441 2349
2442 ASSERT_NOT_REACHED(); 2350 ASSERT_NOT_REACHED();
2443 return SELECT_TEXT; 2351 return SELECT_TEXT;
2444 } 2352 }
2445 2353
2446 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EVerticalAlign a) 2354 template<> inline CSSIdentifierValue::CSSIdentifierValue(EVerticalAlign a)
2447 : CSSValue(PrimitiveClass) 2355 : CSSValue(IdentifierClass)
2448 { 2356 {
2449 init(UnitType::ValueID);
2450 switch (a) { 2357 switch (a) {
2451 case VerticalAlignTop: 2358 case VerticalAlignTop:
2452 m_value.valueID = CSSValueTop; 2359 m_valueID = CSSValueTop;
2453 break; 2360 break;
2454 case VerticalAlignBottom: 2361 case VerticalAlignBottom:
2455 m_value.valueID = CSSValueBottom; 2362 m_valueID = CSSValueBottom;
2456 break; 2363 break;
2457 case VerticalAlignMiddle: 2364 case VerticalAlignMiddle:
2458 m_value.valueID = CSSValueMiddle; 2365 m_valueID = CSSValueMiddle;
2459 break; 2366 break;
2460 case VerticalAlignBaseline: 2367 case VerticalAlignBaseline:
2461 m_value.valueID = CSSValueBaseline; 2368 m_valueID = CSSValueBaseline;
2462 break; 2369 break;
2463 case VerticalAlignTextBottom: 2370 case VerticalAlignTextBottom:
2464 m_value.valueID = CSSValueTextBottom; 2371 m_valueID = CSSValueTextBottom;
2465 break; 2372 break;
2466 case VerticalAlignTextTop: 2373 case VerticalAlignTextTop:
2467 m_value.valueID = CSSValueTextTop; 2374 m_valueID = CSSValueTextTop;
2468 break; 2375 break;
2469 case VerticalAlignSub: 2376 case VerticalAlignSub:
2470 m_value.valueID = CSSValueSub; 2377 m_valueID = CSSValueSub;
2471 break; 2378 break;
2472 case VerticalAlignSuper: 2379 case VerticalAlignSuper:
2473 m_value.valueID = CSSValueSuper; 2380 m_valueID = CSSValueSuper;
2474 break; 2381 break;
2475 case VerticalAlignBaselineMiddle: 2382 case VerticalAlignBaselineMiddle:
2476 m_value.valueID = CSSValueWebkitBaselineMiddle; 2383 m_valueID = CSSValueWebkitBaselineMiddle;
2477 break; 2384 break;
2478 case VerticalAlignLength: 2385 case VerticalAlignLength:
2479 m_value.valueID = CSSValueInvalid; 2386 m_valueID = CSSValueInvalid;
2480 } 2387 }
2481 } 2388 }
2482 2389
2483 template<> inline EVerticalAlign CSSPrimitiveValue::convertTo() const 2390 template<> inline EVerticalAlign CSSIdentifierValue::convertTo() const
2484 { 2391 {
2485 ASSERT(isValueID()); 2392 switch (m_valueID) {
2486 switch (m_value.valueID) {
2487 case CSSValueTop: 2393 case CSSValueTop:
2488 return VerticalAlignTop; 2394 return VerticalAlignTop;
2489 case CSSValueBottom: 2395 case CSSValueBottom:
2490 return VerticalAlignBottom; 2396 return VerticalAlignBottom;
2491 case CSSValueMiddle: 2397 case CSSValueMiddle:
2492 return VerticalAlignMiddle; 2398 return VerticalAlignMiddle;
2493 case CSSValueBaseline: 2399 case CSSValueBaseline:
2494 return VerticalAlignBaseline; 2400 return VerticalAlignBaseline;
2495 case CSSValueTextBottom: 2401 case CSSValueTextBottom:
2496 return VerticalAlignTextBottom; 2402 return VerticalAlignTextBottom;
2497 case CSSValueTextTop: 2403 case CSSValueTextTop:
2498 return VerticalAlignTextTop; 2404 return VerticalAlignTextTop;
2499 case CSSValueSub: 2405 case CSSValueSub:
2500 return VerticalAlignSub; 2406 return VerticalAlignSub;
2501 case CSSValueSuper: 2407 case CSSValueSuper:
2502 return VerticalAlignSuper; 2408 return VerticalAlignSuper;
2503 case CSSValueWebkitBaselineMiddle: 2409 case CSSValueWebkitBaselineMiddle:
2504 return VerticalAlignBaselineMiddle; 2410 return VerticalAlignBaselineMiddle;
2505 default: 2411 default:
2506 break; 2412 break;
2507 } 2413 }
2508 2414
2509 ASSERT_NOT_REACHED(); 2415 ASSERT_NOT_REACHED();
2510 return VerticalAlignTop; 2416 return VerticalAlignTop;
2511 } 2417 }
2512 2418
2513 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EVisibility e) 2419 template<> inline CSSIdentifierValue::CSSIdentifierValue(EVisibility e)
2514 : CSSValue(PrimitiveClass) 2420 : CSSValue(IdentifierClass)
2515 { 2421 {
2516 init(UnitType::ValueID);
2517 switch (e) { 2422 switch (e) {
2518 case EVisibility::Visible: 2423 case EVisibility::Visible:
2519 m_value.valueID = CSSValueVisible; 2424 m_valueID = CSSValueVisible;
2520 break; 2425 break;
2521 case EVisibility::Hidden: 2426 case EVisibility::Hidden:
2522 m_value.valueID = CSSValueHidden; 2427 m_valueID = CSSValueHidden;
2523 break; 2428 break;
2524 case EVisibility::Collapse: 2429 case EVisibility::Collapse:
2525 m_value.valueID = CSSValueCollapse; 2430 m_valueID = CSSValueCollapse;
2526 break; 2431 break;
2527 } 2432 }
2528 } 2433 }
2529 2434
2530 template<> inline EVisibility CSSPrimitiveValue::convertTo() const 2435 template<> inline EVisibility CSSIdentifierValue::convertTo() const
2531 { 2436 {
2532 ASSERT(isValueID()); 2437 switch (m_valueID) {
2533 switch (m_value.valueID) {
2534 case CSSValueHidden: 2438 case CSSValueHidden:
2535 return EVisibility::Hidden; 2439 return EVisibility::Hidden;
2536 case CSSValueVisible: 2440 case CSSValueVisible:
2537 return EVisibility::Visible; 2441 return EVisibility::Visible;
2538 case CSSValueCollapse: 2442 case CSSValueCollapse:
2539 return EVisibility::Collapse; 2443 return EVisibility::Collapse;
2540 default: 2444 default:
2541 break; 2445 break;
2542 } 2446 }
2543 2447
2544 ASSERT_NOT_REACHED(); 2448 ASSERT_NOT_REACHED();
2545 return EVisibility::Visible; 2449 return EVisibility::Visible;
2546 } 2450 }
2547 2451
2548 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EWhiteSpace e) 2452 template<> inline CSSIdentifierValue::CSSIdentifierValue(EWhiteSpace e)
2549 : CSSValue(PrimitiveClass) 2453 : CSSValue(IdentifierClass)
2550 { 2454 {
2551 init(UnitType::ValueID);
2552 switch (e) { 2455 switch (e) {
2553 case NORMAL: 2456 case NORMAL:
2554 m_value.valueID = CSSValueNormal; 2457 m_valueID = CSSValueNormal;
2555 break; 2458 break;
2556 case PRE: 2459 case PRE:
2557 m_value.valueID = CSSValuePre; 2460 m_valueID = CSSValuePre;
2558 break; 2461 break;
2559 case PRE_WRAP: 2462 case PRE_WRAP:
2560 m_value.valueID = CSSValuePreWrap; 2463 m_valueID = CSSValuePreWrap;
2561 break; 2464 break;
2562 case PRE_LINE: 2465 case PRE_LINE:
2563 m_value.valueID = CSSValuePreLine; 2466 m_valueID = CSSValuePreLine;
2564 break; 2467 break;
2565 case NOWRAP: 2468 case NOWRAP:
2566 m_value.valueID = CSSValueNowrap; 2469 m_valueID = CSSValueNowrap;
2567 break; 2470 break;
2568 case KHTML_NOWRAP: 2471 case KHTML_NOWRAP:
2569 m_value.valueID = CSSValueWebkitNowrap; 2472 m_valueID = CSSValueWebkitNowrap;
2570 break; 2473 break;
2571 } 2474 }
2572 } 2475 }
2573 2476
2574 template<> inline EWhiteSpace CSSPrimitiveValue::convertTo() const 2477 template<> inline EWhiteSpace CSSIdentifierValue::convertTo() const
2575 { 2478 {
2576 ASSERT(isValueID()); 2479 switch (m_valueID) {
2577 switch (m_value.valueID) {
2578 case CSSValueWebkitNowrap: 2480 case CSSValueWebkitNowrap:
2579 return KHTML_NOWRAP; 2481 return KHTML_NOWRAP;
2580 case CSSValueNowrap: 2482 case CSSValueNowrap:
2581 return NOWRAP; 2483 return NOWRAP;
2582 case CSSValuePre: 2484 case CSSValuePre:
2583 return PRE; 2485 return PRE;
2584 case CSSValuePreWrap: 2486 case CSSValuePreWrap:
2585 return PRE_WRAP; 2487 return PRE_WRAP;
2586 case CSSValuePreLine: 2488 case CSSValuePreLine:
2587 return PRE_LINE; 2489 return PRE_LINE;
2588 case CSSValueNormal: 2490 case CSSValueNormal:
2589 return NORMAL; 2491 return NORMAL;
2590 default: 2492 default:
2591 break; 2493 break;
2592 } 2494 }
2593 2495
2594 ASSERT_NOT_REACHED(); 2496 ASSERT_NOT_REACHED();
2595 return NORMAL; 2497 return NORMAL;
2596 } 2498 }
2597 2499
2598 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EWordBreak e) 2500 template<> inline CSSIdentifierValue::CSSIdentifierValue(EWordBreak e)
2599 : CSSValue(PrimitiveClass) 2501 : CSSValue(IdentifierClass)
2600 { 2502 {
2601 init(UnitType::ValueID);
2602 switch (e) { 2503 switch (e) {
2603 case NormalWordBreak: 2504 case NormalWordBreak:
2604 m_value.valueID = CSSValueNormal; 2505 m_valueID = CSSValueNormal;
2605 break; 2506 break;
2606 case BreakAllWordBreak: 2507 case BreakAllWordBreak:
2607 m_value.valueID = CSSValueBreakAll; 2508 m_valueID = CSSValueBreakAll;
2608 break; 2509 break;
2609 case BreakWordBreak: 2510 case BreakWordBreak:
2610 m_value.valueID = CSSValueBreakWord; 2511 m_valueID = CSSValueBreakWord;
2611 break; 2512 break;
2612 case KeepAllWordBreak: 2513 case KeepAllWordBreak:
2613 m_value.valueID = CSSValueKeepAll; 2514 m_valueID = CSSValueKeepAll;
2614 break; 2515 break;
2615 } 2516 }
2616 } 2517 }
2617 2518
2618 template<> inline EWordBreak CSSPrimitiveValue::convertTo() const 2519 template<> inline EWordBreak CSSIdentifierValue::convertTo() const
2619 { 2520 {
2620 ASSERT(isValueID()); 2521 switch (m_valueID) {
2621 switch (m_value.valueID) {
2622 case CSSValueBreakAll: 2522 case CSSValueBreakAll:
2623 return BreakAllWordBreak; 2523 return BreakAllWordBreak;
2624 case CSSValueBreakWord: 2524 case CSSValueBreakWord:
2625 return BreakWordBreak; 2525 return BreakWordBreak;
2626 case CSSValueNormal: 2526 case CSSValueNormal:
2627 return NormalWordBreak; 2527 return NormalWordBreak;
2628 case CSSValueKeepAll: 2528 case CSSValueKeepAll:
2629 return KeepAllWordBreak; 2529 return KeepAllWordBreak;
2630 default: 2530 default:
2631 break; 2531 break;
2632 } 2532 }
2633 2533
2634 ASSERT_NOT_REACHED(); 2534 ASSERT_NOT_REACHED();
2635 return NormalWordBreak; 2535 return NormalWordBreak;
2636 } 2536 }
2637 2537
2638 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EOverflowAnchor e) 2538 template<> inline CSSIdentifierValue::CSSIdentifierValue(EOverflowAnchor e)
2639 : CSSValue(PrimitiveClass) 2539 : CSSValue(IdentifierClass)
2640 { 2540 {
2641 init(UnitType::ValueID);
2642 switch (e) { 2541 switch (e) {
2643 case AnchorVisible: 2542 case AnchorVisible:
2644 m_value.valueID = CSSValueVisible; 2543 m_valueID = CSSValueVisible;
2645 break; 2544 break;
2646 case AnchorNone: 2545 case AnchorNone:
2647 m_value.valueID = CSSValueNone; 2546 m_valueID = CSSValueNone;
2648 break; 2547 break;
2649 case AnchorAuto: 2548 case AnchorAuto:
2650 m_value.valueID = CSSValueAuto; 2549 m_valueID = CSSValueAuto;
2651 break; 2550 break;
2652 } 2551 }
2653 } 2552 }
2654 2553
2655 template<> inline EOverflowAnchor CSSPrimitiveValue::convertTo() const 2554 template<> inline EOverflowAnchor CSSIdentifierValue::convertTo() const
2656 { 2555 {
2657 DCHECK(isValueID()); 2556 switch (m_valueID) {
2658 switch (m_value.valueID) {
2659 case CSSValueVisible: 2557 case CSSValueVisible:
2660 return AnchorVisible; 2558 return AnchorVisible;
2661 case CSSValueNone: 2559 case CSSValueNone:
2662 return AnchorNone; 2560 return AnchorNone;
2663 case CSSValueAuto: 2561 case CSSValueAuto:
2664 return AnchorAuto; 2562 return AnchorAuto;
2665 default: 2563 default:
2666 break; 2564 break;
2667 } 2565 }
2668 2566
2669 NOTREACHED(); 2567 NOTREACHED();
2670 return AnchorNone; 2568 return AnchorNone;
2671 } 2569 }
2672 2570
2673 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EOverflowWrap e) 2571 template<> inline CSSIdentifierValue::CSSIdentifierValue(EOverflowWrap e)
2674 : CSSValue(PrimitiveClass) 2572 : CSSValue(IdentifierClass)
2675 { 2573 {
2676 init(UnitType::ValueID);
2677 switch (e) { 2574 switch (e) {
2678 case NormalOverflowWrap: 2575 case NormalOverflowWrap:
2679 m_value.valueID = CSSValueNormal; 2576 m_valueID = CSSValueNormal;
2680 break; 2577 break;
2681 case BreakOverflowWrap: 2578 case BreakOverflowWrap:
2682 m_value.valueID = CSSValueBreakWord; 2579 m_valueID = CSSValueBreakWord;
2683 break; 2580 break;
2684 } 2581 }
2685 } 2582 }
2686 2583
2687 template<> inline EOverflowWrap CSSPrimitiveValue::convertTo() const 2584 template<> inline EOverflowWrap CSSIdentifierValue::convertTo() const
2688 { 2585 {
2689 ASSERT(isValueID()); 2586 switch (m_valueID) {
2690 switch (m_value.valueID) {
2691 case CSSValueBreakWord: 2587 case CSSValueBreakWord:
2692 return BreakOverflowWrap; 2588 return BreakOverflowWrap;
2693 case CSSValueNormal: 2589 case CSSValueNormal:
2694 return NormalOverflowWrap; 2590 return NormalOverflowWrap;
2695 default: 2591 default:
2696 break; 2592 break;
2697 } 2593 }
2698 2594
2699 ASSERT_NOT_REACHED(); 2595 ASSERT_NOT_REACHED();
2700 return NormalOverflowWrap; 2596 return NormalOverflowWrap;
2701 } 2597 }
2702 2598
2703 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextDirection e) 2599 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextDirection e)
2704 : CSSValue(PrimitiveClass) 2600 : CSSValue(IdentifierClass)
2705 { 2601 {
2706 init(UnitType::ValueID);
2707 switch (e) { 2602 switch (e) {
2708 case LTR: 2603 case LTR:
2709 m_value.valueID = CSSValueLtr; 2604 m_valueID = CSSValueLtr;
2710 break; 2605 break;
2711 case RTL: 2606 case RTL:
2712 m_value.valueID = CSSValueRtl; 2607 m_valueID = CSSValueRtl;
2713 break; 2608 break;
2714 } 2609 }
2715 } 2610 }
2716 2611
2717 template<> inline TextDirection CSSPrimitiveValue::convertTo() const 2612 template<> inline TextDirection CSSIdentifierValue::convertTo() const
2718 { 2613 {
2719 ASSERT(isValueID()); 2614 switch (m_valueID) {
2720 switch (m_value.valueID) {
2721 case CSSValueLtr: 2615 case CSSValueLtr:
2722 return LTR; 2616 return LTR;
2723 case CSSValueRtl: 2617 case CSSValueRtl:
2724 return RTL; 2618 return RTL;
2725 default: 2619 default:
2726 break; 2620 break;
2727 } 2621 }
2728 2622
2729 ASSERT_NOT_REACHED(); 2623 ASSERT_NOT_REACHED();
2730 return LTR; 2624 return LTR;
2731 } 2625 }
2732 2626
2733 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(WritingMode e) 2627 template<> inline CSSIdentifierValue::CSSIdentifierValue(WritingMode e)
2734 : CSSValue(PrimitiveClass) 2628 : CSSValue(IdentifierClass)
2735 { 2629 {
2736 init(UnitType::ValueID);
2737 switch (e) { 2630 switch (e) {
2738 case TopToBottomWritingMode: 2631 case TopToBottomWritingMode:
2739 m_value.valueID = CSSValueHorizontalTb; 2632 m_valueID = CSSValueHorizontalTb;
2740 break; 2633 break;
2741 case RightToLeftWritingMode: 2634 case RightToLeftWritingMode:
2742 m_value.valueID = CSSValueVerticalRl; 2635 m_valueID = CSSValueVerticalRl;
2743 break; 2636 break;
2744 case LeftToRightWritingMode: 2637 case LeftToRightWritingMode:
2745 m_value.valueID = CSSValueVerticalLr; 2638 m_valueID = CSSValueVerticalLr;
2746 break; 2639 break;
2747 } 2640 }
2748 } 2641 }
2749 2642
2750 template<> inline WritingMode CSSPrimitiveValue::convertTo() const 2643 template<> inline WritingMode CSSIdentifierValue::convertTo() const
2751 { 2644 {
2752 ASSERT(isValueID()); 2645 switch (m_valueID) {
2753 switch (m_value.valueID) {
2754 case CSSValueHorizontalTb: 2646 case CSSValueHorizontalTb:
2755 case CSSValueLr: 2647 case CSSValueLr:
2756 case CSSValueLrTb: 2648 case CSSValueLrTb:
2757 case CSSValueRl: 2649 case CSSValueRl:
2758 case CSSValueRlTb: 2650 case CSSValueRlTb:
2759 return TopToBottomWritingMode; 2651 return TopToBottomWritingMode;
2760 case CSSValueVerticalRl: 2652 case CSSValueVerticalRl:
2761 case CSSValueTb: 2653 case CSSValueTb:
2762 case CSSValueTbRl: 2654 case CSSValueTbRl:
2763 return RightToLeftWritingMode; 2655 return RightToLeftWritingMode;
2764 case CSSValueVerticalLr: 2656 case CSSValueVerticalLr:
2765 return LeftToRightWritingMode; 2657 return LeftToRightWritingMode;
2766 default: 2658 default:
2767 break; 2659 break;
2768 } 2660 }
2769 2661
2770 ASSERT_NOT_REACHED(); 2662 ASSERT_NOT_REACHED();
2771 return TopToBottomWritingMode; 2663 return TopToBottomWritingMode;
2772 } 2664 }
2773 2665
2774 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextCombine e) 2666 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextCombine e)
2775 : CSSValue(PrimitiveClass) 2667 : CSSValue(IdentifierClass)
2776 { 2668 {
2777 init(UnitType::ValueID);
2778 switch (e) { 2669 switch (e) {
2779 case TextCombineNone: 2670 case TextCombineNone:
2780 m_value.valueID = CSSValueNone; 2671 m_valueID = CSSValueNone;
2781 break; 2672 break;
2782 case TextCombineAll: 2673 case TextCombineAll:
2783 m_value.valueID = CSSValueAll; 2674 m_valueID = CSSValueAll;
2784 break; 2675 break;
2785 } 2676 }
2786 } 2677 }
2787 2678
2788 template<> inline TextCombine CSSPrimitiveValue::convertTo() const 2679 template<> inline TextCombine CSSIdentifierValue::convertTo() const
2789 { 2680 {
2790 ASSERT(isValueID()); 2681 switch (m_valueID) {
2791 switch (m_value.valueID) {
2792 case CSSValueNone: 2682 case CSSValueNone:
2793 return TextCombineNone; 2683 return TextCombineNone;
2794 case CSSValueAll: 2684 case CSSValueAll:
2795 case CSSValueHorizontal: // -webkit-text-combine 2685 case CSSValueHorizontal: // -webkit-text-combine
2796 return TextCombineAll; 2686 return TextCombineAll;
2797 default: 2687 default:
2798 break; 2688 break;
2799 } 2689 }
2800 2690
2801 ASSERT_NOT_REACHED(); 2691 ASSERT_NOT_REACHED();
2802 return TextCombineNone; 2692 return TextCombineNone;
2803 } 2693 }
2804 2694
2805 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(RubyPosition position) 2695 template<> inline CSSIdentifierValue::CSSIdentifierValue(RubyPosition position)
2806 : CSSValue(PrimitiveClass) 2696 : CSSValue(IdentifierClass)
2807 { 2697 {
2808 init(UnitType::ValueID);
2809 switch (position) { 2698 switch (position) {
2810 case RubyPositionBefore: 2699 case RubyPositionBefore:
2811 m_value.valueID = CSSValueBefore; 2700 m_valueID = CSSValueBefore;
2812 break; 2701 break;
2813 case RubyPositionAfter: 2702 case RubyPositionAfter:
2814 m_value.valueID = CSSValueAfter; 2703 m_valueID = CSSValueAfter;
2815 break; 2704 break;
2816 } 2705 }
2817 } 2706 }
2818 2707
2819 template<> inline RubyPosition CSSPrimitiveValue::convertTo() const 2708 template<> inline RubyPosition CSSIdentifierValue::convertTo() const
2820 { 2709 {
2821 ASSERT(isValueID()); 2710 switch (m_valueID) {
2822 switch (m_value.valueID) {
2823 case CSSValueBefore: 2711 case CSSValueBefore:
2824 return RubyPositionBefore; 2712 return RubyPositionBefore;
2825 case CSSValueAfter: 2713 case CSSValueAfter:
2826 return RubyPositionAfter; 2714 return RubyPositionAfter;
2827 default: 2715 default:
2828 break; 2716 break;
2829 } 2717 }
2830 2718
2831 ASSERT_NOT_REACHED(); 2719 ASSERT_NOT_REACHED();
2832 return RubyPositionBefore; 2720 return RubyPositionBefore;
2833 } 2721 }
2834 2722
2835 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisPosition posi tion) 2723 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextEmphasisPosition po sition)
2836 : CSSValue(PrimitiveClass) 2724 : CSSValue(IdentifierClass)
2837 { 2725 {
2838 init(UnitType::ValueID);
2839 switch (position) { 2726 switch (position) {
2840 case TextEmphasisPositionOver: 2727 case TextEmphasisPositionOver:
2841 m_value.valueID = CSSValueOver; 2728 m_valueID = CSSValueOver;
2842 break; 2729 break;
2843 case TextEmphasisPositionUnder: 2730 case TextEmphasisPositionUnder:
2844 m_value.valueID = CSSValueUnder; 2731 m_valueID = CSSValueUnder;
2845 break; 2732 break;
2846 } 2733 }
2847 } 2734 }
2848 2735
2849 template<> inline TextEmphasisPosition CSSPrimitiveValue::convertTo() const 2736 template<> inline TextEmphasisPosition CSSIdentifierValue::convertTo() const
2850 { 2737 {
2851 ASSERT(isValueID()); 2738 switch (m_valueID) {
2852 switch (m_value.valueID) {
2853 case CSSValueOver: 2739 case CSSValueOver:
2854 return TextEmphasisPositionOver; 2740 return TextEmphasisPositionOver;
2855 case CSSValueUnder: 2741 case CSSValueUnder:
2856 return TextEmphasisPositionUnder; 2742 return TextEmphasisPositionUnder;
2857 default: 2743 default:
2858 break; 2744 break;
2859 } 2745 }
2860 2746
2861 ASSERT_NOT_REACHED(); 2747 ASSERT_NOT_REACHED();
2862 return TextEmphasisPositionOver; 2748 return TextEmphasisPositionOver;
2863 } 2749 }
2864 2750
2865 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextOverflow overflow) 2751 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextOverflow overflow)
2866 : CSSValue(PrimitiveClass) 2752 : CSSValue(IdentifierClass)
2867 { 2753 {
2868 init(UnitType::ValueID);
2869 switch (overflow) { 2754 switch (overflow) {
2870 case TextOverflowClip: 2755 case TextOverflowClip:
2871 m_value.valueID = CSSValueClip; 2756 m_valueID = CSSValueClip;
2872 break; 2757 break;
2873 case TextOverflowEllipsis: 2758 case TextOverflowEllipsis:
2874 m_value.valueID = CSSValueEllipsis; 2759 m_valueID = CSSValueEllipsis;
2875 break; 2760 break;
2876 } 2761 }
2877 } 2762 }
2878 2763
2879 template<> inline TextOverflow CSSPrimitiveValue::convertTo() const 2764 template<> inline TextOverflow CSSIdentifierValue::convertTo() const
2880 { 2765 {
2881 ASSERT(isValueID()); 2766 switch (m_valueID) {
2882 switch (m_value.valueID) {
2883 case CSSValueClip: 2767 case CSSValueClip:
2884 return TextOverflowClip; 2768 return TextOverflowClip;
2885 case CSSValueEllipsis: 2769 case CSSValueEllipsis:
2886 return TextOverflowEllipsis; 2770 return TextOverflowEllipsis;
2887 default: 2771 default:
2888 break; 2772 break;
2889 } 2773 }
2890 2774
2891 ASSERT_NOT_REACHED(); 2775 ASSERT_NOT_REACHED();
2892 return TextOverflowClip; 2776 return TextOverflowClip;
2893 } 2777 }
2894 2778
2895 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisFill fill) 2779 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextEmphasisFill fill)
2896 : CSSValue(PrimitiveClass) 2780 : CSSValue(IdentifierClass)
2897 { 2781 {
2898 init(UnitType::ValueID);
2899 switch (fill) { 2782 switch (fill) {
2900 case TextEmphasisFillFilled: 2783 case TextEmphasisFillFilled:
2901 m_value.valueID = CSSValueFilled; 2784 m_valueID = CSSValueFilled;
2902 break; 2785 break;
2903 case TextEmphasisFillOpen: 2786 case TextEmphasisFillOpen:
2904 m_value.valueID = CSSValueOpen; 2787 m_valueID = CSSValueOpen;
2905 break; 2788 break;
2906 } 2789 }
2907 } 2790 }
2908 2791
2909 template<> inline TextEmphasisFill CSSPrimitiveValue::convertTo() const 2792 template<> inline TextEmphasisFill CSSIdentifierValue::convertTo() const
2910 { 2793 {
2911 ASSERT(isValueID()); 2794 switch (m_valueID) {
2912 switch (m_value.valueID) {
2913 case CSSValueFilled: 2795 case CSSValueFilled:
2914 return TextEmphasisFillFilled; 2796 return TextEmphasisFillFilled;
2915 case CSSValueOpen: 2797 case CSSValueOpen:
2916 return TextEmphasisFillOpen; 2798 return TextEmphasisFillOpen;
2917 default: 2799 default:
2918 break; 2800 break;
2919 } 2801 }
2920 2802
2921 ASSERT_NOT_REACHED(); 2803 ASSERT_NOT_REACHED();
2922 return TextEmphasisFillFilled; 2804 return TextEmphasisFillFilled;
2923 } 2805 }
2924 2806
2925 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextEmphasisMark mark) 2807 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextEmphasisMark mark)
2926 : CSSValue(PrimitiveClass) 2808 : CSSValue(IdentifierClass)
2927 { 2809 {
2928 init(UnitType::ValueID);
2929 switch (mark) { 2810 switch (mark) {
2930 case TextEmphasisMarkDot: 2811 case TextEmphasisMarkDot:
2931 m_value.valueID = CSSValueDot; 2812 m_valueID = CSSValueDot;
2932 break; 2813 break;
2933 case TextEmphasisMarkCircle: 2814 case TextEmphasisMarkCircle:
2934 m_value.valueID = CSSValueCircle; 2815 m_valueID = CSSValueCircle;
2935 break; 2816 break;
2936 case TextEmphasisMarkDoubleCircle: 2817 case TextEmphasisMarkDoubleCircle:
2937 m_value.valueID = CSSValueDoubleCircle; 2818 m_valueID = CSSValueDoubleCircle;
2938 break; 2819 break;
2939 case TextEmphasisMarkTriangle: 2820 case TextEmphasisMarkTriangle:
2940 m_value.valueID = CSSValueTriangle; 2821 m_valueID = CSSValueTriangle;
2941 break; 2822 break;
2942 case TextEmphasisMarkSesame: 2823 case TextEmphasisMarkSesame:
2943 m_value.valueID = CSSValueSesame; 2824 m_valueID = CSSValueSesame;
2944 break; 2825 break;
2945 case TextEmphasisMarkNone: 2826 case TextEmphasisMarkNone:
2946 case TextEmphasisMarkAuto: 2827 case TextEmphasisMarkAuto:
2947 case TextEmphasisMarkCustom: 2828 case TextEmphasisMarkCustom:
2948 ASSERT_NOT_REACHED(); 2829 ASSERT_NOT_REACHED();
2949 m_value.valueID = CSSValueNone; 2830 m_valueID = CSSValueNone;
2950 break; 2831 break;
2951 } 2832 }
2952 } 2833 }
2953 2834
2954 template<> inline TextEmphasisMark CSSPrimitiveValue::convertTo() const 2835 template<> inline TextEmphasisMark CSSIdentifierValue::convertTo() const
2955 { 2836 {
2956 ASSERT(isValueID()); 2837 switch (m_valueID) {
2957 switch (m_value.valueID) {
2958 case CSSValueNone: 2838 case CSSValueNone:
2959 return TextEmphasisMarkNone; 2839 return TextEmphasisMarkNone;
2960 case CSSValueDot: 2840 case CSSValueDot:
2961 return TextEmphasisMarkDot; 2841 return TextEmphasisMarkDot;
2962 case CSSValueCircle: 2842 case CSSValueCircle:
2963 return TextEmphasisMarkCircle; 2843 return TextEmphasisMarkCircle;
2964 case CSSValueDoubleCircle: 2844 case CSSValueDoubleCircle:
2965 return TextEmphasisMarkDoubleCircle; 2845 return TextEmphasisMarkDoubleCircle;
2966 case CSSValueTriangle: 2846 case CSSValueTriangle:
2967 return TextEmphasisMarkTriangle; 2847 return TextEmphasisMarkTriangle;
2968 case CSSValueSesame: 2848 case CSSValueSesame:
2969 return TextEmphasisMarkSesame; 2849 return TextEmphasisMarkSesame;
2970 default: 2850 default:
2971 break; 2851 break;
2972 } 2852 }
2973 2853
2974 ASSERT_NOT_REACHED(); 2854 ASSERT_NOT_REACHED();
2975 return TextEmphasisMarkNone; 2855 return TextEmphasisMarkNone;
2976 } 2856 }
2977 2857
2978 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextOrientation e) 2858 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextOrientation e)
2979 : CSSValue(PrimitiveClass) 2859 : CSSValue(IdentifierClass)
2980 { 2860 {
2981 init(UnitType::ValueID);
2982 switch (e) { 2861 switch (e) {
2983 case TextOrientationSideways: 2862 case TextOrientationSideways:
2984 m_value.valueID = CSSValueSideways; 2863 m_valueID = CSSValueSideways;
2985 break; 2864 break;
2986 case TextOrientationMixed: 2865 case TextOrientationMixed:
2987 m_value.valueID = CSSValueMixed; 2866 m_valueID = CSSValueMixed;
2988 break; 2867 break;
2989 case TextOrientationUpright: 2868 case TextOrientationUpright:
2990 m_value.valueID = CSSValueUpright; 2869 m_valueID = CSSValueUpright;
2991 break; 2870 break;
2992 } 2871 }
2993 } 2872 }
2994 2873
2995 template<> inline TextOrientation CSSPrimitiveValue::convertTo() const 2874 template<> inline TextOrientation CSSIdentifierValue::convertTo() const
2996 { 2875 {
2997 ASSERT(isValueID()); 2876 switch (m_valueID) {
2998 switch (m_value.valueID) {
2999 case CSSValueSideways: 2877 case CSSValueSideways:
3000 case CSSValueSidewaysRight: 2878 case CSSValueSidewaysRight:
3001 return TextOrientationSideways; 2879 return TextOrientationSideways;
3002 case CSSValueMixed: 2880 case CSSValueMixed:
3003 case CSSValueVerticalRight: // -webkit-text-orientation 2881 case CSSValueVerticalRight: // -webkit-text-orientation
3004 return TextOrientationMixed; 2882 return TextOrientationMixed;
3005 case CSSValueUpright: 2883 case CSSValueUpright:
3006 return TextOrientationUpright; 2884 return TextOrientationUpright;
3007 default: 2885 default:
3008 break; 2886 break;
3009 } 2887 }
3010 2888
3011 ASSERT_NOT_REACHED(); 2889 ASSERT_NOT_REACHED();
3012 return TextOrientationMixed; 2890 return TextOrientationMixed;
3013 } 2891 }
3014 2892
3015 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPointerEvents e) 2893 template<> inline CSSIdentifierValue::CSSIdentifierValue(EPointerEvents e)
3016 : CSSValue(PrimitiveClass) 2894 : CSSValue(IdentifierClass)
3017 { 2895 {
3018 init(UnitType::ValueID);
3019 switch (e) { 2896 switch (e) {
3020 case PE_NONE: 2897 case PE_NONE:
3021 m_value.valueID = CSSValueNone; 2898 m_valueID = CSSValueNone;
3022 break; 2899 break;
3023 case PE_STROKE: 2900 case PE_STROKE:
3024 m_value.valueID = CSSValueStroke; 2901 m_valueID = CSSValueStroke;
3025 break; 2902 break;
3026 case PE_FILL: 2903 case PE_FILL:
3027 m_value.valueID = CSSValueFill; 2904 m_valueID = CSSValueFill;
3028 break; 2905 break;
3029 case PE_PAINTED: 2906 case PE_PAINTED:
3030 m_value.valueID = CSSValuePainted; 2907 m_valueID = CSSValuePainted;
3031 break; 2908 break;
3032 case PE_VISIBLE: 2909 case PE_VISIBLE:
3033 m_value.valueID = CSSValueVisible; 2910 m_valueID = CSSValueVisible;
3034 break; 2911 break;
3035 case PE_VISIBLE_STROKE: 2912 case PE_VISIBLE_STROKE:
3036 m_value.valueID = CSSValueVisibleStroke; 2913 m_valueID = CSSValueVisibleStroke;
3037 break; 2914 break;
3038 case PE_VISIBLE_FILL: 2915 case PE_VISIBLE_FILL:
3039 m_value.valueID = CSSValueVisibleFill; 2916 m_valueID = CSSValueVisibleFill;
3040 break; 2917 break;
3041 case PE_VISIBLE_PAINTED: 2918 case PE_VISIBLE_PAINTED:
3042 m_value.valueID = CSSValueVisiblePainted; 2919 m_valueID = CSSValueVisiblePainted;
3043 break; 2920 break;
3044 case PE_AUTO: 2921 case PE_AUTO:
3045 m_value.valueID = CSSValueAuto; 2922 m_valueID = CSSValueAuto;
3046 break; 2923 break;
3047 case PE_ALL: 2924 case PE_ALL:
3048 m_value.valueID = CSSValueAll; 2925 m_valueID = CSSValueAll;
3049 break; 2926 break;
3050 case PE_BOUNDINGBOX: 2927 case PE_BOUNDINGBOX:
3051 m_value.valueID = CSSValueBoundingBox; 2928 m_valueID = CSSValueBoundingBox;
3052 break; 2929 break;
3053 } 2930 }
3054 } 2931 }
3055 2932
3056 template<> inline EPointerEvents CSSPrimitiveValue::convertTo() const 2933 template<> inline EPointerEvents CSSIdentifierValue::convertTo() const
3057 { 2934 {
3058 ASSERT(isValueID()); 2935 switch (m_valueID) {
3059 switch (m_value.valueID) {
3060 case CSSValueAll: 2936 case CSSValueAll:
3061 return PE_ALL; 2937 return PE_ALL;
3062 case CSSValueAuto: 2938 case CSSValueAuto:
3063 return PE_AUTO; 2939 return PE_AUTO;
3064 case CSSValueNone: 2940 case CSSValueNone:
3065 return PE_NONE; 2941 return PE_NONE;
3066 case CSSValueVisiblePainted: 2942 case CSSValueVisiblePainted:
3067 return PE_VISIBLE_PAINTED; 2943 return PE_VISIBLE_PAINTED;
3068 case CSSValueVisibleFill: 2944 case CSSValueVisibleFill:
3069 return PE_VISIBLE_FILL; 2945 return PE_VISIBLE_FILL;
(...skipping 10 matching lines...) Expand all
3080 case CSSValueBoundingBox: 2956 case CSSValueBoundingBox:
3081 return PE_BOUNDINGBOX; 2957 return PE_BOUNDINGBOX;
3082 default: 2958 default:
3083 break; 2959 break;
3084 } 2960 }
3085 2961
3086 ASSERT_NOT_REACHED(); 2962 ASSERT_NOT_REACHED();
3087 return PE_ALL; 2963 return PE_ALL;
3088 } 2964 }
3089 2965
3090 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontDescription::Kerning kerning) 2966 template<> inline CSSIdentifierValue::CSSIdentifierValue(FontDescription::Kernin g kerning)
3091 : CSSValue(PrimitiveClass) 2967 : CSSValue(IdentifierClass)
3092 { 2968 {
3093 init(UnitType::ValueID);
3094 switch (kerning) { 2969 switch (kerning) {
3095 case FontDescription::AutoKerning: 2970 case FontDescription::AutoKerning:
3096 m_value.valueID = CSSValueAuto; 2971 m_valueID = CSSValueAuto;
3097 return; 2972 return;
3098 case FontDescription::NormalKerning: 2973 case FontDescription::NormalKerning:
3099 m_value.valueID = CSSValueNormal; 2974 m_valueID = CSSValueNormal;
3100 return; 2975 return;
3101 case FontDescription::NoneKerning: 2976 case FontDescription::NoneKerning:
3102 m_value.valueID = CSSValueNone; 2977 m_valueID = CSSValueNone;
3103 return; 2978 return;
3104 } 2979 }
3105 2980
3106 ASSERT_NOT_REACHED(); 2981 ASSERT_NOT_REACHED();
3107 m_value.valueID = CSSValueAuto; 2982 m_valueID = CSSValueAuto;
3108 } 2983 }
3109 2984
3110 template<> inline FontDescription::Kerning CSSPrimitiveValue::convertTo() const 2985 template<> inline FontDescription::Kerning CSSIdentifierValue::convertTo() const
3111 { 2986 {
3112 ASSERT(isValueID()); 2987 switch (m_valueID) {
3113 switch (m_value.valueID) {
3114 case CSSValueAuto: 2988 case CSSValueAuto:
3115 return FontDescription::AutoKerning; 2989 return FontDescription::AutoKerning;
3116 case CSSValueNormal: 2990 case CSSValueNormal:
3117 return FontDescription::NormalKerning; 2991 return FontDescription::NormalKerning;
3118 case CSSValueNone: 2992 case CSSValueNone:
3119 return FontDescription::NoneKerning; 2993 return FontDescription::NoneKerning;
3120 default: 2994 default:
3121 break; 2995 break;
3122 } 2996 }
3123 2997
3124 ASSERT_NOT_REACHED(); 2998 ASSERT_NOT_REACHED();
3125 return FontDescription::AutoKerning; 2999 return FontDescription::AutoKerning;
3126 } 3000 }
3127 3001
3128 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ObjectFit fit) 3002 template<> inline CSSIdentifierValue::CSSIdentifierValue(ObjectFit fit)
3129 : CSSValue(PrimitiveClass) 3003 : CSSValue(IdentifierClass)
3130 { 3004 {
3131 init(UnitType::ValueID);
3132 switch (fit) { 3005 switch (fit) {
3133 case ObjectFitFill: 3006 case ObjectFitFill:
3134 m_value.valueID = CSSValueFill; 3007 m_valueID = CSSValueFill;
3135 break; 3008 break;
3136 case ObjectFitContain: 3009 case ObjectFitContain:
3137 m_value.valueID = CSSValueContain; 3010 m_valueID = CSSValueContain;
3138 break; 3011 break;
3139 case ObjectFitCover: 3012 case ObjectFitCover:
3140 m_value.valueID = CSSValueCover; 3013 m_valueID = CSSValueCover;
3141 break; 3014 break;
3142 case ObjectFitNone: 3015 case ObjectFitNone:
3143 m_value.valueID = CSSValueNone; 3016 m_valueID = CSSValueNone;
3144 break; 3017 break;
3145 case ObjectFitScaleDown: 3018 case ObjectFitScaleDown:
3146 m_value.valueID = CSSValueScaleDown; 3019 m_valueID = CSSValueScaleDown;
3147 break; 3020 break;
3148 } 3021 }
3149 } 3022 }
3150 3023
3151 template<> inline ObjectFit CSSPrimitiveValue::convertTo() const 3024 template<> inline ObjectFit CSSIdentifierValue::convertTo() const
3152 { 3025 {
3153 switch (m_value.valueID) { 3026 switch (m_valueID) {
3154 case CSSValueFill: 3027 case CSSValueFill:
3155 return ObjectFitFill; 3028 return ObjectFitFill;
3156 case CSSValueContain: 3029 case CSSValueContain:
3157 return ObjectFitContain; 3030 return ObjectFitContain;
3158 case CSSValueCover: 3031 case CSSValueCover:
3159 return ObjectFitCover; 3032 return ObjectFitCover;
3160 case CSSValueNone: 3033 case CSSValueNone:
3161 return ObjectFitNone; 3034 return ObjectFitNone;
3162 case CSSValueScaleDown: 3035 case CSSValueScaleDown:
3163 return ObjectFitScaleDown; 3036 return ObjectFitScaleDown;
3164 default: 3037 default:
3165 ASSERT_NOT_REACHED(); 3038 ASSERT_NOT_REACHED();
3166 return ObjectFitFill; 3039 return ObjectFitFill;
3167 } 3040 }
3168 } 3041 }
3169 3042
3170 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EFillSizeType fillSize) 3043 template<> inline CSSIdentifierValue::CSSIdentifierValue(EFillSizeType fillSize)
3171 : CSSValue(PrimitiveClass) 3044 : CSSValue(IdentifierClass)
3172 { 3045 {
3173 init(UnitType::ValueID);
3174 switch (fillSize) { 3046 switch (fillSize) {
3175 case Contain: 3047 case Contain:
3176 m_value.valueID = CSSValueContain; 3048 m_valueID = CSSValueContain;
3177 break; 3049 break;
3178 case Cover: 3050 case Cover:
3179 m_value.valueID = CSSValueCover; 3051 m_valueID = CSSValueCover;
3180 break; 3052 break;
3181 case SizeNone: 3053 case SizeNone:
3182 m_value.valueID = CSSValueNone; 3054 m_valueID = CSSValueNone;
3183 break; 3055 break;
3184 case SizeLength: 3056 case SizeLength:
3185 default: 3057 default:
3186 ASSERT_NOT_REACHED(); 3058 ASSERT_NOT_REACHED();
3187 } 3059 }
3188 } 3060 }
3189 3061
3190 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontSmoothingMode smoothi ng) 3062 template<> inline CSSIdentifierValue::CSSIdentifierValue(FontSmoothingMode smoot hing)
3191 : CSSValue(PrimitiveClass) 3063 : CSSValue(IdentifierClass)
3192 { 3064 {
3193 init(UnitType::ValueID);
3194 switch (smoothing) { 3065 switch (smoothing) {
3195 case AutoSmoothing: 3066 case AutoSmoothing:
3196 m_value.valueID = CSSValueAuto; 3067 m_valueID = CSSValueAuto;
3197 return; 3068 return;
3198 case NoSmoothing: 3069 case NoSmoothing:
3199 m_value.valueID = CSSValueNone; 3070 m_valueID = CSSValueNone;
3200 return; 3071 return;
3201 case Antialiased: 3072 case Antialiased:
3202 m_value.valueID = CSSValueAntialiased; 3073 m_valueID = CSSValueAntialiased;
3203 return; 3074 return;
3204 case SubpixelAntialiased: 3075 case SubpixelAntialiased:
3205 m_value.valueID = CSSValueSubpixelAntialiased; 3076 m_valueID = CSSValueSubpixelAntialiased;
3206 return; 3077 return;
3207 } 3078 }
3208 3079
3209 ASSERT_NOT_REACHED(); 3080 ASSERT_NOT_REACHED();
3210 m_value.valueID = CSSValueAuto; 3081 m_valueID = CSSValueAuto;
3211 } 3082 }
3212 3083
3213 template<> inline FontSmoothingMode CSSPrimitiveValue::convertTo() const 3084 template<> inline FontSmoothingMode CSSIdentifierValue::convertTo() const
3214 { 3085 {
3215 ASSERT(isValueID()); 3086 switch (m_valueID) {
3216 switch (m_value.valueID) {
3217 case CSSValueAuto: 3087 case CSSValueAuto:
3218 return AutoSmoothing; 3088 return AutoSmoothing;
3219 case CSSValueNone: 3089 case CSSValueNone:
3220 return NoSmoothing; 3090 return NoSmoothing;
3221 case CSSValueAntialiased: 3091 case CSSValueAntialiased:
3222 return Antialiased; 3092 return Antialiased;
3223 case CSSValueSubpixelAntialiased: 3093 case CSSValueSubpixelAntialiased:
3224 return SubpixelAntialiased; 3094 return SubpixelAntialiased;
3225 default: 3095 default:
3226 break; 3096 break;
3227 } 3097 }
3228 3098
3229 ASSERT_NOT_REACHED(); 3099 ASSERT_NOT_REACHED();
3230 return AutoSmoothing; 3100 return AutoSmoothing;
3231 } 3101 }
3232 3102
3233 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontWeight weight) 3103 template<> inline CSSIdentifierValue::CSSIdentifierValue(FontWeight weight)
3234 : CSSValue(PrimitiveClass) 3104 : CSSValue(IdentifierClass)
3235 { 3105 {
3236 init(UnitType::ValueID);
3237 switch (weight) { 3106 switch (weight) {
3238 case FontWeight900: 3107 case FontWeight900:
3239 m_value.valueID = CSSValue900; 3108 m_valueID = CSSValue900;
3240 return; 3109 return;
3241 case FontWeight800: 3110 case FontWeight800:
3242 m_value.valueID = CSSValue800; 3111 m_valueID = CSSValue800;
3243 return; 3112 return;
3244 case FontWeight700: 3113 case FontWeight700:
3245 m_value.valueID = CSSValueBold; 3114 m_valueID = CSSValueBold;
3246 return; 3115 return;
3247 case FontWeight600: 3116 case FontWeight600:
3248 m_value.valueID = CSSValue600; 3117 m_valueID = CSSValue600;
3249 return; 3118 return;
3250 case FontWeight500: 3119 case FontWeight500:
3251 m_value.valueID = CSSValue500; 3120 m_valueID = CSSValue500;
3252 return; 3121 return;
3253 case FontWeight400: 3122 case FontWeight400:
3254 m_value.valueID = CSSValueNormal; 3123 m_valueID = CSSValueNormal;
3255 return; 3124 return;
3256 case FontWeight300: 3125 case FontWeight300:
3257 m_value.valueID = CSSValue300; 3126 m_valueID = CSSValue300;
3258 return; 3127 return;
3259 case FontWeight200: 3128 case FontWeight200:
3260 m_value.valueID = CSSValue200; 3129 m_valueID = CSSValue200;
3261 return; 3130 return;
3262 case FontWeight100: 3131 case FontWeight100:
3263 m_value.valueID = CSSValue100; 3132 m_valueID = CSSValue100;
3264 return; 3133 return;
3265 } 3134 }
3266 3135
3267 ASSERT_NOT_REACHED(); 3136 ASSERT_NOT_REACHED();
3268 m_value.valueID = CSSValueNormal; 3137 m_valueID = CSSValueNormal;
3269 } 3138 }
3270 3139
3271 template<> inline FontWeight CSSPrimitiveValue::convertTo() const 3140 template<> inline FontWeight CSSIdentifierValue::convertTo() const
3272 { 3141 {
3273 ASSERT(isValueID()); 3142 switch (m_valueID) {
3274 switch (m_value.valueID) {
3275 case CSSValueBold: 3143 case CSSValueBold:
3276 return FontWeightBold; 3144 return FontWeightBold;
3277 case CSSValueNormal: 3145 case CSSValueNormal:
3278 return FontWeightNormal; 3146 return FontWeightNormal;
3279 case CSSValue900: 3147 case CSSValue900:
3280 return FontWeight900; 3148 return FontWeight900;
3281 case CSSValue800: 3149 case CSSValue800:
3282 return FontWeight800; 3150 return FontWeight800;
3283 case CSSValue700: 3151 case CSSValue700:
3284 return FontWeight700; 3152 return FontWeight700;
(...skipping 10 matching lines...) Expand all
3295 case CSSValue100: 3163 case CSSValue100:
3296 return FontWeight100; 3164 return FontWeight100;
3297 default: 3165 default:
3298 break; 3166 break;
3299 } 3167 }
3300 3168
3301 ASSERT_NOT_REACHED(); 3169 ASSERT_NOT_REACHED();
3302 return FontWeightNormal; 3170 return FontWeightNormal;
3303 } 3171 }
3304 3172
3305 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontStyle italic) 3173 template<> inline CSSIdentifierValue::CSSIdentifierValue(FontStyle italic)
3306 : CSSValue(PrimitiveClass) 3174 : CSSValue(IdentifierClass)
3307 { 3175 {
3308 init(UnitType::ValueID);
3309 switch (italic) { 3176 switch (italic) {
3310 case FontStyleNormal: 3177 case FontStyleNormal:
3311 m_value.valueID = CSSValueNormal; 3178 m_valueID = CSSValueNormal;
3312 return; 3179 return;
3313 case FontStyleOblique: 3180 case FontStyleOblique:
3314 m_value.valueID = CSSValueOblique; 3181 m_valueID = CSSValueOblique;
3315 return; 3182 return;
3316 case FontStyleItalic: 3183 case FontStyleItalic:
3317 m_value.valueID = CSSValueItalic; 3184 m_valueID = CSSValueItalic;
3318 return; 3185 return;
3319 } 3186 }
3320 3187
3321 ASSERT_NOT_REACHED(); 3188 ASSERT_NOT_REACHED();
3322 m_value.valueID = CSSValueNormal; 3189 m_valueID = CSSValueNormal;
3323 } 3190 }
3324 3191
3325 template<> inline FontStyle CSSPrimitiveValue::convertTo() const 3192 template<> inline FontStyle CSSIdentifierValue::convertTo() const
3326 { 3193 {
3327 ASSERT(isValueID()); 3194 switch (m_valueID) {
3328 switch (m_value.valueID) {
3329 case CSSValueOblique: 3195 case CSSValueOblique:
3330 return FontStyleOblique; 3196 return FontStyleOblique;
3331 case CSSValueItalic: 3197 case CSSValueItalic:
3332 return FontStyleItalic; 3198 return FontStyleItalic;
3333 case CSSValueNormal: 3199 case CSSValueNormal:
3334 return FontStyleNormal; 3200 return FontStyleNormal;
3335 default: 3201 default:
3336 break; 3202 break;
3337 } 3203 }
3338 ASSERT_NOT_REACHED(); 3204 ASSERT_NOT_REACHED();
3339 return FontStyleNormal; 3205 return FontStyleNormal;
3340 } 3206 }
3341 3207
3342 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(FontStretch stretch) 3208 template<> inline CSSIdentifierValue::CSSIdentifierValue(FontStretch stretch)
3343 : CSSValue(PrimitiveClass) 3209 : CSSValue(IdentifierClass)
3344 { 3210 {
3345 init(UnitType::ValueID);
3346 switch (stretch) { 3211 switch (stretch) {
3347 case FontStretchUltraCondensed: 3212 case FontStretchUltraCondensed:
3348 m_value.valueID = CSSValueUltraCondensed; 3213 m_valueID = CSSValueUltraCondensed;
3349 return; 3214 return;
3350 case FontStretchExtraCondensed: 3215 case FontStretchExtraCondensed:
3351 m_value.valueID = CSSValueExtraCondensed; 3216 m_valueID = CSSValueExtraCondensed;
3352 return; 3217 return;
3353 case FontStretchCondensed: 3218 case FontStretchCondensed:
3354 m_value.valueID = CSSValueCondensed; 3219 m_valueID = CSSValueCondensed;
3355 return; 3220 return;
3356 case FontStretchSemiCondensed: 3221 case FontStretchSemiCondensed:
3357 m_value.valueID = CSSValueSemiCondensed; 3222 m_valueID = CSSValueSemiCondensed;
3358 return; 3223 return;
3359 case FontStretchNormal: 3224 case FontStretchNormal:
3360 m_value.valueID = CSSValueNormal; 3225 m_valueID = CSSValueNormal;
3361 return; 3226 return;
3362 case FontStretchSemiExpanded: 3227 case FontStretchSemiExpanded:
3363 m_value.valueID = CSSValueSemiExpanded; 3228 m_valueID = CSSValueSemiExpanded;
3364 return; 3229 return;
3365 case FontStretchExpanded: 3230 case FontStretchExpanded:
3366 m_value.valueID = CSSValueExpanded; 3231 m_valueID = CSSValueExpanded;
3367 return; 3232 return;
3368 case FontStretchExtraExpanded: 3233 case FontStretchExtraExpanded:
3369 m_value.valueID = CSSValueExtraExpanded; 3234 m_valueID = CSSValueExtraExpanded;
3370 return; 3235 return;
3371 case FontStretchUltraExpanded: 3236 case FontStretchUltraExpanded:
3372 m_value.valueID = CSSValueUltraExpanded; 3237 m_valueID = CSSValueUltraExpanded;
3373 return; 3238 return;
3374 } 3239 }
3375 3240
3376 ASSERT_NOT_REACHED(); 3241 ASSERT_NOT_REACHED();
3377 m_value.valueID = CSSValueNormal; 3242 m_valueID = CSSValueNormal;
3378 } 3243 }
3379 3244
3380 template<> inline FontStretch CSSPrimitiveValue::convertTo() const 3245 template<> inline FontStretch CSSIdentifierValue::convertTo() const
3381 { 3246 {
3382 ASSERT(isValueID()); 3247 switch (m_valueID) {
3383 switch (m_value.valueID) {
3384 case CSSValueUltraCondensed: 3248 case CSSValueUltraCondensed:
3385 return FontStretchUltraCondensed; 3249 return FontStretchUltraCondensed;
3386 case CSSValueExtraCondensed: 3250 case CSSValueExtraCondensed:
3387 return FontStretchExtraCondensed; 3251 return FontStretchExtraCondensed;
3388 case CSSValueCondensed: 3252 case CSSValueCondensed:
3389 return FontStretchCondensed; 3253 return FontStretchCondensed;
3390 case CSSValueSemiCondensed: 3254 case CSSValueSemiCondensed:
3391 return FontStretchSemiCondensed; 3255 return FontStretchSemiCondensed;
3392 case CSSValueNormal: 3256 case CSSValueNormal:
3393 return FontStretchNormal; 3257 return FontStretchNormal;
3394 case CSSValueSemiExpanded: 3258 case CSSValueSemiExpanded:
3395 return FontStretchSemiExpanded; 3259 return FontStretchSemiExpanded;
3396 case CSSValueExpanded: 3260 case CSSValueExpanded:
3397 return FontStretchExpanded; 3261 return FontStretchExpanded;
3398 case CSSValueExtraExpanded: 3262 case CSSValueExtraExpanded:
3399 return FontStretchExtraExpanded; 3263 return FontStretchExtraExpanded;
3400 case CSSValueUltraExpanded: 3264 case CSSValueUltraExpanded:
3401 return FontStretchUltraExpanded; 3265 return FontStretchUltraExpanded;
3402 default: 3266 default:
3403 break; 3267 break;
3404 } 3268 }
3405 3269
3406 ASSERT_NOT_REACHED(); 3270 ASSERT_NOT_REACHED();
3407 return FontStretchNormal; 3271 return FontStretchNormal;
3408 } 3272 }
3409 3273
3410 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextRenderingMode e) 3274 template<> inline CSSIdentifierValue::CSSIdentifierValue(TextRenderingMode e)
3411 : CSSValue(PrimitiveClass) 3275 : CSSValue(IdentifierClass)
3412 { 3276 {
3413 init(UnitType::ValueID);
3414 switch (e) { 3277 switch (e) {
3415 case AutoTextRendering: 3278 case AutoTextRendering:
3416 m_value.valueID = CSSValueAuto; 3279 m_valueID = CSSValueAuto;
3417 break; 3280 break;
3418 case OptimizeSpeed: 3281 case OptimizeSpeed:
3419 m_value.valueID = CSSValueOptimizeSpeed; 3282 m_valueID = CSSValueOptimizeSpeed;
3420 break; 3283 break;
3421 case OptimizeLegibility: 3284 case OptimizeLegibility:
3422 m_value.valueID = CSSValueOptimizeLegibility; 3285 m_valueID = CSSValueOptimizeLegibility;
3423 break; 3286 break;
3424 case GeometricPrecision: 3287 case GeometricPrecision:
3425 m_value.valueID = CSSValueGeometricPrecision; 3288 m_valueID = CSSValueGeometricPrecision;
3426 break; 3289 break;
3427 } 3290 }
3428 } 3291 }
3429 3292
3430 template<> inline TextRenderingMode CSSPrimitiveValue::convertTo() const 3293 template<> inline TextRenderingMode CSSIdentifierValue::convertTo() const
3431 { 3294 {
3432 ASSERT(isValueID()); 3295 switch (m_valueID) {
3433 switch (m_value.valueID) {
3434 case CSSValueAuto: 3296 case CSSValueAuto:
3435 return AutoTextRendering; 3297 return AutoTextRendering;
3436 case CSSValueOptimizeSpeed: 3298 case CSSValueOptimizeSpeed:
3437 return OptimizeSpeed; 3299 return OptimizeSpeed;
3438 case CSSValueOptimizeLegibility: 3300 case CSSValueOptimizeLegibility:
3439 return OptimizeLegibility; 3301 return OptimizeLegibility;
3440 case CSSValueGeometricPrecision: 3302 case CSSValueGeometricPrecision:
3441 return GeometricPrecision; 3303 return GeometricPrecision;
3442 default: 3304 default:
3443 break; 3305 break;
3444 } 3306 }
3445 3307
3446 ASSERT_NOT_REACHED(); 3308 ASSERT_NOT_REACHED();
3447 return AutoTextRendering; 3309 return AutoTextRendering;
3448 } 3310 }
3449 3311
3450 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ESpeak e) 3312 template<> inline CSSIdentifierValue::CSSIdentifierValue(ESpeak e)
3451 : CSSValue(PrimitiveClass) 3313 : CSSValue(IdentifierClass)
3452 { 3314 {
3453 init(UnitType::ValueID);
3454 switch (e) { 3315 switch (e) {
3455 case SpeakNone: 3316 case SpeakNone:
3456 m_value.valueID = CSSValueNone; 3317 m_valueID = CSSValueNone;
3457 break; 3318 break;
3458 case SpeakNormal: 3319 case SpeakNormal:
3459 m_value.valueID = CSSValueNormal; 3320 m_valueID = CSSValueNormal;
3460 break; 3321 break;
3461 case SpeakSpellOut: 3322 case SpeakSpellOut:
3462 m_value.valueID = CSSValueSpellOut; 3323 m_valueID = CSSValueSpellOut;
3463 break; 3324 break;
3464 case SpeakDigits: 3325 case SpeakDigits:
3465 m_value.valueID = CSSValueDigits; 3326 m_valueID = CSSValueDigits;
3466 break; 3327 break;
3467 case SpeakLiteralPunctuation: 3328 case SpeakLiteralPunctuation:
3468 m_value.valueID = CSSValueLiteralPunctuation; 3329 m_valueID = CSSValueLiteralPunctuation;
3469 break; 3330 break;
3470 case SpeakNoPunctuation: 3331 case SpeakNoPunctuation:
3471 m_value.valueID = CSSValueNoPunctuation; 3332 m_valueID = CSSValueNoPunctuation;
3472 break; 3333 break;
3473 } 3334 }
3474 } 3335 }
3475 3336
3476 template<> inline Order CSSPrimitiveValue::convertTo() const 3337 template<> inline Order CSSIdentifierValue::convertTo() const
3477 { 3338 {
3478 ASSERT(isValueID()); 3339 switch (m_valueID) {
3479 switch (m_value.valueID) {
3480 case CSSValueLogical: 3340 case CSSValueLogical:
3481 return LogicalOrder; 3341 return LogicalOrder;
3482 case CSSValueVisual: 3342 case CSSValueVisual:
3483 return VisualOrder; 3343 return VisualOrder;
3484 default: 3344 default:
3485 break; 3345 break;
3486 } 3346 }
3487 3347
3488 ASSERT_NOT_REACHED(); 3348 ASSERT_NOT_REACHED();
3489 return LogicalOrder; 3349 return LogicalOrder;
3490 } 3350 }
3491 3351
3492 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Order e) 3352 template<> inline CSSIdentifierValue::CSSIdentifierValue(Order e)
3493 : CSSValue(PrimitiveClass) 3353 : CSSValue(IdentifierClass)
3494 { 3354 {
3495 init(UnitType::ValueID);
3496 switch (e) { 3355 switch (e) {
3497 case LogicalOrder: 3356 case LogicalOrder:
3498 m_value.valueID = CSSValueLogical; 3357 m_valueID = CSSValueLogical;
3499 break; 3358 break;
3500 case VisualOrder: 3359 case VisualOrder:
3501 m_value.valueID = CSSValueVisual; 3360 m_valueID = CSSValueVisual;
3502 break; 3361 break;
3503 } 3362 }
3504 } 3363 }
3505 3364
3506 template<> inline ESpeak CSSPrimitiveValue::convertTo() const 3365 template<> inline ESpeak CSSIdentifierValue::convertTo() const
3507 { 3366 {
3508 ASSERT(isValueID()); 3367 switch (m_valueID) {
3509 switch (m_value.valueID) {
3510 case CSSValueNone: 3368 case CSSValueNone:
3511 return SpeakNone; 3369 return SpeakNone;
3512 case CSSValueNormal: 3370 case CSSValueNormal:
3513 return SpeakNormal; 3371 return SpeakNormal;
3514 case CSSValueSpellOut: 3372 case CSSValueSpellOut:
3515 return SpeakSpellOut; 3373 return SpeakSpellOut;
3516 case CSSValueDigits: 3374 case CSSValueDigits:
3517 return SpeakDigits; 3375 return SpeakDigits;
3518 case CSSValueLiteralPunctuation: 3376 case CSSValueLiteralPunctuation:
3519 return SpeakLiteralPunctuation; 3377 return SpeakLiteralPunctuation;
3520 case CSSValueNoPunctuation: 3378 case CSSValueNoPunctuation:
3521 return SpeakNoPunctuation; 3379 return SpeakNoPunctuation;
3522 default: 3380 default:
3523 break; 3381 break;
3524 } 3382 }
3525 3383
3526 ASSERT_NOT_REACHED(); 3384 ASSERT_NOT_REACHED();
3527 return SpeakNormal; 3385 return SpeakNormal;
3528 } 3386 }
3529 3387
3530 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(WebBlendMode blendMode) 3388 template<> inline CSSIdentifierValue::CSSIdentifierValue(WebBlendMode blendMode)
3531 : CSSValue(PrimitiveClass) 3389 : CSSValue(IdentifierClass)
3532 { 3390 {
3533 init(UnitType::ValueID);
3534 switch (blendMode) { 3391 switch (blendMode) {
3535 case WebBlendModeNormal: 3392 case WebBlendModeNormal:
3536 m_value.valueID = CSSValueNormal; 3393 m_valueID = CSSValueNormal;
3537 break; 3394 break;
3538 case WebBlendModeMultiply: 3395 case WebBlendModeMultiply:
3539 m_value.valueID = CSSValueMultiply; 3396 m_valueID = CSSValueMultiply;
3540 break; 3397 break;
3541 case WebBlendModeScreen: 3398 case WebBlendModeScreen:
3542 m_value.valueID = CSSValueScreen; 3399 m_valueID = CSSValueScreen;
3543 break; 3400 break;
3544 case WebBlendModeOverlay: 3401 case WebBlendModeOverlay:
3545 m_value.valueID = CSSValueOverlay; 3402 m_valueID = CSSValueOverlay;
3546 break; 3403 break;
3547 case WebBlendModeDarken: 3404 case WebBlendModeDarken:
3548 m_value.valueID = CSSValueDarken; 3405 m_valueID = CSSValueDarken;
3549 break; 3406 break;
3550 case WebBlendModeLighten: 3407 case WebBlendModeLighten:
3551 m_value.valueID = CSSValueLighten; 3408 m_valueID = CSSValueLighten;
3552 break; 3409 break;
3553 case WebBlendModeColorDodge: 3410 case WebBlendModeColorDodge:
3554 m_value.valueID = CSSValueColorDodge; 3411 m_valueID = CSSValueColorDodge;
3555 break; 3412 break;
3556 case WebBlendModeColorBurn: 3413 case WebBlendModeColorBurn:
3557 m_value.valueID = CSSValueColorBurn; 3414 m_valueID = CSSValueColorBurn;
3558 break; 3415 break;
3559 case WebBlendModeHardLight: 3416 case WebBlendModeHardLight:
3560 m_value.valueID = CSSValueHardLight; 3417 m_valueID = CSSValueHardLight;
3561 break; 3418 break;
3562 case WebBlendModeSoftLight: 3419 case WebBlendModeSoftLight:
3563 m_value.valueID = CSSValueSoftLight; 3420 m_valueID = CSSValueSoftLight;
3564 break; 3421 break;
3565 case WebBlendModeDifference: 3422 case WebBlendModeDifference:
3566 m_value.valueID = CSSValueDifference; 3423 m_valueID = CSSValueDifference;
3567 break; 3424 break;
3568 case WebBlendModeExclusion: 3425 case WebBlendModeExclusion:
3569 m_value.valueID = CSSValueExclusion; 3426 m_valueID = CSSValueExclusion;
3570 break; 3427 break;
3571 case WebBlendModeHue: 3428 case WebBlendModeHue:
3572 m_value.valueID = CSSValueHue; 3429 m_valueID = CSSValueHue;
3573 break; 3430 break;
3574 case WebBlendModeSaturation: 3431 case WebBlendModeSaturation:
3575 m_value.valueID = CSSValueSaturation; 3432 m_valueID = CSSValueSaturation;
3576 break; 3433 break;
3577 case WebBlendModeColor: 3434 case WebBlendModeColor:
3578 m_value.valueID = CSSValueColor; 3435 m_valueID = CSSValueColor;
3579 break; 3436 break;
3580 case WebBlendModeLuminosity: 3437 case WebBlendModeLuminosity:
3581 m_value.valueID = CSSValueLuminosity; 3438 m_valueID = CSSValueLuminosity;
3582 break; 3439 break;
3583 } 3440 }
3584 } 3441 }
3585 3442
3586 template<> inline WebBlendMode CSSPrimitiveValue::convertTo() const 3443 template<> inline WebBlendMode CSSIdentifierValue::convertTo() const
3587 { 3444 {
3588 ASSERT(isValueID()); 3445 switch (m_valueID) {
3589 switch (m_value.valueID) {
3590 case CSSValueNormal: 3446 case CSSValueNormal:
3591 return WebBlendModeNormal; 3447 return WebBlendModeNormal;
3592 case CSSValueMultiply: 3448 case CSSValueMultiply:
3593 return WebBlendModeMultiply; 3449 return WebBlendModeMultiply;
3594 case CSSValueScreen: 3450 case CSSValueScreen:
3595 return WebBlendModeScreen; 3451 return WebBlendModeScreen;
3596 case CSSValueOverlay: 3452 case CSSValueOverlay:
3597 return WebBlendModeOverlay; 3453 return WebBlendModeOverlay;
3598 case CSSValueDarken: 3454 case CSSValueDarken:
3599 return WebBlendModeDarken; 3455 return WebBlendModeDarken;
(...skipping 20 matching lines...) Expand all
3620 case CSSValueLuminosity: 3476 case CSSValueLuminosity:
3621 return WebBlendModeLuminosity; 3477 return WebBlendModeLuminosity;
3622 default: 3478 default:
3623 break; 3479 break;
3624 } 3480 }
3625 3481
3626 ASSERT_NOT_REACHED(); 3482 ASSERT_NOT_REACHED();
3627 return WebBlendModeNormal; 3483 return WebBlendModeNormal;
3628 } 3484 }
3629 3485
3630 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineCap e) 3486 template<> inline CSSIdentifierValue::CSSIdentifierValue(LineCap e)
3631 : CSSValue(PrimitiveClass) 3487 : CSSValue(IdentifierClass)
3632 { 3488 {
3633 init(UnitType::ValueID);
3634 switch (e) { 3489 switch (e) {
3635 case ButtCap: 3490 case ButtCap:
3636 m_value.valueID = CSSValueButt; 3491 m_valueID = CSSValueButt;
3637 break; 3492 break;
3638 case RoundCap: 3493 case RoundCap:
3639 m_value.valueID = CSSValueRound; 3494 m_valueID = CSSValueRound;
3640 break; 3495 break;
3641 case SquareCap: 3496 case SquareCap:
3642 m_value.valueID = CSSValueSquare; 3497 m_valueID = CSSValueSquare;
3643 break; 3498 break;
3644 } 3499 }
3645 } 3500 }
3646 3501
3647 template<> inline LineCap CSSPrimitiveValue::convertTo() const 3502 template<> inline LineCap CSSIdentifierValue::convertTo() const
3648 { 3503 {
3649 ASSERT(isValueID()); 3504 switch (m_valueID) {
3650 switch (m_value.valueID) {
3651 case CSSValueButt: 3505 case CSSValueButt:
3652 return ButtCap; 3506 return ButtCap;
3653 case CSSValueRound: 3507 case CSSValueRound:
3654 return RoundCap; 3508 return RoundCap;
3655 case CSSValueSquare: 3509 case CSSValueSquare:
3656 return SquareCap; 3510 return SquareCap;
3657 default: 3511 default:
3658 break; 3512 break;
3659 } 3513 }
3660 3514
3661 ASSERT_NOT_REACHED(); 3515 ASSERT_NOT_REACHED();
3662 return ButtCap; 3516 return ButtCap;
3663 } 3517 }
3664 3518
3665 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineJoin e) 3519 template<> inline CSSIdentifierValue::CSSIdentifierValue(LineJoin e)
3666 : CSSValue(PrimitiveClass) 3520 : CSSValue(IdentifierClass)
3667 { 3521 {
3668 init(UnitType::ValueID);
3669 switch (e) { 3522 switch (e) {
3670 case MiterJoin: 3523 case MiterJoin:
3671 m_value.valueID = CSSValueMiter; 3524 m_valueID = CSSValueMiter;
3672 break; 3525 break;
3673 case RoundJoin: 3526 case RoundJoin:
3674 m_value.valueID = CSSValueRound; 3527 m_valueID = CSSValueRound;
3675 break; 3528 break;
3676 case BevelJoin: 3529 case BevelJoin:
3677 m_value.valueID = CSSValueBevel; 3530 m_valueID = CSSValueBevel;
3678 break; 3531 break;
3679 } 3532 }
3680 } 3533 }
3681 3534
3682 template<> inline LineJoin CSSPrimitiveValue::convertTo() const 3535 template<> inline LineJoin CSSIdentifierValue::convertTo() const
3683 { 3536 {
3684 ASSERT(isValueID()); 3537 switch (m_valueID) {
3685 switch (m_value.valueID) {
3686 case CSSValueMiter: 3538 case CSSValueMiter:
3687 return MiterJoin; 3539 return MiterJoin;
3688 case CSSValueRound: 3540 case CSSValueRound:
3689 return RoundJoin; 3541 return RoundJoin;
3690 case CSSValueBevel: 3542 case CSSValueBevel:
3691 return BevelJoin; 3543 return BevelJoin;
3692 default: 3544 default:
3693 break; 3545 break;
3694 } 3546 }
3695 3547
3696 ASSERT_NOT_REACHED(); 3548 ASSERT_NOT_REACHED();
3697 return MiterJoin; 3549 return MiterJoin;
3698 } 3550 }
3699 3551
3700 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(WindRule e) 3552 template<> inline CSSIdentifierValue::CSSIdentifierValue(WindRule e)
3701 : CSSValue(PrimitiveClass) 3553 : CSSValue(IdentifierClass)
3702 { 3554 {
3703 init(UnitType::ValueID);
3704 switch (e) { 3555 switch (e) {
3705 case RULE_NONZERO: 3556 case RULE_NONZERO:
3706 m_value.valueID = CSSValueNonzero; 3557 m_valueID = CSSValueNonzero;
3707 break; 3558 break;
3708 case RULE_EVENODD: 3559 case RULE_EVENODD:
3709 m_value.valueID = CSSValueEvenodd; 3560 m_valueID = CSSValueEvenodd;
3710 break; 3561 break;
3711 } 3562 }
3712 } 3563 }
3713 3564
3714 template<> inline WindRule CSSPrimitiveValue::convertTo() const 3565 template<> inline WindRule CSSIdentifierValue::convertTo() const
3715 { 3566 {
3716 ASSERT(isValueID()); 3567 switch (m_valueID) {
3717 switch (m_value.valueID) {
3718 case CSSValueNonzero: 3568 case CSSValueNonzero:
3719 return RULE_NONZERO; 3569 return RULE_NONZERO;
3720 case CSSValueEvenodd: 3570 case CSSValueEvenodd:
3721 return RULE_EVENODD; 3571 return RULE_EVENODD;
3722 default: 3572 default:
3723 break; 3573 break;
3724 } 3574 }
3725 3575
3726 ASSERT_NOT_REACHED(); 3576 ASSERT_NOT_REACHED();
3727 return RULE_NONZERO; 3577 return RULE_NONZERO;
3728 } 3578 }
3729 3579
3730 3580
3731 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EAlignmentBaseline e) 3581 template<> inline CSSIdentifierValue::CSSIdentifierValue(EAlignmentBaseline e)
3732 : CSSValue(PrimitiveClass) 3582 : CSSValue(IdentifierClass)
3733 { 3583 {
3734 init(UnitType::ValueID);
3735 switch (e) { 3584 switch (e) {
3736 case AB_AUTO: 3585 case AB_AUTO:
3737 m_value.valueID = CSSValueAuto; 3586 m_valueID = CSSValueAuto;
3738 break; 3587 break;
3739 case AB_BASELINE: 3588 case AB_BASELINE:
3740 m_value.valueID = CSSValueBaseline; 3589 m_valueID = CSSValueBaseline;
3741 break; 3590 break;
3742 case AB_BEFORE_EDGE: 3591 case AB_BEFORE_EDGE:
3743 m_value.valueID = CSSValueBeforeEdge; 3592 m_valueID = CSSValueBeforeEdge;
3744 break; 3593 break;
3745 case AB_TEXT_BEFORE_EDGE: 3594 case AB_TEXT_BEFORE_EDGE:
3746 m_value.valueID = CSSValueTextBeforeEdge; 3595 m_valueID = CSSValueTextBeforeEdge;
3747 break; 3596 break;
3748 case AB_MIDDLE: 3597 case AB_MIDDLE:
3749 m_value.valueID = CSSValueMiddle; 3598 m_valueID = CSSValueMiddle;
3750 break; 3599 break;
3751 case AB_CENTRAL: 3600 case AB_CENTRAL:
3752 m_value.valueID = CSSValueCentral; 3601 m_valueID = CSSValueCentral;
3753 break; 3602 break;
3754 case AB_AFTER_EDGE: 3603 case AB_AFTER_EDGE:
3755 m_value.valueID = CSSValueAfterEdge; 3604 m_valueID = CSSValueAfterEdge;
3756 break; 3605 break;
3757 case AB_TEXT_AFTER_EDGE: 3606 case AB_TEXT_AFTER_EDGE:
3758 m_value.valueID = CSSValueTextAfterEdge; 3607 m_valueID = CSSValueTextAfterEdge;
3759 break; 3608 break;
3760 case AB_IDEOGRAPHIC: 3609 case AB_IDEOGRAPHIC:
3761 m_value.valueID = CSSValueIdeographic; 3610 m_valueID = CSSValueIdeographic;
3762 break; 3611 break;
3763 case AB_ALPHABETIC: 3612 case AB_ALPHABETIC:
3764 m_value.valueID = CSSValueAlphabetic; 3613 m_valueID = CSSValueAlphabetic;
3765 break; 3614 break;
3766 case AB_HANGING: 3615 case AB_HANGING:
3767 m_value.valueID = CSSValueHanging; 3616 m_valueID = CSSValueHanging;
3768 break; 3617 break;
3769 case AB_MATHEMATICAL: 3618 case AB_MATHEMATICAL:
3770 m_value.valueID = CSSValueMathematical; 3619 m_valueID = CSSValueMathematical;
3771 break; 3620 break;
3772 } 3621 }
3773 } 3622 }
3774 3623
3775 template<> inline EAlignmentBaseline CSSPrimitiveValue::convertTo() const 3624 template<> inline EAlignmentBaseline CSSIdentifierValue::convertTo() const
3776 { 3625 {
3777 ASSERT(isValueID()); 3626 switch (m_valueID) {
3778 switch (m_value.valueID) {
3779 case CSSValueAuto: 3627 case CSSValueAuto:
3780 return AB_AUTO; 3628 return AB_AUTO;
3781 case CSSValueBaseline: 3629 case CSSValueBaseline:
3782 return AB_BASELINE; 3630 return AB_BASELINE;
3783 case CSSValueBeforeEdge: 3631 case CSSValueBeforeEdge:
3784 return AB_BEFORE_EDGE; 3632 return AB_BEFORE_EDGE;
3785 case CSSValueTextBeforeEdge: 3633 case CSSValueTextBeforeEdge:
3786 return AB_TEXT_BEFORE_EDGE; 3634 return AB_TEXT_BEFORE_EDGE;
3787 case CSSValueMiddle: 3635 case CSSValueMiddle:
3788 return AB_MIDDLE; 3636 return AB_MIDDLE;
(...skipping 12 matching lines...) Expand all
3801 case CSSValueMathematical: 3649 case CSSValueMathematical:
3802 return AB_MATHEMATICAL; 3650 return AB_MATHEMATICAL;
3803 default: 3651 default:
3804 break; 3652 break;
3805 } 3653 }
3806 3654
3807 ASSERT_NOT_REACHED(); 3655 ASSERT_NOT_REACHED();
3808 return AB_AUTO; 3656 return AB_AUTO;
3809 } 3657 }
3810 3658
3811 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBorderCollapse e) 3659 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBorderCollapse e)
3812 : CSSValue(PrimitiveClass) 3660 : CSSValue(IdentifierClass)
3813 { 3661 {
3814 init(UnitType::ValueID);
3815 switch (e) { 3662 switch (e) {
3816 case BorderCollapseSeparate: 3663 case BorderCollapseSeparate:
3817 m_value.valueID = CSSValueSeparate; 3664 m_valueID = CSSValueSeparate;
3818 break; 3665 break;
3819 case BorderCollapseCollapse: 3666 case BorderCollapseCollapse:
3820 m_value.valueID = CSSValueCollapse; 3667 m_valueID = CSSValueCollapse;
3821 break; 3668 break;
3822 } 3669 }
3823 } 3670 }
3824 3671
3825 template<> inline EBorderCollapse CSSPrimitiveValue::convertTo() const 3672 template<> inline EBorderCollapse CSSIdentifierValue::convertTo() const
3826 { 3673 {
3827 ASSERT(isValueID()); 3674 switch (m_valueID) {
3828 switch (m_value.valueID) {
3829 case CSSValueSeparate: 3675 case CSSValueSeparate:
3830 return BorderCollapseSeparate; 3676 return BorderCollapseSeparate;
3831 case CSSValueCollapse: 3677 case CSSValueCollapse:
3832 return BorderCollapseCollapse; 3678 return BorderCollapseCollapse;
3833 default: 3679 default:
3834 break; 3680 break;
3835 } 3681 }
3836 3682
3837 ASSERT_NOT_REACHED(); 3683 ASSERT_NOT_REACHED();
3838 return BorderCollapseSeparate; 3684 return BorderCollapseSeparate;
3839 } 3685 }
3840 3686
3841 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EImageRendering e) 3687 template<> inline CSSIdentifierValue::CSSIdentifierValue(EImageRendering e)
3842 : CSSValue(PrimitiveClass) 3688 : CSSValue(IdentifierClass)
3843 { 3689 {
3844 init(UnitType::ValueID);
3845 switch (e) { 3690 switch (e) {
3846 case ImageRenderingAuto: 3691 case ImageRenderingAuto:
3847 m_value.valueID = CSSValueAuto; 3692 m_valueID = CSSValueAuto;
3848 break; 3693 break;
3849 case ImageRenderingOptimizeSpeed: 3694 case ImageRenderingOptimizeSpeed:
3850 m_value.valueID = CSSValueOptimizeSpeed; 3695 m_valueID = CSSValueOptimizeSpeed;
3851 break; 3696 break;
3852 case ImageRenderingOptimizeQuality: 3697 case ImageRenderingOptimizeQuality:
3853 m_value.valueID = CSSValueOptimizeQuality; 3698 m_valueID = CSSValueOptimizeQuality;
3854 break; 3699 break;
3855 case ImageRenderingPixelated: 3700 case ImageRenderingPixelated:
3856 m_value.valueID = CSSValuePixelated; 3701 m_valueID = CSSValuePixelated;
3857 break; 3702 break;
3858 case ImageRenderingOptimizeContrast: 3703 case ImageRenderingOptimizeContrast:
3859 m_value.valueID = CSSValueWebkitOptimizeContrast; 3704 m_valueID = CSSValueWebkitOptimizeContrast;
3860 break; 3705 break;
3861 } 3706 }
3862 } 3707 }
3863 3708
3864 template<> inline EImageRendering CSSPrimitiveValue::convertTo() const 3709 template<> inline EImageRendering CSSIdentifierValue::convertTo() const
3865 { 3710 {
3866 ASSERT(isValueID()); 3711 switch (m_valueID) {
3867 switch (m_value.valueID) {
3868 case CSSValueAuto: 3712 case CSSValueAuto:
3869 return ImageRenderingAuto; 3713 return ImageRenderingAuto;
3870 case CSSValueOptimizeSpeed: 3714 case CSSValueOptimizeSpeed:
3871 return ImageRenderingOptimizeSpeed; 3715 return ImageRenderingOptimizeSpeed;
3872 case CSSValueOptimizeQuality: 3716 case CSSValueOptimizeQuality:
3873 return ImageRenderingOptimizeQuality; 3717 return ImageRenderingOptimizeQuality;
3874 case CSSValuePixelated: 3718 case CSSValuePixelated:
3875 return ImageRenderingPixelated; 3719 return ImageRenderingPixelated;
3876 case CSSValueWebkitOptimizeContrast: 3720 case CSSValueWebkitOptimizeContrast:
3877 return ImageRenderingOptimizeContrast; 3721 return ImageRenderingOptimizeContrast;
3878 default: 3722 default:
3879 break; 3723 break;
3880 } 3724 }
3881 3725
3882 ASSERT_NOT_REACHED(); 3726 ASSERT_NOT_REACHED();
3883 return ImageRenderingAuto; 3727 return ImageRenderingAuto;
3884 } 3728 }
3885 3729
3886 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETransformStyle3D e) 3730 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETransformStyle3D e)
3887 : CSSValue(PrimitiveClass) 3731 : CSSValue(IdentifierClass)
3888 { 3732 {
3889 init(UnitType::ValueID);
3890 switch (e) { 3733 switch (e) {
3891 case TransformStyle3DFlat: 3734 case TransformStyle3DFlat:
3892 m_value.valueID = CSSValueFlat; 3735 m_valueID = CSSValueFlat;
3893 break; 3736 break;
3894 case TransformStyle3DPreserve3D: 3737 case TransformStyle3DPreserve3D:
3895 m_value.valueID = CSSValuePreserve3d; 3738 m_valueID = CSSValuePreserve3d;
3896 break; 3739 break;
3897 } 3740 }
3898 } 3741 }
3899 3742
3900 template<> inline ETransformStyle3D CSSPrimitiveValue::convertTo() const 3743 template<> inline ETransformStyle3D CSSIdentifierValue::convertTo() const
3901 { 3744 {
3902 ASSERT(isValueID()); 3745 switch (m_valueID) {
3903 switch (m_value.valueID) {
3904 case CSSValueFlat: 3746 case CSSValueFlat:
3905 return TransformStyle3DFlat; 3747 return TransformStyle3DFlat;
3906 case CSSValuePreserve3d: 3748 case CSSValuePreserve3d:
3907 return TransformStyle3DPreserve3D; 3749 return TransformStyle3DPreserve3D;
3908 default: 3750 default:
3909 break; 3751 break;
3910 } 3752 }
3911 3753
3912 ASSERT_NOT_REACHED(); 3754 ASSERT_NOT_REACHED();
3913 return TransformStyle3DFlat; 3755 return TransformStyle3DFlat;
3914 } 3756 }
3915 3757
3916 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EBufferedRendering e) 3758 template<> inline CSSIdentifierValue::CSSIdentifierValue(EBufferedRendering e)
3917 : CSSValue(PrimitiveClass) 3759 : CSSValue(IdentifierClass)
3918 { 3760 {
3919 init(UnitType::ValueID);
3920 switch (e) { 3761 switch (e) {
3921 case BR_AUTO: 3762 case BR_AUTO:
3922 m_value.valueID = CSSValueAuto; 3763 m_valueID = CSSValueAuto;
3923 break; 3764 break;
3924 case BR_DYNAMIC: 3765 case BR_DYNAMIC:
3925 m_value.valueID = CSSValueDynamic; 3766 m_valueID = CSSValueDynamic;
3926 break; 3767 break;
3927 case BR_STATIC: 3768 case BR_STATIC:
3928 m_value.valueID = CSSValueStatic; 3769 m_valueID = CSSValueStatic;
3929 break; 3770 break;
3930 } 3771 }
3931 } 3772 }
3932 3773
3933 template<> inline EBufferedRendering CSSPrimitiveValue::convertTo() const 3774 template<> inline EBufferedRendering CSSIdentifierValue::convertTo() const
3934 { 3775 {
3935 ASSERT(isValueID()); 3776 switch (m_valueID) {
3936 switch (m_value.valueID) {
3937 case CSSValueAuto: 3777 case CSSValueAuto:
3938 return BR_AUTO; 3778 return BR_AUTO;
3939 case CSSValueDynamic: 3779 case CSSValueDynamic:
3940 return BR_DYNAMIC; 3780 return BR_DYNAMIC;
3941 case CSSValueStatic: 3781 case CSSValueStatic:
3942 return BR_STATIC; 3782 return BR_STATIC;
3943 default: 3783 default:
3944 break; 3784 break;
3945 } 3785 }
3946 3786
3947 ASSERT_NOT_REACHED(); 3787 ASSERT_NOT_REACHED();
3948 return BR_AUTO; 3788 return BR_AUTO;
3949 } 3789 }
3950 3790
3951 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EColorInterpolation e) 3791 template<> inline CSSIdentifierValue::CSSIdentifierValue(EColorInterpolation e)
3952 : CSSValue(PrimitiveClass) 3792 : CSSValue(IdentifierClass)
3953 { 3793 {
3954 init(UnitType::ValueID);
3955 switch (e) { 3794 switch (e) {
3956 case CI_AUTO: 3795 case CI_AUTO:
3957 m_value.valueID = CSSValueAuto; 3796 m_valueID = CSSValueAuto;
3958 break; 3797 break;
3959 case CI_SRGB: 3798 case CI_SRGB:
3960 m_value.valueID = CSSValueSRGB; 3799 m_valueID = CSSValueSRGB;
3961 break; 3800 break;
3962 case CI_LINEARRGB: 3801 case CI_LINEARRGB:
3963 m_value.valueID = CSSValueLinearRGB; 3802 m_valueID = CSSValueLinearRGB;
3964 break; 3803 break;
3965 } 3804 }
3966 } 3805 }
3967 3806
3968 template<> inline EColorInterpolation CSSPrimitiveValue::convertTo() const 3807 template<> inline EColorInterpolation CSSIdentifierValue::convertTo() const
3969 { 3808 {
3970 ASSERT(isValueID()); 3809 switch (m_valueID) {
3971 switch (m_value.valueID) {
3972 case CSSValueSRGB: 3810 case CSSValueSRGB:
3973 return CI_SRGB; 3811 return CI_SRGB;
3974 case CSSValueLinearRGB: 3812 case CSSValueLinearRGB:
3975 return CI_LINEARRGB; 3813 return CI_LINEARRGB;
3976 case CSSValueAuto: 3814 case CSSValueAuto:
3977 return CI_AUTO; 3815 return CI_AUTO;
3978 default: 3816 default:
3979 break; 3817 break;
3980 } 3818 }
3981 3819
3982 ASSERT_NOT_REACHED(); 3820 ASSERT_NOT_REACHED();
3983 return CI_AUTO; 3821 return CI_AUTO;
3984 } 3822 }
3985 3823
3986 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EColorRendering e) 3824 template<> inline CSSIdentifierValue::CSSIdentifierValue(EColorRendering e)
3987 : CSSValue(PrimitiveClass) 3825 : CSSValue(IdentifierClass)
3988 { 3826 {
3989 init(UnitType::ValueID);
3990 switch (e) { 3827 switch (e) {
3991 case CR_AUTO: 3828 case CR_AUTO:
3992 m_value.valueID = CSSValueAuto; 3829 m_valueID = CSSValueAuto;
3993 break; 3830 break;
3994 case CR_OPTIMIZESPEED: 3831 case CR_OPTIMIZESPEED:
3995 m_value.valueID = CSSValueOptimizeSpeed; 3832 m_valueID = CSSValueOptimizeSpeed;
3996 break; 3833 break;
3997 case CR_OPTIMIZEQUALITY: 3834 case CR_OPTIMIZEQUALITY:
3998 m_value.valueID = CSSValueOptimizeQuality; 3835 m_valueID = CSSValueOptimizeQuality;
3999 break; 3836 break;
4000 } 3837 }
4001 } 3838 }
4002 3839
4003 template<> inline EColorRendering CSSPrimitiveValue::convertTo() const 3840 template<> inline EColorRendering CSSIdentifierValue::convertTo() const
4004 { 3841 {
4005 ASSERT(isValueID()); 3842 switch (m_valueID) {
4006 switch (m_value.valueID) {
4007 case CSSValueOptimizeSpeed: 3843 case CSSValueOptimizeSpeed:
4008 return CR_OPTIMIZESPEED; 3844 return CR_OPTIMIZESPEED;
4009 case CSSValueOptimizeQuality: 3845 case CSSValueOptimizeQuality:
4010 return CR_OPTIMIZEQUALITY; 3846 return CR_OPTIMIZEQUALITY;
4011 case CSSValueAuto: 3847 case CSSValueAuto:
4012 return CR_AUTO; 3848 return CR_AUTO;
4013 default: 3849 default:
4014 break; 3850 break;
4015 } 3851 }
4016 3852
4017 ASSERT_NOT_REACHED(); 3853 ASSERT_NOT_REACHED();
4018 return CR_AUTO; 3854 return CR_AUTO;
4019 } 3855 }
4020 3856
4021 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDominantBaseline e) 3857 template<> inline CSSIdentifierValue::CSSIdentifierValue(EDominantBaseline e)
4022 : CSSValue(PrimitiveClass) 3858 : CSSValue(IdentifierClass)
4023 { 3859 {
4024 init(UnitType::ValueID);
4025 switch (e) { 3860 switch (e) {
4026 case DB_AUTO: 3861 case DB_AUTO:
4027 m_value.valueID = CSSValueAuto; 3862 m_valueID = CSSValueAuto;
4028 break; 3863 break;
4029 case DB_USE_SCRIPT: 3864 case DB_USE_SCRIPT:
4030 m_value.valueID = CSSValueUseScript; 3865 m_valueID = CSSValueUseScript;
4031 break; 3866 break;
4032 case DB_NO_CHANGE: 3867 case DB_NO_CHANGE:
4033 m_value.valueID = CSSValueNoChange; 3868 m_valueID = CSSValueNoChange;
4034 break; 3869 break;
4035 case DB_RESET_SIZE: 3870 case DB_RESET_SIZE:
4036 m_value.valueID = CSSValueResetSize; 3871 m_valueID = CSSValueResetSize;
4037 break; 3872 break;
4038 case DB_CENTRAL: 3873 case DB_CENTRAL:
4039 m_value.valueID = CSSValueCentral; 3874 m_valueID = CSSValueCentral;
4040 break; 3875 break;
4041 case DB_MIDDLE: 3876 case DB_MIDDLE:
4042 m_value.valueID = CSSValueMiddle; 3877 m_valueID = CSSValueMiddle;
4043 break; 3878 break;
4044 case DB_TEXT_BEFORE_EDGE: 3879 case DB_TEXT_BEFORE_EDGE:
4045 m_value.valueID = CSSValueTextBeforeEdge; 3880 m_valueID = CSSValueTextBeforeEdge;
4046 break; 3881 break;
4047 case DB_TEXT_AFTER_EDGE: 3882 case DB_TEXT_AFTER_EDGE:
4048 m_value.valueID = CSSValueTextAfterEdge; 3883 m_valueID = CSSValueTextAfterEdge;
4049 break; 3884 break;
4050 case DB_IDEOGRAPHIC: 3885 case DB_IDEOGRAPHIC:
4051 m_value.valueID = CSSValueIdeographic; 3886 m_valueID = CSSValueIdeographic;
4052 break; 3887 break;
4053 case DB_ALPHABETIC: 3888 case DB_ALPHABETIC:
4054 m_value.valueID = CSSValueAlphabetic; 3889 m_valueID = CSSValueAlphabetic;
4055 break; 3890 break;
4056 case DB_HANGING: 3891 case DB_HANGING:
4057 m_value.valueID = CSSValueHanging; 3892 m_valueID = CSSValueHanging;
4058 break; 3893 break;
4059 case DB_MATHEMATICAL: 3894 case DB_MATHEMATICAL:
4060 m_value.valueID = CSSValueMathematical; 3895 m_valueID = CSSValueMathematical;
4061 break; 3896 break;
4062 } 3897 }
4063 } 3898 }
4064 3899
4065 template<> inline EDominantBaseline CSSPrimitiveValue::convertTo() const 3900 template<> inline EDominantBaseline CSSIdentifierValue::convertTo() const
4066 { 3901 {
4067 ASSERT(isValueID()); 3902 switch (m_valueID) {
4068 switch (m_value.valueID) {
4069 case CSSValueAuto: 3903 case CSSValueAuto:
4070 return DB_AUTO; 3904 return DB_AUTO;
4071 case CSSValueUseScript: 3905 case CSSValueUseScript:
4072 return DB_USE_SCRIPT; 3906 return DB_USE_SCRIPT;
4073 case CSSValueNoChange: 3907 case CSSValueNoChange:
4074 return DB_NO_CHANGE; 3908 return DB_NO_CHANGE;
4075 case CSSValueResetSize: 3909 case CSSValueResetSize:
4076 return DB_RESET_SIZE; 3910 return DB_RESET_SIZE;
4077 case CSSValueIdeographic: 3911 case CSSValueIdeographic:
4078 return DB_IDEOGRAPHIC; 3912 return DB_IDEOGRAPHIC;
(...skipping 12 matching lines...) Expand all
4091 case CSSValueTextBeforeEdge: 3925 case CSSValueTextBeforeEdge:
4092 return DB_TEXT_BEFORE_EDGE; 3926 return DB_TEXT_BEFORE_EDGE;
4093 default: 3927 default:
4094 break; 3928 break;
4095 } 3929 }
4096 3930
4097 ASSERT_NOT_REACHED(); 3931 ASSERT_NOT_REACHED();
4098 return DB_AUTO; 3932 return DB_AUTO;
4099 } 3933 }
4100 3934
4101 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EShapeRendering e) 3935 template<> inline CSSIdentifierValue::CSSIdentifierValue(EShapeRendering e)
4102 : CSSValue(PrimitiveClass) 3936 : CSSValue(IdentifierClass)
4103 { 3937 {
4104 init(UnitType::ValueID);
4105 switch (e) { 3938 switch (e) {
4106 case SR_AUTO: 3939 case SR_AUTO:
4107 m_value.valueID = CSSValueAuto; 3940 m_valueID = CSSValueAuto;
4108 break; 3941 break;
4109 case SR_OPTIMIZESPEED: 3942 case SR_OPTIMIZESPEED:
4110 m_value.valueID = CSSValueOptimizeSpeed; 3943 m_valueID = CSSValueOptimizeSpeed;
4111 break; 3944 break;
4112 case SR_CRISPEDGES: 3945 case SR_CRISPEDGES:
4113 m_value.valueID = CSSValueCrispEdges; 3946 m_valueID = CSSValueCrispEdges;
4114 break; 3947 break;
4115 case SR_GEOMETRICPRECISION: 3948 case SR_GEOMETRICPRECISION:
4116 m_value.valueID = CSSValueGeometricPrecision; 3949 m_valueID = CSSValueGeometricPrecision;
4117 break; 3950 break;
4118 } 3951 }
4119 } 3952 }
4120 3953
4121 template<> inline EShapeRendering CSSPrimitiveValue::convertTo() const 3954 template<> inline EShapeRendering CSSIdentifierValue::convertTo() const
4122 { 3955 {
4123 ASSERT(isValueID()); 3956 switch (m_valueID) {
4124 switch (m_value.valueID) {
4125 case CSSValueAuto: 3957 case CSSValueAuto:
4126 return SR_AUTO; 3958 return SR_AUTO;
4127 case CSSValueOptimizeSpeed: 3959 case CSSValueOptimizeSpeed:
4128 return SR_OPTIMIZESPEED; 3960 return SR_OPTIMIZESPEED;
4129 case CSSValueCrispEdges: 3961 case CSSValueCrispEdges:
4130 return SR_CRISPEDGES; 3962 return SR_CRISPEDGES;
4131 case CSSValueGeometricPrecision: 3963 case CSSValueGeometricPrecision:
4132 return SR_GEOMETRICPRECISION; 3964 return SR_GEOMETRICPRECISION;
4133 default: 3965 default:
4134 break; 3966 break;
4135 } 3967 }
4136 3968
4137 ASSERT_NOT_REACHED(); 3969 ASSERT_NOT_REACHED();
4138 return SR_AUTO; 3970 return SR_AUTO;
4139 } 3971 }
4140 3972
4141 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ETextAnchor e) 3973 template<> inline CSSIdentifierValue::CSSIdentifierValue(ETextAnchor e)
4142 : CSSValue(PrimitiveClass) 3974 : CSSValue(IdentifierClass)
4143 { 3975 {
4144 init(UnitType::ValueID);
4145 switch (e) { 3976 switch (e) {
4146 case TA_START: 3977 case TA_START:
4147 m_value.valueID = CSSValueStart; 3978 m_valueID = CSSValueStart;
4148 break; 3979 break;
4149 case TA_MIDDLE: 3980 case TA_MIDDLE:
4150 m_value.valueID = CSSValueMiddle; 3981 m_valueID = CSSValueMiddle;
4151 break; 3982 break;
4152 case TA_END: 3983 case TA_END:
4153 m_value.valueID = CSSValueEnd; 3984 m_valueID = CSSValueEnd;
4154 break; 3985 break;
4155 } 3986 }
4156 } 3987 }
4157 3988
4158 template<> inline ETextAnchor CSSPrimitiveValue::convertTo() const 3989 template<> inline ETextAnchor CSSIdentifierValue::convertTo() const
4159 { 3990 {
4160 ASSERT(isValueID()); 3991 switch (m_valueID) {
4161 switch (m_value.valueID) {
4162 case CSSValueStart: 3992 case CSSValueStart:
4163 return TA_START; 3993 return TA_START;
4164 case CSSValueMiddle: 3994 case CSSValueMiddle:
4165 return TA_MIDDLE; 3995 return TA_MIDDLE;
4166 case CSSValueEnd: 3996 case CSSValueEnd:
4167 return TA_END; 3997 return TA_END;
4168 default: 3998 default:
4169 break; 3999 break;
4170 } 4000 }
4171 4001
4172 ASSERT_NOT_REACHED(); 4002 ASSERT_NOT_REACHED();
4173 return TA_START; 4003 return TA_START;
4174 } 4004 }
4175 4005
4176 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EVectorEffect e) 4006 template<> inline CSSIdentifierValue::CSSIdentifierValue(EVectorEffect e)
4177 : CSSValue(PrimitiveClass) 4007 : CSSValue(IdentifierClass)
4178 { 4008 {
4179 init(UnitType::ValueID);
4180 switch (e) { 4009 switch (e) {
4181 case VE_NONE: 4010 case VE_NONE:
4182 m_value.valueID = CSSValueNone; 4011 m_valueID = CSSValueNone;
4183 break; 4012 break;
4184 case VE_NON_SCALING_STROKE: 4013 case VE_NON_SCALING_STROKE:
4185 m_value.valueID = CSSValueNonScalingStroke; 4014 m_valueID = CSSValueNonScalingStroke;
4186 break; 4015 break;
4187 } 4016 }
4188 } 4017 }
4189 4018
4190 template<> inline EVectorEffect CSSPrimitiveValue::convertTo() const 4019 template<> inline EVectorEffect CSSIdentifierValue::convertTo() const
4191 { 4020 {
4192 ASSERT(isValueID()); 4021 switch (m_valueID) {
4193 switch (m_value.valueID) {
4194 case CSSValueNone: 4022 case CSSValueNone:
4195 return VE_NONE; 4023 return VE_NONE;
4196 case CSSValueNonScalingStroke: 4024 case CSSValueNonScalingStroke:
4197 return VE_NON_SCALING_STROKE; 4025 return VE_NON_SCALING_STROKE;
4198 default: 4026 default:
4199 break; 4027 break;
4200 } 4028 }
4201 4029
4202 ASSERT_NOT_REACHED(); 4030 ASSERT_NOT_REACHED();
4203 return VE_NONE; 4031 return VE_NONE;
4204 } 4032 }
4205 4033
4206 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EPaintOrderType e) 4034 template<> inline CSSIdentifierValue::CSSIdentifierValue(EPaintOrderType e)
4207 : CSSValue(PrimitiveClass) 4035 : CSSValue(IdentifierClass)
4208 { 4036 {
4209 init(UnitType::ValueID);
4210 switch (e) { 4037 switch (e) {
4211 case PT_FILL: 4038 case PT_FILL:
4212 m_value.valueID = CSSValueFill; 4039 m_valueID = CSSValueFill;
4213 break; 4040 break;
4214 case PT_STROKE: 4041 case PT_STROKE:
4215 m_value.valueID = CSSValueStroke; 4042 m_valueID = CSSValueStroke;
4216 break; 4043 break;
4217 case PT_MARKERS: 4044 case PT_MARKERS:
4218 m_value.valueID = CSSValueMarkers; 4045 m_valueID = CSSValueMarkers;
4219 break; 4046 break;
4220 default: 4047 default:
4221 ASSERT_NOT_REACHED(); 4048 ASSERT_NOT_REACHED();
4222 m_value.valueID = CSSValueFill; 4049 m_valueID = CSSValueFill;
4223 break; 4050 break;
4224 } 4051 }
4225 } 4052 }
4226 4053
4227 template<> inline EPaintOrderType CSSPrimitiveValue::convertTo() const 4054 template<> inline EPaintOrderType CSSIdentifierValue::convertTo() const
4228 { 4055 {
4229 ASSERT(isValueID()); 4056 switch (m_valueID) {
4230 switch (m_value.valueID) {
4231 case CSSValueFill: 4057 case CSSValueFill:
4232 return PT_FILL; 4058 return PT_FILL;
4233 case CSSValueStroke: 4059 case CSSValueStroke:
4234 return PT_STROKE; 4060 return PT_STROKE;
4235 case CSSValueMarkers: 4061 case CSSValueMarkers:
4236 return PT_MARKERS; 4062 return PT_MARKERS;
4237 default: 4063 default:
4238 break; 4064 break;
4239 } 4065 }
4240 4066
4241 ASSERT_NOT_REACHED(); 4067 ASSERT_NOT_REACHED();
4242 return PT_NONE; 4068 return PT_NONE;
4243 } 4069 }
4244 4070
4245 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EMaskType e) 4071 template<> inline CSSIdentifierValue::CSSIdentifierValue(EMaskType e)
4246 : CSSValue(PrimitiveClass) 4072 : CSSValue(IdentifierClass)
4247 { 4073 {
4248 init(UnitType::ValueID);
4249 switch (e) { 4074 switch (e) {
4250 case MT_LUMINANCE: 4075 case MT_LUMINANCE:
4251 m_value.valueID = CSSValueLuminance; 4076 m_valueID = CSSValueLuminance;
4252 break; 4077 break;
4253 case MT_ALPHA: 4078 case MT_ALPHA:
4254 m_value.valueID = CSSValueAlpha; 4079 m_valueID = CSSValueAlpha;
4255 break; 4080 break;
4256 } 4081 }
4257 } 4082 }
4258 4083
4259 template<> inline EMaskType CSSPrimitiveValue::convertTo() const 4084 template<> inline EMaskType CSSIdentifierValue::convertTo() const
4260 { 4085 {
4261 ASSERT(isValueID()); 4086 switch (m_valueID) {
4262 switch (m_value.valueID) {
4263 case CSSValueLuminance: 4087 case CSSValueLuminance:
4264 return MT_LUMINANCE; 4088 return MT_LUMINANCE;
4265 case CSSValueAlpha: 4089 case CSSValueAlpha:
4266 return MT_ALPHA; 4090 return MT_ALPHA;
4267 default: 4091 default:
4268 break; 4092 break;
4269 } 4093 }
4270 4094
4271 ASSERT_NOT_REACHED(); 4095 ASSERT_NOT_REACHED();
4272 return MT_LUMINANCE; 4096 return MT_LUMINANCE;
4273 } 4097 }
4274 4098
4275 template<> inline TouchAction CSSPrimitiveValue::convertTo() const 4099 template<> inline TouchAction CSSIdentifierValue::convertTo() const
4276 { 4100 {
4277 ASSERT(isValueID()); 4101 switch (m_valueID) {
4278 switch (m_value.valueID) {
4279 case CSSValueNone: 4102 case CSSValueNone:
4280 return TouchActionNone; 4103 return TouchActionNone;
4281 case CSSValueAuto: 4104 case CSSValueAuto:
4282 return TouchActionAuto; 4105 return TouchActionAuto;
4283 case CSSValuePanLeft: 4106 case CSSValuePanLeft:
4284 return TouchActionPanLeft; 4107 return TouchActionPanLeft;
4285 case CSSValuePanRight: 4108 case CSSValuePanRight:
4286 return TouchActionPanRight; 4109 return TouchActionPanRight;
4287 case CSSValuePanX: 4110 case CSSValuePanX:
4288 return TouchActionPanX; 4111 return TouchActionPanX;
4289 case CSSValuePanUp: 4112 case CSSValuePanUp:
4290 return TouchActionPanUp; 4113 return TouchActionPanUp;
4291 case CSSValuePanDown: 4114 case CSSValuePanDown:
4292 return TouchActionPanDown; 4115 return TouchActionPanDown;
4293 case CSSValuePanY: 4116 case CSSValuePanY:
4294 return TouchActionPanY; 4117 return TouchActionPanY;
4295 case CSSValueManipulation: 4118 case CSSValueManipulation:
4296 return TouchActionManipulation; 4119 return TouchActionManipulation;
4297 case CSSValuePinchZoom: 4120 case CSSValuePinchZoom:
4298 return TouchActionPinchZoom; 4121 return TouchActionPinchZoom;
4299 default: 4122 default:
4300 break; 4123 break;
4301 } 4124 }
4302 4125
4303 ASSERT_NOT_REACHED(); 4126 ASSERT_NOT_REACHED();
4304 return TouchActionNone; 4127 return TouchActionNone;
4305 } 4128 }
4306 4129
4307 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EIsolation i) 4130 template<> inline CSSIdentifierValue::CSSIdentifierValue(EIsolation i)
4308 : CSSValue(PrimitiveClass) 4131 : CSSValue(IdentifierClass)
4309 { 4132 {
4310 init(UnitType::ValueID);
4311 switch (i) { 4133 switch (i) {
4312 case IsolationAuto: 4134 case IsolationAuto:
4313 m_value.valueID = CSSValueAuto; 4135 m_valueID = CSSValueAuto;
4314 break; 4136 break;
4315 case IsolationIsolate: 4137 case IsolationIsolate:
4316 m_value.valueID = CSSValueIsolate; 4138 m_valueID = CSSValueIsolate;
4317 break; 4139 break;
4318 } 4140 }
4319 } 4141 }
4320 4142
4321 template<> inline EIsolation CSSPrimitiveValue::convertTo() const 4143 template<> inline EIsolation CSSIdentifierValue::convertTo() const
4322 { 4144 {
4323 ASSERT(isValueID()); 4145 switch (m_valueID) {
4324 switch (m_value.valueID) {
4325 case CSSValueAuto: 4146 case CSSValueAuto:
4326 return IsolationAuto; 4147 return IsolationAuto;
4327 case CSSValueIsolate: 4148 case CSSValueIsolate:
4328 return IsolationIsolate; 4149 return IsolationIsolate;
4329 default: 4150 default:
4330 break; 4151 break;
4331 } 4152 }
4332 4153
4333 ASSERT_NOT_REACHED(); 4154 ASSERT_NOT_REACHED();
4334 return IsolationAuto; 4155 return IsolationAuto;
4335 } 4156 }
4336 4157
4337 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CSSBoxType cssBox) 4158 template<> inline CSSIdentifierValue::CSSIdentifierValue(CSSBoxType cssBox)
4338 : CSSValue(PrimitiveClass) 4159 : CSSValue(IdentifierClass)
4339 { 4160 {
4340 init(UnitType::ValueID);
4341 switch (cssBox) { 4161 switch (cssBox) {
4342 case MarginBox: 4162 case MarginBox:
4343 m_value.valueID = CSSValueMarginBox; 4163 m_valueID = CSSValueMarginBox;
4344 break; 4164 break;
4345 case BorderBox: 4165 case BorderBox:
4346 m_value.valueID = CSSValueBorderBox; 4166 m_valueID = CSSValueBorderBox;
4347 break; 4167 break;
4348 case PaddingBox: 4168 case PaddingBox:
4349 m_value.valueID = CSSValuePaddingBox; 4169 m_valueID = CSSValuePaddingBox;
4350 break; 4170 break;
4351 case ContentBox: 4171 case ContentBox:
4352 m_value.valueID = CSSValueContentBox; 4172 m_valueID = CSSValueContentBox;
4353 break; 4173 break;
4354 case BoxMissing: 4174 case BoxMissing:
4355 // The missing box should convert to a null primitive value. 4175 // The missing box should convert to a null primitive value.
4356 ASSERT_NOT_REACHED(); 4176 ASSERT_NOT_REACHED();
4357 } 4177 }
4358 } 4178 }
4359 4179
4360 template<> inline CSSBoxType CSSPrimitiveValue::convertTo() const 4180 template<> inline CSSBoxType CSSIdentifierValue::convertTo() const
4361 { 4181 {
4362 switch (getValueID()) { 4182 switch (getValueID()) {
4363 case CSSValueMarginBox: 4183 case CSSValueMarginBox:
4364 return MarginBox; 4184 return MarginBox;
4365 case CSSValueBorderBox: 4185 case CSSValueBorderBox:
4366 return BorderBox; 4186 return BorderBox;
4367 case CSSValuePaddingBox: 4187 case CSSValuePaddingBox:
4368 return PaddingBox; 4188 return PaddingBox;
4369 case CSSValueContentBox: 4189 case CSSValueContentBox:
4370 return ContentBox; 4190 return ContentBox;
4371 default: 4191 default:
4372 break; 4192 break;
4373 } 4193 }
4374 ASSERT_NOT_REACHED(); 4194 ASSERT_NOT_REACHED();
4375 return ContentBox; 4195 return ContentBox;
4376 } 4196 }
4377 4197
4378 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ItemPosition itemPosition ) 4198 template<> inline CSSIdentifierValue::CSSIdentifierValue(ItemPosition itemPositi on)
4379 : CSSValue(PrimitiveClass) 4199 : CSSValue(IdentifierClass)
4380 { 4200 {
4381 init(UnitType::ValueID);
4382 switch (itemPosition) { 4201 switch (itemPosition) {
4383 case ItemPositionAuto: 4202 case ItemPositionAuto:
4384 // The 'auto' values might have been already resolved. 4203 // The 'auto' values might have been already resolved.
4385 NOTREACHED(); 4204 NOTREACHED();
4386 m_value.valueID = CSSValueNormal; 4205 m_valueID = CSSValueNormal;
4387 break; 4206 break;
4388 case ItemPositionNormal: 4207 case ItemPositionNormal:
4389 m_value.valueID = CSSValueNormal; 4208 m_valueID = CSSValueNormal;
4390 break; 4209 break;
4391 case ItemPositionStretch: 4210 case ItemPositionStretch:
4392 m_value.valueID = CSSValueStretch; 4211 m_valueID = CSSValueStretch;
4393 break; 4212 break;
4394 case ItemPositionBaseline: 4213 case ItemPositionBaseline:
4395 m_value.valueID = CSSValueBaseline; 4214 m_valueID = CSSValueBaseline;
4396 break; 4215 break;
4397 case ItemPositionLastBaseline: 4216 case ItemPositionLastBaseline:
4398 m_value.valueID = CSSValueLastBaseline; 4217 m_valueID = CSSValueLastBaseline;
4399 break; 4218 break;
4400 case ItemPositionCenter: 4219 case ItemPositionCenter:
4401 m_value.valueID = CSSValueCenter; 4220 m_valueID = CSSValueCenter;
4402 break; 4221 break;
4403 case ItemPositionStart: 4222 case ItemPositionStart:
4404 m_value.valueID = CSSValueStart; 4223 m_valueID = CSSValueStart;
4405 break; 4224 break;
4406 case ItemPositionEnd: 4225 case ItemPositionEnd:
4407 m_value.valueID = CSSValueEnd; 4226 m_valueID = CSSValueEnd;
4408 break; 4227 break;
4409 case ItemPositionSelfStart: 4228 case ItemPositionSelfStart:
4410 m_value.valueID = CSSValueSelfStart; 4229 m_valueID = CSSValueSelfStart;
4411 break; 4230 break;
4412 case ItemPositionSelfEnd: 4231 case ItemPositionSelfEnd:
4413 m_value.valueID = CSSValueSelfEnd; 4232 m_valueID = CSSValueSelfEnd;
4414 break; 4233 break;
4415 case ItemPositionFlexStart: 4234 case ItemPositionFlexStart:
4416 m_value.valueID = CSSValueFlexStart; 4235 m_valueID = CSSValueFlexStart;
4417 break; 4236 break;
4418 case ItemPositionFlexEnd: 4237 case ItemPositionFlexEnd:
4419 m_value.valueID = CSSValueFlexEnd; 4238 m_valueID = CSSValueFlexEnd;
4420 break; 4239 break;
4421 case ItemPositionLeft: 4240 case ItemPositionLeft:
4422 m_value.valueID = CSSValueLeft; 4241 m_valueID = CSSValueLeft;
4423 break; 4242 break;
4424 case ItemPositionRight: 4243 case ItemPositionRight:
4425 m_value.valueID = CSSValueRight; 4244 m_valueID = CSSValueRight;
4426 break; 4245 break;
4427 } 4246 }
4428 } 4247 }
4429 4248
4430 template<> inline ItemPosition CSSPrimitiveValue::convertTo() const 4249 template<> inline ItemPosition CSSIdentifierValue::convertTo() const
4431 { 4250 {
4432 switch (m_value.valueID) { 4251 switch (m_valueID) {
4433 case CSSValueAuto: 4252 case CSSValueAuto:
4434 return ItemPositionAuto; 4253 return ItemPositionAuto;
4435 case CSSValueNormal: 4254 case CSSValueNormal:
4436 return ItemPositionNormal; 4255 return ItemPositionNormal;
4437 case CSSValueStretch: 4256 case CSSValueStretch:
4438 return ItemPositionStretch; 4257 return ItemPositionStretch;
4439 case CSSValueBaseline: 4258 case CSSValueBaseline:
4440 return ItemPositionBaseline; 4259 return ItemPositionBaseline;
4441 case CSSValueLastBaseline: 4260 case CSSValueLastBaseline:
4442 return ItemPositionLastBaseline; 4261 return ItemPositionLastBaseline;
(...skipping 15 matching lines...) Expand all
4458 return ItemPositionLeft; 4277 return ItemPositionLeft;
4459 case CSSValueRight: 4278 case CSSValueRight:
4460 return ItemPositionRight; 4279 return ItemPositionRight;
4461 default: 4280 default:
4462 break; 4281 break;
4463 } 4282 }
4464 ASSERT_NOT_REACHED(); 4283 ASSERT_NOT_REACHED();
4465 return ItemPositionAuto; 4284 return ItemPositionAuto;
4466 } 4285 }
4467 4286
4468 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ContentPosition contentPo sition) 4287 template<> inline CSSIdentifierValue::CSSIdentifierValue(ContentPosition content Position)
4469 : CSSValue(PrimitiveClass) 4288 : CSSValue(IdentifierClass)
4470 { 4289 {
4471 init(UnitType::ValueID);
4472 switch (contentPosition) { 4290 switch (contentPosition) {
4473 case ContentPositionNormal: 4291 case ContentPositionNormal:
4474 m_value.valueID = CSSValueNormal; 4292 m_valueID = CSSValueNormal;
4475 break; 4293 break;
4476 case ContentPositionBaseline: 4294 case ContentPositionBaseline:
4477 m_value.valueID = CSSValueBaseline; 4295 m_valueID = CSSValueBaseline;
4478 break; 4296 break;
4479 case ContentPositionLastBaseline: 4297 case ContentPositionLastBaseline:
4480 m_value.valueID = CSSValueLastBaseline; 4298 m_valueID = CSSValueLastBaseline;
4481 break; 4299 break;
4482 case ContentPositionCenter: 4300 case ContentPositionCenter:
4483 m_value.valueID = CSSValueCenter; 4301 m_valueID = CSSValueCenter;
4484 break; 4302 break;
4485 case ContentPositionStart: 4303 case ContentPositionStart:
4486 m_value.valueID = CSSValueStart; 4304 m_valueID = CSSValueStart;
4487 break; 4305 break;
4488 case ContentPositionEnd: 4306 case ContentPositionEnd:
4489 m_value.valueID = CSSValueEnd; 4307 m_valueID = CSSValueEnd;
4490 break; 4308 break;
4491 case ContentPositionFlexStart: 4309 case ContentPositionFlexStart:
4492 m_value.valueID = CSSValueFlexStart; 4310 m_valueID = CSSValueFlexStart;
4493 break; 4311 break;
4494 case ContentPositionFlexEnd: 4312 case ContentPositionFlexEnd:
4495 m_value.valueID = CSSValueFlexEnd; 4313 m_valueID = CSSValueFlexEnd;
4496 break; 4314 break;
4497 case ContentPositionLeft: 4315 case ContentPositionLeft:
4498 m_value.valueID = CSSValueLeft; 4316 m_valueID = CSSValueLeft;
4499 break; 4317 break;
4500 case ContentPositionRight: 4318 case ContentPositionRight:
4501 m_value.valueID = CSSValueRight; 4319 m_valueID = CSSValueRight;
4502 break; 4320 break;
4503 } 4321 }
4504 } 4322 }
4505 4323
4506 template<> inline ContentPosition CSSPrimitiveValue::convertTo() const 4324 template<> inline ContentPosition CSSIdentifierValue::convertTo() const
4507 { 4325 {
4508 switch (m_value.valueID) { 4326 switch (m_valueID) {
4509 case CSSValueNormal: 4327 case CSSValueNormal:
4510 return ContentPositionNormal; 4328 return ContentPositionNormal;
4511 case CSSValueBaseline: 4329 case CSSValueBaseline:
4512 return ContentPositionBaseline; 4330 return ContentPositionBaseline;
4513 case CSSValueLastBaseline: 4331 case CSSValueLastBaseline:
4514 return ContentPositionLastBaseline; 4332 return ContentPositionLastBaseline;
4515 case CSSValueCenter: 4333 case CSSValueCenter:
4516 return ContentPositionCenter; 4334 return ContentPositionCenter;
4517 case CSSValueStart: 4335 case CSSValueStart:
4518 return ContentPositionStart; 4336 return ContentPositionStart;
4519 case CSSValueEnd: 4337 case CSSValueEnd:
4520 return ContentPositionEnd; 4338 return ContentPositionEnd;
4521 case CSSValueFlexStart: 4339 case CSSValueFlexStart:
4522 return ContentPositionFlexStart; 4340 return ContentPositionFlexStart;
4523 case CSSValueFlexEnd: 4341 case CSSValueFlexEnd:
4524 return ContentPositionFlexEnd; 4342 return ContentPositionFlexEnd;
4525 case CSSValueLeft: 4343 case CSSValueLeft:
4526 return ContentPositionLeft; 4344 return ContentPositionLeft;
4527 case CSSValueRight: 4345 case CSSValueRight:
4528 return ContentPositionRight; 4346 return ContentPositionRight;
4529 default: 4347 default:
4530 break; 4348 break;
4531 } 4349 }
4532 ASSERT_NOT_REACHED(); 4350 ASSERT_NOT_REACHED();
4533 return ContentPositionNormal; 4351 return ContentPositionNormal;
4534 } 4352 }
4535 4353
4536 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ContentDistributionType c ontentDistribution) 4354 template<> inline CSSIdentifierValue::CSSIdentifierValue(ContentDistributionType contentDistribution)
4537 : CSSValue(PrimitiveClass) 4355 : CSSValue(IdentifierClass)
4538 { 4356 {
4539 init(UnitType::ValueID);
4540 switch (contentDistribution) { 4357 switch (contentDistribution) {
4541 case ContentDistributionDefault: 4358 case ContentDistributionDefault:
4542 m_value.valueID = CSSValueDefault; 4359 m_valueID = CSSValueDefault;
4543 break; 4360 break;
4544 case ContentDistributionSpaceBetween: 4361 case ContentDistributionSpaceBetween:
4545 m_value.valueID = CSSValueSpaceBetween; 4362 m_valueID = CSSValueSpaceBetween;
4546 break; 4363 break;
4547 case ContentDistributionSpaceAround: 4364 case ContentDistributionSpaceAround:
4548 m_value.valueID = CSSValueSpaceAround; 4365 m_valueID = CSSValueSpaceAround;
4549 break; 4366 break;
4550 case ContentDistributionSpaceEvenly: 4367 case ContentDistributionSpaceEvenly:
4551 m_value.valueID = CSSValueSpaceEvenly; 4368 m_valueID = CSSValueSpaceEvenly;
4552 break; 4369 break;
4553 case ContentDistributionStretch: 4370 case ContentDistributionStretch:
4554 m_value.valueID = CSSValueStretch; 4371 m_valueID = CSSValueStretch;
4555 break; 4372 break;
4556 } 4373 }
4557 } 4374 }
4558 4375
4559 template<> inline ContentDistributionType CSSPrimitiveValue::convertTo() const 4376 template<> inline ContentDistributionType CSSIdentifierValue::convertTo() const
4560 { 4377 {
4561 switch (m_value.valueID) { 4378 switch (m_valueID) {
4562 case CSSValueSpaceBetween: 4379 case CSSValueSpaceBetween:
4563 return ContentDistributionSpaceBetween; 4380 return ContentDistributionSpaceBetween;
4564 case CSSValueSpaceAround: 4381 case CSSValueSpaceAround:
4565 return ContentDistributionSpaceAround; 4382 return ContentDistributionSpaceAround;
4566 case CSSValueSpaceEvenly: 4383 case CSSValueSpaceEvenly:
4567 return ContentDistributionSpaceEvenly; 4384 return ContentDistributionSpaceEvenly;
4568 case CSSValueStretch: 4385 case CSSValueStretch:
4569 return ContentDistributionStretch; 4386 return ContentDistributionStretch;
4570 default: 4387 default:
4571 break; 4388 break;
4572 } 4389 }
4573 ASSERT_NOT_REACHED(); 4390 ASSERT_NOT_REACHED();
4574 return ContentDistributionStretch; 4391 return ContentDistributionStretch;
4575 } 4392 }
4576 4393
4577 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(OverflowAlignment overflo wAlignment) 4394 template<> inline CSSIdentifierValue::CSSIdentifierValue(OverflowAlignment overf lowAlignment)
4578 : CSSValue(PrimitiveClass) 4395 : CSSValue(IdentifierClass)
4579 { 4396 {
4580 init(UnitType::ValueID);
4581 switch (overflowAlignment) { 4397 switch (overflowAlignment) {
4582 case OverflowAlignmentDefault: 4398 case OverflowAlignmentDefault:
4583 m_value.valueID = CSSValueDefault; 4399 m_valueID = CSSValueDefault;
4584 break; 4400 break;
4585 case OverflowAlignmentUnsafe: 4401 case OverflowAlignmentUnsafe:
4586 m_value.valueID = CSSValueUnsafe; 4402 m_valueID = CSSValueUnsafe;
4587 break; 4403 break;
4588 case OverflowAlignmentSafe: 4404 case OverflowAlignmentSafe:
4589 m_value.valueID = CSSValueSafe; 4405 m_valueID = CSSValueSafe;
4590 break; 4406 break;
4591 } 4407 }
4592 } 4408 }
4593 4409
4594 template<> inline OverflowAlignment CSSPrimitiveValue::convertTo() const 4410 template<> inline OverflowAlignment CSSIdentifierValue::convertTo() const
4595 { 4411 {
4596 switch (m_value.valueID) { 4412 switch (m_valueID) {
4597 case CSSValueUnsafe: 4413 case CSSValueUnsafe:
4598 return OverflowAlignmentUnsafe; 4414 return OverflowAlignmentUnsafe;
4599 case CSSValueSafe: 4415 case CSSValueSafe:
4600 return OverflowAlignmentSafe; 4416 return OverflowAlignmentSafe;
4601 default: 4417 default:
4602 break; 4418 break;
4603 } 4419 }
4604 ASSERT_NOT_REACHED(); 4420 ASSERT_NOT_REACHED();
4605 return OverflowAlignmentUnsafe; 4421 return OverflowAlignmentUnsafe;
4606 } 4422 }
4607 4423
4608 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ScrollBehavior behavior) 4424 template<> inline CSSIdentifierValue::CSSIdentifierValue(ScrollBehavior behavior )
4609 : CSSValue(PrimitiveClass) 4425 : CSSValue(IdentifierClass)
4610 { 4426 {
4611 init(UnitType::ValueID);
4612 switch (behavior) { 4427 switch (behavior) {
4613 case ScrollBehaviorAuto: 4428 case ScrollBehaviorAuto:
4614 m_value.valueID = CSSValueAuto; 4429 m_valueID = CSSValueAuto;
4615 break; 4430 break;
4616 case ScrollBehaviorSmooth: 4431 case ScrollBehaviorSmooth:
4617 m_value.valueID = CSSValueSmooth; 4432 m_valueID = CSSValueSmooth;
4618 break; 4433 break;
4619 case ScrollBehaviorInstant: 4434 case ScrollBehaviorInstant:
4620 // Behavior 'instant' is only allowed in ScrollOptions arguments passed to 4435 // Behavior 'instant' is only allowed in ScrollOptions arguments passed to
4621 // CSSOM scroll APIs. 4436 // CSSOM scroll APIs.
4622 ASSERT_NOT_REACHED(); 4437 ASSERT_NOT_REACHED();
4623 } 4438 }
4624 } 4439 }
4625 4440
4626 template<> inline ScrollBehavior CSSPrimitiveValue::convertTo() const 4441 template<> inline ScrollBehavior CSSIdentifierValue::convertTo() const
4627 { 4442 {
4628 switch (getValueID()) { 4443 switch (getValueID()) {
4629 case CSSValueAuto: 4444 case CSSValueAuto:
4630 return ScrollBehaviorAuto; 4445 return ScrollBehaviorAuto;
4631 case CSSValueSmooth: 4446 case CSSValueSmooth:
4632 return ScrollBehaviorSmooth; 4447 return ScrollBehaviorSmooth;
4633 default: 4448 default:
4634 break; 4449 break;
4635 } 4450 }
4636 ASSERT_NOT_REACHED(); 4451 ASSERT_NOT_REACHED();
4637 return ScrollBehaviorAuto; 4452 return ScrollBehaviorAuto;
4638 } 4453 }
4639 4454
4640 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ScrollSnapType snapType) 4455 template<> inline CSSIdentifierValue::CSSIdentifierValue(ScrollSnapType snapType )
4641 : CSSValue(PrimitiveClass) 4456 : CSSValue(IdentifierClass)
4642 { 4457 {
4643 init(UnitType::ValueID);
4644 switch (snapType) { 4458 switch (snapType) {
4645 case ScrollSnapTypeNone: 4459 case ScrollSnapTypeNone:
4646 m_value.valueID = CSSValueNone; 4460 m_valueID = CSSValueNone;
4647 break; 4461 break;
4648 case ScrollSnapTypeMandatory: 4462 case ScrollSnapTypeMandatory:
4649 m_value.valueID = CSSValueMandatory; 4463 m_valueID = CSSValueMandatory;
4650 break; 4464 break;
4651 case ScrollSnapTypeProximity: 4465 case ScrollSnapTypeProximity:
4652 m_value.valueID = CSSValueProximity; 4466 m_valueID = CSSValueProximity;
4653 break; 4467 break;
4654 } 4468 }
4655 } 4469 }
4656 4470
4657 template<> inline ScrollSnapType CSSPrimitiveValue::convertTo() const 4471 template<> inline ScrollSnapType CSSIdentifierValue::convertTo() const
4658 { 4472 {
4659 switch (getValueID()) { 4473 switch (getValueID()) {
4660 case CSSValueNone: 4474 case CSSValueNone:
4661 return ScrollSnapTypeNone; 4475 return ScrollSnapTypeNone;
4662 case CSSValueMandatory: 4476 case CSSValueMandatory:
4663 return ScrollSnapTypeMandatory; 4477 return ScrollSnapTypeMandatory;
4664 case CSSValueProximity: 4478 case CSSValueProximity:
4665 return ScrollSnapTypeProximity; 4479 return ScrollSnapTypeProximity;
4666 default: 4480 default:
4667 break; 4481 break;
4668 } 4482 }
4669 ASSERT_NOT_REACHED(); 4483 ASSERT_NOT_REACHED();
4670 return ScrollSnapTypeNone; 4484 return ScrollSnapTypeNone;
4671 } 4485 }
4672 4486
4673 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(Containment snapType) 4487 template<> inline CSSIdentifierValue::CSSIdentifierValue(Containment snapType)
4674 : CSSValue(PrimitiveClass) 4488 : CSSValue(IdentifierClass)
4675 { 4489 {
4676 init(UnitType::ValueID);
4677 switch (snapType) { 4490 switch (snapType) {
4678 case ContainsNone: 4491 case ContainsNone:
4679 m_value.valueID = CSSValueNone; 4492 m_valueID = CSSValueNone;
4680 break; 4493 break;
4681 case ContainsStrict: 4494 case ContainsStrict:
4682 m_value.valueID = CSSValueStrict; 4495 m_valueID = CSSValueStrict;
4683 break; 4496 break;
4684 case ContainsContent: 4497 case ContainsContent:
4685 m_value.valueID = CSSValueContent; 4498 m_valueID = CSSValueContent;
4686 break; 4499 break;
4687 case ContainsPaint: 4500 case ContainsPaint:
4688 m_value.valueID = CSSValuePaint; 4501 m_valueID = CSSValuePaint;
4689 break; 4502 break;
4690 case ContainsStyle: 4503 case ContainsStyle:
4691 m_value.valueID = CSSValueStyle; 4504 m_valueID = CSSValueStyle;
4692 break; 4505 break;
4693 case ContainsLayout: 4506 case ContainsLayout:
4694 m_value.valueID = CSSValueLayout; 4507 m_valueID = CSSValueLayout;
4695 break; 4508 break;
4696 case ContainsSize: 4509 case ContainsSize:
4697 m_value.valueID = CSSValueSize; 4510 m_valueID = CSSValueSize;
4698 break; 4511 break;
4699 } 4512 }
4700 } 4513 }
4701 4514
4702 template<> inline Containment CSSPrimitiveValue::convertTo() const 4515 template<> inline Containment CSSIdentifierValue::convertTo() const
4703 { 4516 {
4704 switch (getValueID()) { 4517 switch (getValueID()) {
4705 case CSSValueNone: 4518 case CSSValueNone:
4706 return ContainsNone; 4519 return ContainsNone;
4707 case CSSValueStrict: 4520 case CSSValueStrict:
4708 return ContainsStrict; 4521 return ContainsStrict;
4709 case CSSValueContent: 4522 case CSSValueContent:
4710 return ContainsContent; 4523 return ContainsContent;
4711 case CSSValuePaint: 4524 case CSSValuePaint:
4712 return ContainsPaint; 4525 return ContainsPaint;
4713 case CSSValueStyle: 4526 case CSSValueStyle:
4714 return ContainsStyle; 4527 return ContainsStyle;
4715 case CSSValueLayout: 4528 case CSSValueLayout:
4716 return ContainsLayout; 4529 return ContainsLayout;
4717 case CSSValueSize: 4530 case CSSValueSize:
4718 return ContainsSize; 4531 return ContainsSize;
4719 default: 4532 default:
4720 break; 4533 break;
4721 } 4534 }
4722 ASSERT_NOT_REACHED(); 4535 ASSERT_NOT_REACHED();
4723 return ContainsNone; 4536 return ContainsNone;
4724 } 4537 }
4725 4538
4726 } // namespace blink 4539 } // namespace blink
4727 4540
4728 #endif 4541 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp ('k') | third_party/WebKit/Source/core/css/CSSQuadValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698