| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 | 62 |
| 63 class TextCloneCSSValue : public CSSValue { | 63 class TextCloneCSSValue : public CSSValue { |
| 64 public: | 64 public: |
| 65 static PassRefPtr<TextCloneCSSValue> create(ClassType classType, const Strin
g& text) | 65 static PassRefPtr<TextCloneCSSValue> create(ClassType classType, const Strin
g& text) |
| 66 { | 66 { |
| 67 return adoptRef(new TextCloneCSSValue(classType, text)); | 67 return adoptRef(new TextCloneCSSValue(classType, text)); |
| 68 } | 68 } |
| 69 | 69 |
| 70 String cssText() const { return m_cssText; } | 70 String cssText() const { return m_cssText; } |
| 71 | 71 |
| 72 void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(vis
itor); } | |
| 73 | |
| 74 private: | 72 private: |
| 75 TextCloneCSSValue(ClassType classType, const String& text) | 73 TextCloneCSSValue(ClassType classType, const String& text) |
| 76 : CSSValue(classType, /*isCSSOMSafe*/ true) | 74 : CSSValue(classType, /*isCSSOMSafe*/ true) |
| 77 , m_cssText(text) | 75 , m_cssText(text) |
| 78 { | 76 { |
| 79 m_isTextClone = true; | 77 m_isTextClone = true; |
| 80 } | 78 } |
| 81 | 79 |
| 82 String m_cssText; | 80 String m_cssText; |
| 83 }; | 81 }; |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 case ImageSetClass: | 341 case ImageSetClass: |
| 344 delete toCSSImageSetValue(this); | 342 delete toCSSImageSetValue(this); |
| 345 return; | 343 return; |
| 346 case CSSFilterClass: | 344 case CSSFilterClass: |
| 347 delete toCSSFilterValue(this); | 345 delete toCSSFilterValue(this); |
| 348 return; | 346 return; |
| 349 } | 347 } |
| 350 ASSERT_NOT_REACHED(); | 348 ASSERT_NOT_REACHED(); |
| 351 } | 349 } |
| 352 | 350 |
| 353 void CSSValue::finalizeGarbageCollectedObject() | |
| 354 { | |
| 355 if (m_isTextClone) { | |
| 356 ASSERT(isCSSOMSafe()); | |
| 357 toTextCloneCSSValue(this)->~TextCloneCSSValue(); | |
| 358 return; | |
| 359 } | |
| 360 ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); | |
| 361 | |
| 362 switch (classType()) { | |
| 363 case AspectRatioClass: | |
| 364 toCSSAspectRatioValue(this)->~CSSAspectRatioValue(); | |
| 365 return; | |
| 366 case BorderImageSliceClass: | |
| 367 toCSSBorderImageSliceValue(this)->~CSSBorderImageSliceValue(); | |
| 368 return; | |
| 369 case CanvasClass: | |
| 370 toCSSCanvasValue(this)->~CSSCanvasValue(); | |
| 371 return; | |
| 372 case CursorImageClass: | |
| 373 toCSSCursorImageValue(this)->~CSSCursorImageValue(); | |
| 374 return; | |
| 375 case FontClass: | |
| 376 toCSSFontValue(this)->~CSSFontValue(); | |
| 377 return; | |
| 378 case FontFaceSrcClass: | |
| 379 toCSSFontFaceSrcValue(this)->~CSSFontFaceSrcValue(); | |
| 380 return; | |
| 381 case FontFeatureClass: | |
| 382 toCSSFontFeatureValue(this)->~CSSFontFeatureValue(); | |
| 383 return; | |
| 384 case FunctionClass: | |
| 385 toCSSFunctionValue(this)->~CSSFunctionValue(); | |
| 386 return; | |
| 387 case LinearGradientClass: | |
| 388 toCSSLinearGradientValue(this)->~CSSLinearGradientValue(); | |
| 389 return; | |
| 390 case RadialGradientClass: | |
| 391 toCSSRadialGradientValue(this)->~CSSRadialGradientValue(); | |
| 392 return; | |
| 393 case CrossfadeClass: | |
| 394 toCSSCrossfadeValue(this)->~CSSCrossfadeValue(); | |
| 395 return; | |
| 396 case ImageClass: | |
| 397 toCSSImageValue(this)->~CSSImageValue(); | |
| 398 return; | |
| 399 case InheritedClass: | |
| 400 toCSSInheritedValue(this)->~CSSInheritedValue(); | |
| 401 return; | |
| 402 case InitialClass: | |
| 403 toCSSInitialValue(this)->~CSSInitialValue(); | |
| 404 return; | |
| 405 case PrimitiveClass: | |
| 406 toCSSPrimitiveValue(this)->~CSSPrimitiveValue(); | |
| 407 return; | |
| 408 case ShadowClass: | |
| 409 toCSSShadowValue(this)->~CSSShadowValue(); | |
| 410 return; | |
| 411 case CubicBezierTimingFunctionClass: | |
| 412 toCSSCubicBezierTimingFunctionValue(this)->~CSSCubicBezierTimingFunction
Value(); | |
| 413 return; | |
| 414 case StepsTimingFunctionClass: | |
| 415 toCSSStepsTimingFunctionValue(this)->~CSSStepsTimingFunctionValue(); | |
| 416 return; | |
| 417 case UnicodeRangeClass: | |
| 418 toCSSUnicodeRangeValue(this)->~CSSUnicodeRangeValue(); | |
| 419 return; | |
| 420 case ValueListClass: | |
| 421 toCSSValueList(this)->~CSSValueList(); | |
| 422 return; | |
| 423 case CSSTransformClass: | |
| 424 toCSSTransformValue(this)->~CSSTransformValue(); | |
| 425 return; | |
| 426 case LineBoxContainClass: | |
| 427 toCSSLineBoxContainValue(this)->~CSSLineBoxContainValue(); | |
| 428 return; | |
| 429 case CalculationClass: | |
| 430 toCSSCalcValue(this)->~CSSCalcValue(); | |
| 431 return; | |
| 432 case ImageSetClass: | |
| 433 toCSSImageSetValue(this)->~CSSImageSetValue(); | |
| 434 return; | |
| 435 case CSSFilterClass: | |
| 436 toCSSFilterValue(this)->~CSSFilterValue(); | |
| 437 return; | |
| 438 } | |
| 439 ASSERT_NOT_REACHED(); | |
| 440 } | |
| 441 | |
| 442 void CSSValue::trace(Visitor* visitor) | |
| 443 { | |
| 444 if (m_isTextClone) { | |
| 445 ASSERT(isCSSOMSafe()); | |
| 446 toTextCloneCSSValue(this)->traceAfterDispatch(visitor); | |
| 447 return; | |
| 448 } | |
| 449 ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); | |
| 450 | |
| 451 switch (classType()) { | |
| 452 case AspectRatioClass: | |
| 453 toCSSAspectRatioValue(this)->traceAfterDispatch(visitor); | |
| 454 return; | |
| 455 case BorderImageSliceClass: | |
| 456 toCSSBorderImageSliceValue(this)->traceAfterDispatch(visitor); | |
| 457 return; | |
| 458 case CanvasClass: | |
| 459 toCSSCanvasValue(this)->traceAfterDispatch(visitor); | |
| 460 return; | |
| 461 case CursorImageClass: | |
| 462 toCSSCursorImageValue(this)->traceAfterDispatch(visitor); | |
| 463 return; | |
| 464 case FontClass: | |
| 465 toCSSFontValue(this)->traceAfterDispatch(visitor); | |
| 466 return; | |
| 467 case FontFaceSrcClass: | |
| 468 toCSSFontFaceSrcValue(this)->traceAfterDispatch(visitor); | |
| 469 return; | |
| 470 case FontFeatureClass: | |
| 471 toCSSFontFeatureValue(this)->traceAfterDispatch(visitor); | |
| 472 return; | |
| 473 case FunctionClass: | |
| 474 toCSSFunctionValue(this)->traceAfterDispatch(visitor); | |
| 475 return; | |
| 476 case LinearGradientClass: | |
| 477 toCSSLinearGradientValue(this)->traceAfterDispatch(visitor); | |
| 478 return; | |
| 479 case RadialGradientClass: | |
| 480 toCSSRadialGradientValue(this)->traceAfterDispatch(visitor); | |
| 481 return; | |
| 482 case CrossfadeClass: | |
| 483 toCSSCrossfadeValue(this)->traceAfterDispatch(visitor); | |
| 484 return; | |
| 485 case ImageClass: | |
| 486 toCSSImageValue(this)->traceAfterDispatch(visitor); | |
| 487 return; | |
| 488 case InheritedClass: | |
| 489 toCSSInheritedValue(this)->traceAfterDispatch(visitor); | |
| 490 return; | |
| 491 case InitialClass: | |
| 492 toCSSInitialValue(this)->traceAfterDispatch(visitor); | |
| 493 return; | |
| 494 case PrimitiveClass: | |
| 495 toCSSPrimitiveValue(this)->traceAfterDispatch(visitor); | |
| 496 return; | |
| 497 case ShadowClass: | |
| 498 toCSSShadowValue(this)->traceAfterDispatch(visitor); | |
| 499 return; | |
| 500 case CubicBezierTimingFunctionClass: | |
| 501 toCSSCubicBezierTimingFunctionValue(this)->traceAfterDispatch(visitor); | |
| 502 return; | |
| 503 case StepsTimingFunctionClass: | |
| 504 toCSSStepsTimingFunctionValue(this)->traceAfterDispatch(visitor); | |
| 505 return; | |
| 506 case UnicodeRangeClass: | |
| 507 toCSSUnicodeRangeValue(this)->traceAfterDispatch(visitor); | |
| 508 return; | |
| 509 case ValueListClass: | |
| 510 toCSSValueList(this)->traceAfterDispatch(visitor); | |
| 511 return; | |
| 512 case CSSTransformClass: | |
| 513 toCSSTransformValue(this)->traceAfterDispatch(visitor); | |
| 514 return; | |
| 515 case LineBoxContainClass: | |
| 516 toCSSLineBoxContainValue(this)->traceAfterDispatch(visitor); | |
| 517 return; | |
| 518 case CalculationClass: | |
| 519 toCSSCalcValue(this)->traceAfterDispatch(visitor); | |
| 520 return; | |
| 521 case ImageSetClass: | |
| 522 toCSSImageSetValue(this)->traceAfterDispatch(visitor); | |
| 523 return; | |
| 524 case CSSFilterClass: | |
| 525 toCSSFilterValue(this)->traceAfterDispatch(visitor); | |
| 526 return; | |
| 527 } | |
| 528 ASSERT_NOT_REACHED(); | |
| 529 } | |
| 530 | |
| 531 PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const | 351 PassRefPtr<CSSValue> CSSValue::cloneForCSSOM() const |
| 532 { | 352 { |
| 533 switch (classType()) { | 353 switch (classType()) { |
| 534 case PrimitiveClass: | 354 case PrimitiveClass: |
| 535 return toCSSPrimitiveValue(this)->cloneForCSSOM(); | 355 return toCSSPrimitiveValue(this)->cloneForCSSOM(); |
| 536 case ValueListClass: | 356 case ValueListClass: |
| 537 return toCSSValueList(this)->cloneForCSSOM(); | 357 return toCSSValueList(this)->cloneForCSSOM(); |
| 538 case ImageClass: | 358 case ImageClass: |
| 539 case CursorImageClass: | 359 case CursorImageClass: |
| 540 return toCSSImageValue(this)->cloneForCSSOM(); | 360 return toCSSImageValue(this)->cloneForCSSOM(); |
| 541 case CSSFilterClass: | 361 case CSSFilterClass: |
| 542 return toCSSFilterValue(this)->cloneForCSSOM(); | 362 return toCSSFilterValue(this)->cloneForCSSOM(); |
| 543 case CSSTransformClass: | 363 case CSSTransformClass: |
| 544 return toCSSTransformValue(this)->cloneForCSSOM(); | 364 return toCSSTransformValue(this)->cloneForCSSOM(); |
| 545 case ImageSetClass: | 365 case ImageSetClass: |
| 546 return toCSSImageSetValue(this)->cloneForCSSOM(); | 366 return toCSSImageSetValue(this)->cloneForCSSOM(); |
| 547 default: | 367 default: |
| 548 ASSERT(!isSubtypeExposedToCSSOM()); | 368 ASSERT(!isSubtypeExposedToCSSOM()); |
| 549 return TextCloneCSSValue::create(classType(), cssText()); | 369 return TextCloneCSSValue::create(classType(), cssText()); |
| 550 } | 370 } |
| 551 } | 371 } |
| 552 | 372 |
| 553 } | 373 } |
| OLD | NEW |