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

Side by Side Diff: third_party/WebKit/Source/core/css/CSSValue.cpp

Issue 1481383002: [Experimental] CSSSerializer Proof-of-concept Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: snapshot: top_25 sites ser/dser now works Created 4 years, 11 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) 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
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
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
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 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSValue.h ('k') | third_party/WebKit/Source/core/css/CSSValueList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698