| 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 #include "core/css/CSSSVGDocumentValue.h" | 52 #include "core/css/CSSSVGDocumentValue.h" |
| 53 #include "core/css/CSSShadowValue.h" | 53 #include "core/css/CSSShadowValue.h" |
| 54 #include "core/css/CSSStringValue.h" | 54 #include "core/css/CSSStringValue.h" |
| 55 #include "core/css/CSSTimingFunctionValue.h" | 55 #include "core/css/CSSTimingFunctionValue.h" |
| 56 #include "core/css/CSSURIValue.h" | 56 #include "core/css/CSSURIValue.h" |
| 57 #include "core/css/CSSUnicodeRangeValue.h" | 57 #include "core/css/CSSUnicodeRangeValue.h" |
| 58 #include "core/css/CSSUnsetValue.h" | 58 #include "core/css/CSSUnsetValue.h" |
| 59 #include "core/css/CSSValueList.h" | 59 #include "core/css/CSSValueList.h" |
| 60 #include "core/css/CSSValuePair.h" | 60 #include "core/css/CSSValuePair.h" |
| 61 #include "core/css/CSSVariableReferenceValue.h" | 61 #include "core/css/CSSVariableReferenceValue.h" |
| 62 #include "core/css/serializer/CSSDeserializeStream.h" |
| 63 #include "core/css/serializer/CSSSerializeStream.h" |
| 62 | 64 |
| 63 namespace blink { | 65 namespace blink { |
| 64 | 66 |
| 65 struct SameSizeAsCSSValue : public RefCountedWillBeGarbageCollectedFinalized<Sam
eSizeAsCSSValue> { | 67 struct SameSizeAsCSSValue : public RefCountedWillBeGarbageCollectedFinalized<Sam
eSizeAsCSSValue> { |
| 66 uint32_t bitfields; | 68 uint32_t bitfields; |
| 67 }; | 69 }; |
| 68 | 70 |
| 69 static_assert(sizeof(CSSValue) <= sizeof(SameSizeAsCSSValue), "CSSValue should s
tay small"); | 71 static_assert(sizeof(CSSValue) <= sizeof(SameSizeAsCSSValue), "CSSValue should s
tay small"); |
| 70 | 72 |
| 71 bool CSSValue::isImplicitInitialValue() const | 73 bool CSSValue::isImplicitInitialValue() const |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 return toCSSContentDistributionValue(this)->customCSSText(); | 261 return toCSSContentDistributionValue(this)->customCSSText(); |
| 260 case VariableReferenceClass: | 262 case VariableReferenceClass: |
| 261 return toCSSVariableReferenceValue(this)->customCSSText(); | 263 return toCSSVariableReferenceValue(this)->customCSSText(); |
| 262 case CustomPropertyDeclarationClass: | 264 case CustomPropertyDeclarationClass: |
| 263 return toCSSCustomPropertyDeclaration(this)->customCSSText(); | 265 return toCSSCustomPropertyDeclaration(this)->customCSSText(); |
| 264 } | 266 } |
| 265 ASSERT_NOT_REACHED(); | 267 ASSERT_NOT_REACHED(); |
| 266 return String(); | 268 return String(); |
| 267 } | 269 } |
| 268 | 270 |
| 271 PassRefPtrWillBeRawPtr<CSSValue> CSSValue::deserialize(CSSDeserializeStream* str
eam) |
| 272 { |
| 273 aaaa b; |
| 274 b.m_bitfields = stream->readUnsigned(); |
| 275 if (b.m_bitfields == 0xffffffff) { |
| 276 CSDEBUG("CSSValue::deserialize <nullptr>\n"); |
| 277 return nullptr; |
| 278 } |
| 279 CSDEBUG("CSSValue::deserialize type: %d\n", b.m_classType); |
| 280 switch (b.m_classType) { |
| 281 /* |
| 282 case BasicShapeCircleClass: |
| 283 return CSSBasicShapeCircleValue::deserializeAfterDispatch(stream); |
| 284 case BasicShapeEllipseClass: |
| 285 return CSSBasicShapeEllipseValue::deserializeAfterDispatch(stream); |
| 286 case BasicShapePolygonClass: |
| 287 return CSSBasicShapePolygonValue::deserializeAfterDispatch(stream); |
| 288 case BasicShapeInsetClass: |
| 289 return CSSBasicShapeInsetValue::deserializeAfterDispatch(stream); |
| 290 case BorderImageSliceClass: |
| 291 return CSSBorderImageSliceValue::deserializeAfterDispatch(stream); |
| 292 */ |
| 293 case ColorClass: |
| 294 return CSSColorValue::deserializeAfterDispatch(stream); |
| 295 case CounterClass: |
| 296 return CSSCounterValue::deserializeAfterDispatch(stream); |
| 297 /* |
| 298 case CursorImageClass: |
| 299 return CSSCursorImageValue::deserializeAfterDispatch(stream); |
| 300 */ |
| 301 case FontFaceSrcClass: |
| 302 return CSSFontFaceSrcValue::deserializeAfterDispatch(stream); |
| 303 case FontFeatureClass: |
| 304 return CSSFontFeatureValue::deserializeAfterDispatch(stream); |
| 305 case FunctionClass: |
| 306 return CSSFunctionValue::deserializeAfterDispatch(b.m_bitfields, stream)
; |
| 307 case LinearGradientClass: |
| 308 return CSSLinearGradientValue::deserializeAfterDispatch(stream); |
| 309 case RadialGradientClass: |
| 310 return CSSRadialGradientValue::deserializeAfterDispatch(stream); |
| 311 /* |
| 312 case CrossfadeClass: |
| 313 return CSSCrossfadeValue::deserializeAfterDispatch(stream); |
| 314 */ |
| 315 case CustomIdentClass: |
| 316 return CSSCustomIdentValue::deserializeAfterDispatch(stream); |
| 317 case ImageClass: |
| 318 return CSSImageValue::deserializeAfterDispatch(stream); |
| 319 case InheritedClass: |
| 320 return CSSInheritedValue::deserializeAfterDispatch(stream); |
| 321 /* |
| 322 case UnsetClass: |
| 323 return CSSUnsetValue::deserializeAfterDispatch(stream); |
| 324 */ |
| 325 case InitialClass: |
| 326 return CSSInitialValue::deserializeAfterDispatch(stream); |
| 327 /* |
| 328 case GridLineNamesClass: |
| 329 return CSSGridLineNamesValue::deserializeAfterDispatch(stream); |
| 330 case GridTemplateAreasClass: |
| 331 return CSSGridTemplateAreasValue::deserializeAfterDispatch(stream); |
| 332 case PathClass: |
| 333 return CSSPathValue::deserializeAfterDispatch(stream); |
| 334 */ |
| 335 case PrimitiveClass: |
| 336 return CSSPrimitiveValue::deserializeAfterDispatch(stream); |
| 337 case QuadClass: |
| 338 return CSSQuadValue::deserializeAfterDispatch(stream); |
| 339 /* |
| 340 case ReflectClass: |
| 341 return CSSReflectValue::deserializeAfterDispatch(stream); |
| 342 */ |
| 343 case ShadowClass: |
| 344 return CSSShadowValue::deserializeAfterDispatch(stream); |
| 345 case StringClass: |
| 346 return CSSStringValue::deserializeAfterDispatch(stream); |
| 347 case CubicBezierTimingFunctionClass: |
| 348 return CSSCubicBezierTimingFunctionValue::deserializeAfterDispatch(strea
m); |
| 349 case StepsTimingFunctionClass: |
| 350 return CSSStepsTimingFunctionValue::deserializeAfterDispatch(stream); |
| 351 case UnicodeRangeClass: |
| 352 return CSSUnicodeRangeValue::deserializeAfterDispatch(stream); |
| 353 /* |
| 354 case URIClass: |
| 355 return CSSURIValue::deserializeAfterDispatch(stream); |
| 356 */ |
| 357 case ValuePairClass: |
| 358 return CSSValuePair::deserializeAfterDispatch(stream); |
| 359 case ValueListClass: |
| 360 return CSSValueList::deserializeAfterDispatch(b.m_bitfields, stream); |
| 361 case ImageSetClass: |
| 362 return CSSImageSetValue::deserializeAfterDispatch(b.m_bitfields, stream)
; |
| 363 /* |
| 364 case CSSSVGDocumentClass: |
| 365 return CSSSVGDocumentValue::deserializeAfterDispatch(stream); |
| 366 case CSSContentDistributionClass: |
| 367 return CSSContentDistributionValue::deserializeAfterDispatch(stream); |
| 368 case VariableReferenceClass: |
| 369 return CSSVariableReferenceValue::deserializeAfterDispatch(stream); |
| 370 case CustomPropertyDeclarationClass: |
| 371 return toCSSCustomPropertyDeclaration(this)->customCSSText(); |
| 372 */ |
| 373 default: |
| 374 ASSERT_NOT_REACHED(); |
| 375 return nullptr; |
| 376 } |
| 377 } |
| 378 |
| 379 void CSSSerializeTrait<CSSValue>::serializeNull(CSSSerializeStream* stream) |
| 380 { |
| 381 stream->writeUnsigned(0xffffffff); |
| 382 } |
| 383 |
| 384 void CSSValue::serialize(CSSSerializeStream* stream) const |
| 385 { |
| 386 if (reinterpret_cast<uintptr_t>(this) < 0x4) { |
| 387 CSDEBUG("CSSValue::serialize <nullptr>\n"); |
| 388 stream->writeUnsigned(0xffffffff); |
| 389 return; |
| 390 } |
| 391 CSDEBUG("CSSValue::serialize type(%d)\n", classType()); CSSHOW(cssText()); |
| 392 |
| 393 stream->writeUnsigned(m_bitfields); |
| 394 switch (classType()) { |
| 395 default: |
| 396 ASSERT_NOT_REACHED(); |
| 397 return; |
| 398 /* |
| 399 case BasicShapeCircleClass: |
| 400 toCSSBasicShapeCircleValue(this)->serializeAfterDispatch(stream); |
| 401 return; |
| 402 case BasicShapeEllipseClass: |
| 403 toCSSBasicShapeEllipseValue(this)->serializeAfterDispatch(stream); |
| 404 return; |
| 405 case BasicShapePolygonClass: |
| 406 toCSSBasicShapePolygonValue(this)->serializeAfterDispatch(stream); |
| 407 return; |
| 408 case BasicShapeInsetClass: |
| 409 toCSSBasicShapeInsetValue(this)->serializeAfterDispatch(stream); |
| 410 return; |
| 411 case BorderImageSliceClass: |
| 412 toCSSBorderImageSliceValue(this)->serializeAfterDispatch(stream); |
| 413 return; |
| 414 */ |
| 415 case ColorClass: |
| 416 toCSSColorValue(this)->serializeAfterDispatch(stream); |
| 417 return; |
| 418 case CounterClass: |
| 419 toCSSCounterValue(this)->serializeAfterDispatch(stream); |
| 420 return; |
| 421 /* |
| 422 case CursorImageClass: |
| 423 toCSSCursorImageValue(this)->serializeAfterDispatch(stream); |
| 424 return; |
| 425 */ |
| 426 case FontFaceSrcClass: |
| 427 toCSSFontFaceSrcValue(this)->serializeAfterDispatch(stream); |
| 428 return; |
| 429 case FontFeatureClass: |
| 430 toCSSFontFeatureValue(this)->serializeAfterDispatch(stream); |
| 431 return; |
| 432 case FunctionClass: |
| 433 toCSSFunctionValue(this)->serializeAfterDispatch(stream); |
| 434 return; |
| 435 case LinearGradientClass: |
| 436 toCSSLinearGradientValue(this)->serializeAfterDispatch(stream); |
| 437 return; |
| 438 case RadialGradientClass: |
| 439 toCSSRadialGradientValue(this)->serializeAfterDispatch(stream); |
| 440 return; |
| 441 /* |
| 442 case CrossfadeClass: |
| 443 toCSSCrossfadeValue(this)->serializeAfterDispatch(stream); |
| 444 return; |
| 445 */ |
| 446 case CustomIdentClass: |
| 447 toCSSCustomIdentValue(this)->serializeAfterDispatch(stream); |
| 448 return; |
| 449 case ImageClass: |
| 450 toCSSImageValue(this)->serializeAfterDispatch(stream); |
| 451 return; |
| 452 case InheritedClass: |
| 453 toCSSInheritedValue(this)->serializeAfterDispatch(stream); |
| 454 return; |
| 455 case InitialClass: |
| 456 toCSSInitialValue(this)->serializeAfterDispatch(stream); |
| 457 return; |
| 458 /* |
| 459 case UnsetClass: |
| 460 toCSSUnsetValue(this)->serializeAfterDispatch(stream); |
| 461 return; |
| 462 case GridLineNamesClass: |
| 463 toCSSGridLineNamesValue(this)->serializeAfterDispatch(stream); |
| 464 return; |
| 465 case GridTemplateAreasClass: |
| 466 toCSSGridTemplateAreasValue(this)->serializeAfterDispatch(stream); |
| 467 return; |
| 468 case PathClass: |
| 469 toCSSPathValue(this)->serializeAfterDispatch(stream); |
| 470 return; |
| 471 */ |
| 472 case PrimitiveClass: |
| 473 toCSSPrimitiveValue(this)->serializeAfterDispatch(stream); |
| 474 return; |
| 475 case QuadClass: |
| 476 toCSSQuadValue(this)->serializeAfterDispatch(stream); |
| 477 return; |
| 478 /* |
| 479 case ReflectClass: |
| 480 toCSSReflectValue(this)->serializeAfterDispatch(stream); |
| 481 return; |
| 482 */ |
| 483 case ShadowClass: |
| 484 toCSSShadowValue(this)->serializeAfterDispatch(stream); |
| 485 return; |
| 486 case StringClass: |
| 487 toCSSStringValue(this)->serializeAfterDispatch(stream); |
| 488 return; |
| 489 case CubicBezierTimingFunctionClass: |
| 490 toCSSCubicBezierTimingFunctionValue(this)->serializeAfterDispatch(stream
); |
| 491 return; |
| 492 case StepsTimingFunctionClass: |
| 493 toCSSStepsTimingFunctionValue(this)->serializeAfterDispatch(stream); |
| 494 return; |
| 495 case UnicodeRangeClass: |
| 496 toCSSUnicodeRangeValue(this)->serializeAfterDispatch(stream); |
| 497 return; |
| 498 /* |
| 499 case URIClass: |
| 500 toCSSURIValue(this)->serializeAfterDispatch(stream); |
| 501 return; |
| 502 */ |
| 503 case ValuePairClass: |
| 504 toCSSValuePair(this)->serializeAfterDispatch(stream); |
| 505 return; |
| 506 case ValueListClass: |
| 507 toCSSValueList(this)->serializeAfterDispatch(stream); |
| 508 return; |
| 509 case ImageSetClass: |
| 510 toCSSImageSetValue(this)->serializeAfterDispatch(stream); |
| 511 return; |
| 512 /* |
| 513 case CSSSVGDocumentClass: |
| 514 toCSSSVGDocumentValue(this)->serializeAfterDispatch(stream); |
| 515 return; |
| 516 case CSSContentDistributionClass: |
| 517 toCSSContentDistributionValue(this)->serializeAfterDispatch(stream); |
| 518 return; |
| 519 case VariableReferenceClass: |
| 520 toCSSVariableReferenceValue(this)->serializeAfterDispatch(stream); |
| 521 return; |
| 522 case CustomPropertyDeclarationClass: |
| 523 toCSSCustomPropertyDeclaration(this)->serializeAfterDispatch(stream); |
| 524 return; |
| 525 */ |
| 526 } |
| 527 ASSERT_NOT_REACHED(); |
| 528 } |
| 529 |
| 269 void CSSValue::destroy() | 530 void CSSValue::destroy() |
| 270 { | 531 { |
| 271 switch (classType()) { | 532 switch (classType()) { |
| 272 case BasicShapeCircleClass: | 533 case BasicShapeCircleClass: |
| 273 delete toCSSBasicShapeCircleValue(this); | 534 delete toCSSBasicShapeCircleValue(this); |
| 274 return; | 535 return; |
| 275 case BasicShapeEllipseClass: | 536 case BasicShapeEllipseClass: |
| 276 delete toCSSBasicShapeEllipseValue(this); | 537 delete toCSSBasicShapeEllipseValue(this); |
| 277 return; | 538 return; |
| 278 case BasicShapePolygonClass: | 539 case BasicShapePolygonClass: |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 toCSSVariableReferenceValue(this)->traceAfterDispatch(visitor); | 884 toCSSVariableReferenceValue(this)->traceAfterDispatch(visitor); |
| 624 return; | 885 return; |
| 625 case CustomPropertyDeclarationClass: | 886 case CustomPropertyDeclarationClass: |
| 626 toCSSCustomPropertyDeclaration(this)->traceAfterDispatch(visitor); | 887 toCSSCustomPropertyDeclaration(this)->traceAfterDispatch(visitor); |
| 627 return; | 888 return; |
| 628 } | 889 } |
| 629 ASSERT_NOT_REACHED(); | 890 ASSERT_NOT_REACHED(); |
| 630 } | 891 } |
| 631 | 892 |
| 632 } | 893 } |
| OLD | NEW |