OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Andreas Kling (kling@webkit.org) | 2 * Copyright (C) 2011 Andreas Kling (kling@webkit.org) |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 #include "core/css/CSSValueList.h" | 55 #include "core/css/CSSValueList.h" |
56 | 56 |
57 namespace blink { | 57 namespace blink { |
58 | 58 |
59 struct SameSizeAsCSSValueObject : public RefCountedWillBeGarbageCollectedFinaliz
ed<SameSizeAsCSSValueObject> { | 59 struct SameSizeAsCSSValueObject : public RefCountedWillBeGarbageCollectedFinaliz
ed<SameSizeAsCSSValueObject> { |
60 uint32_t bitfields; | 60 uint32_t bitfields; |
61 }; | 61 }; |
62 | 62 |
63 static_assert(sizeof(CSSValueObject) <= sizeof(SameSizeAsCSSValueObject), "CSSVa
lueObject should stay small"); | 63 static_assert(sizeof(CSSValueObject) <= sizeof(SameSizeAsCSSValueObject), "CSSVa
lueObject should stay small"); |
64 | 64 |
| 65 // Only for use by CSSValueObject. |
| 66 inline CSSPrimitiveValue::CSSLargePrimitiveValue* toCSSLargePrimitiveValue(CSSVa
lueObject* value) |
| 67 { |
| 68 ASSERT_WITH_SECURITY_IMPLICATION(!value || value->isPrimitiveValue()); |
| 69 return static_cast<CSSPrimitiveValue::CSSLargePrimitiveValue*>(value); |
| 70 } |
| 71 inline CSSPrimitiveValue toCSSPrimitiveValue(const CSSValueObject* value) |
| 72 { |
| 73 ASSERT_WITH_SECURITY_IMPLICATION(!value || value->isPrimitiveValue()); |
| 74 return CSSPrimitiveValue(static_cast<const CSSPrimitiveValue::CSSLargePrimit
iveValue*>(value)); |
| 75 } |
| 76 |
65 bool CSSValueObject::isImplicitInitialValue() const | 77 bool CSSValueObject::isImplicitInitialValue() const |
66 { | 78 { |
67 return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit(); | 79 return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit(); |
68 } | 80 } |
69 | 81 |
70 bool CSSValueObject::hasFailedOrCanceledSubresources() const | 82 bool CSSValueObject::hasFailedOrCanceledSubresources() const |
71 { | 83 { |
72 if (isValueList()) | 84 if (isValueList()) |
73 return toCSSValueList(this)->hasFailedOrCanceledSubresources(); | 85 return toCSSValueList(this)->hasFailedOrCanceledSubresources(); |
74 if (classType() == FontFaceSrcClass) | 86 if (classType() == FontFaceSrcClass) |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 return compareCSSValues<CSSInitialValue>(*this, other); | 131 return compareCSSValues<CSSInitialValue>(*this, other); |
120 case UnsetClass: | 132 case UnsetClass: |
121 return compareCSSValues<CSSUnsetValue>(*this, other); | 133 return compareCSSValues<CSSUnsetValue>(*this, other); |
122 case GridLineNamesClass: | 134 case GridLineNamesClass: |
123 return compareCSSValues<CSSGridLineNamesValue>(*this, other); | 135 return compareCSSValues<CSSGridLineNamesValue>(*this, other); |
124 case GridTemplateAreasClass: | 136 case GridTemplateAreasClass: |
125 return compareCSSValues<CSSGridTemplateAreasValue>(*this, other); | 137 return compareCSSValues<CSSGridTemplateAreasValue>(*this, other); |
126 case PathClass: | 138 case PathClass: |
127 return compareCSSValues<CSSPathValue>(*this, other); | 139 return compareCSSValues<CSSPathValue>(*this, other); |
128 case PrimitiveClass: | 140 case PrimitiveClass: |
129 return compareCSSValues<CSSPrimitiveValue>(*this, other); | 141 return toCSSPrimitiveValue(this).equals(toCSSPrimitiveValue(&other))
; |
130 case ReflectClass: | 142 case ReflectClass: |
131 return compareCSSValues<CSSReflectValue>(*this, other); | 143 return compareCSSValues<CSSReflectValue>(*this, other); |
132 case ShadowClass: | 144 case ShadowClass: |
133 return compareCSSValues<CSSShadowValue>(*this, other); | 145 return compareCSSValues<CSSShadowValue>(*this, other); |
134 case CubicBezierTimingFunctionClass: | 146 case CubicBezierTimingFunctionClass: |
135 return compareCSSValues<CSSCubicBezierTimingFunctionValue>(*this, ot
her); | 147 return compareCSSValues<CSSCubicBezierTimingFunctionValue>(*this, ot
her); |
136 case StepsTimingFunctionClass: | 148 case StepsTimingFunctionClass: |
137 return compareCSSValues<CSSStepsTimingFunctionValue>(*this, other); | 149 return compareCSSValues<CSSStepsTimingFunctionValue>(*this, other); |
138 case UnicodeRangeClass: | 150 case UnicodeRangeClass: |
139 return compareCSSValues<CSSUnicodeRangeValue>(*this, other); | 151 return compareCSSValues<CSSUnicodeRangeValue>(*this, other); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 return toCSSUnsetValue(this)->customCSSText(); | 198 return toCSSUnsetValue(this)->customCSSText(); |
187 case InitialClass: | 199 case InitialClass: |
188 return toCSSInitialValue(this)->customCSSText(); | 200 return toCSSInitialValue(this)->customCSSText(); |
189 case GridLineNamesClass: | 201 case GridLineNamesClass: |
190 return toCSSGridLineNamesValue(this)->customCSSText(); | 202 return toCSSGridLineNamesValue(this)->customCSSText(); |
191 case GridTemplateAreasClass: | 203 case GridTemplateAreasClass: |
192 return toCSSGridTemplateAreasValue(this)->customCSSText(); | 204 return toCSSGridTemplateAreasValue(this)->customCSSText(); |
193 case PathClass: | 205 case PathClass: |
194 return toCSSPathValue(this)->customCSSText(); | 206 return toCSSPathValue(this)->customCSSText(); |
195 case PrimitiveClass: | 207 case PrimitiveClass: |
196 return toCSSPrimitiveValue(this)->customCSSText(); | 208 return toCSSPrimitiveValue(this).customCSSText(); |
197 case ReflectClass: | 209 case ReflectClass: |
198 return toCSSReflectValue(this)->customCSSText(); | 210 return toCSSReflectValue(this)->customCSSText(); |
199 case ShadowClass: | 211 case ShadowClass: |
200 return toCSSShadowValue(this)->customCSSText(); | 212 return toCSSShadowValue(this)->customCSSText(); |
201 case CubicBezierTimingFunctionClass: | 213 case CubicBezierTimingFunctionClass: |
202 return toCSSCubicBezierTimingFunctionValue(this)->customCSSText(); | 214 return toCSSCubicBezierTimingFunctionValue(this)->customCSSText(); |
203 case StepsTimingFunctionClass: | 215 case StepsTimingFunctionClass: |
204 return toCSSStepsTimingFunctionValue(this)->customCSSText(); | 216 return toCSSStepsTimingFunctionValue(this)->customCSSText(); |
205 case UnicodeRangeClass: | 217 case UnicodeRangeClass: |
206 return toCSSUnicodeRangeValue(this)->customCSSText(); | 218 return toCSSUnicodeRangeValue(this)->customCSSText(); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 case GridLineNamesClass: | 278 case GridLineNamesClass: |
267 delete toCSSGridLineNamesValue(this); | 279 delete toCSSGridLineNamesValue(this); |
268 return; | 280 return; |
269 case GridTemplateAreasClass: | 281 case GridTemplateAreasClass: |
270 delete toCSSGridTemplateAreasValue(this); | 282 delete toCSSGridTemplateAreasValue(this); |
271 return; | 283 return; |
272 case PathClass: | 284 case PathClass: |
273 delete toCSSPathValue(this); | 285 delete toCSSPathValue(this); |
274 return; | 286 return; |
275 case PrimitiveClass: | 287 case PrimitiveClass: |
276 delete toCSSPrimitiveValue(this); | 288 delete toCSSLargePrimitiveValue(this); |
277 return; | 289 return; |
278 case ReflectClass: | 290 case ReflectClass: |
279 delete toCSSReflectValue(this); | 291 delete toCSSReflectValue(this); |
280 return; | 292 return; |
281 case ShadowClass: | 293 case ShadowClass: |
282 delete toCSSShadowValue(this); | 294 delete toCSSShadowValue(this); |
283 return; | 295 return; |
284 case CubicBezierTimingFunctionClass: | 296 case CubicBezierTimingFunctionClass: |
285 delete toCSSCubicBezierTimingFunctionValue(this); | 297 delete toCSSCubicBezierTimingFunctionValue(this); |
286 return; | 298 return; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 case GridLineNamesClass: | 369 case GridLineNamesClass: |
358 toCSSGridLineNamesValue(this)->~CSSGridLineNamesValue(); | 370 toCSSGridLineNamesValue(this)->~CSSGridLineNamesValue(); |
359 return; | 371 return; |
360 case GridTemplateAreasClass: | 372 case GridTemplateAreasClass: |
361 toCSSGridTemplateAreasValue(this)->~CSSGridTemplateAreasValue(); | 373 toCSSGridTemplateAreasValue(this)->~CSSGridTemplateAreasValue(); |
362 return; | 374 return; |
363 case PathClass: | 375 case PathClass: |
364 toCSSPathValue(this)->~CSSPathValue(); | 376 toCSSPathValue(this)->~CSSPathValue(); |
365 return; | 377 return; |
366 case PrimitiveClass: | 378 case PrimitiveClass: |
367 toCSSPrimitiveValue(this)->~CSSPrimitiveValue(); | 379 toCSSLargePrimitiveValue(this)->~CSSLargePrimitiveValue(); |
368 return; | 380 return; |
369 case ReflectClass: | 381 case ReflectClass: |
370 toCSSReflectValue(this)->~CSSReflectValue(); | 382 toCSSReflectValue(this)->~CSSReflectValue(); |
371 return; | 383 return; |
372 case ShadowClass: | 384 case ShadowClass: |
373 toCSSShadowValue(this)->~CSSShadowValue(); | 385 toCSSShadowValue(this)->~CSSShadowValue(); |
374 return; | 386 return; |
375 case CubicBezierTimingFunctionClass: | 387 case CubicBezierTimingFunctionClass: |
376 toCSSCubicBezierTimingFunctionValue(this)->~CSSCubicBezierTimingFunction
Value(); | 388 toCSSCubicBezierTimingFunctionValue(this)->~CSSCubicBezierTimingFunction
Value(); |
377 return; | 389 return; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 case GridLineNamesClass: | 460 case GridLineNamesClass: |
449 toCSSGridLineNamesValue(this)->traceAfterDispatch(visitor); | 461 toCSSGridLineNamesValue(this)->traceAfterDispatch(visitor); |
450 return; | 462 return; |
451 case GridTemplateAreasClass: | 463 case GridTemplateAreasClass: |
452 toCSSGridTemplateAreasValue(this)->traceAfterDispatch(visitor); | 464 toCSSGridTemplateAreasValue(this)->traceAfterDispatch(visitor); |
453 return; | 465 return; |
454 case PathClass: | 466 case PathClass: |
455 toCSSPathValue(this)->traceAfterDispatch(visitor); | 467 toCSSPathValue(this)->traceAfterDispatch(visitor); |
456 return; | 468 return; |
457 case PrimitiveClass: | 469 case PrimitiveClass: |
458 toCSSPrimitiveValue(this)->traceAfterDispatch(visitor); | 470 toCSSLargePrimitiveValue(this)->traceAfterDispatch(visitor); |
459 return; | 471 return; |
460 case ReflectClass: | 472 case ReflectClass: |
461 toCSSReflectValue(this)->traceAfterDispatch(visitor); | 473 toCSSReflectValue(this)->traceAfterDispatch(visitor); |
462 return; | 474 return; |
463 case ShadowClass: | 475 case ShadowClass: |
464 toCSSShadowValue(this)->traceAfterDispatch(visitor); | 476 toCSSShadowValue(this)->traceAfterDispatch(visitor); |
465 return; | 477 return; |
466 case CubicBezierTimingFunctionClass: | 478 case CubicBezierTimingFunctionClass: |
467 toCSSCubicBezierTimingFunctionValue(this)->traceAfterDispatch(visitor); | 479 toCSSCubicBezierTimingFunctionValue(this)->traceAfterDispatch(visitor); |
468 return; | 480 return; |
(...skipping 19 matching lines...) Expand all Loading... |
488 toCSSSVGDocumentValue(this)->traceAfterDispatch(visitor); | 500 toCSSSVGDocumentValue(this)->traceAfterDispatch(visitor); |
489 return; | 501 return; |
490 case CSSContentDistributionClass: | 502 case CSSContentDistributionClass: |
491 toCSSContentDistributionValue(this)->traceAfterDispatch(visitor); | 503 toCSSContentDistributionValue(this)->traceAfterDispatch(visitor); |
492 return; | 504 return; |
493 } | 505 } |
494 ASSERT_NOT_REACHED(); | 506 ASSERT_NOT_REACHED(); |
495 } | 507 } |
496 | 508 |
497 } | 509 } |
OLD | NEW |