| Index: third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp b/third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp
|
| index c75236746b912b5a401770e520f52b252cbe468e..e6801982707882ea3ee84bb4702324a22aa5cd15 100644
|
| --- a/third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp
|
| +++ b/third_party/WebKit/Source/core/css/CSSPrimitiveValue.cpp
|
| @@ -25,6 +25,8 @@
|
| #include "core/css/CSSMarkup.h"
|
| #include "core/css/CSSToLengthConversionData.h"
|
| #include "core/css/StyleSheetContents.h"
|
| +#include "core/css/serializer/CSSDeserializeStream.h"
|
| +#include "core/css/serializer/CSSSerializeStream.h"
|
| #include "core/dom/Node.h"
|
| #include "core/style/ComputedStyle.h"
|
| #include "platform/LayoutUnit.h"
|
| @@ -853,6 +855,121 @@ bool CSSPrimitiveValue::equals(const CSSPrimitiveValue& other) const
|
| return false;
|
| }
|
|
|
| +PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPrimitiveValue::deserialize(CSSDeserializeStream* stream)
|
| +{
|
| + RefPtrWillBeRawPtr<CSSValue> value = stream->readNullableRef<CSSValue>();
|
| + if (!value)
|
| + return nullptr;
|
| + return toCSSPrimitiveValue(value.get());
|
| +}
|
| +
|
| +PassRefPtrWillBeRawPtr<CSSPrimitiveValue> CSSPrimitiveValue::deserializeAfterDispatch(CSSDeserializeStream* stream)
|
| +{
|
| + UnitType type = static_cast<UnitType>(stream->readUnsigned());
|
| + switch (type) {
|
| + case UnitType::Calc: {
|
| + RefPtrWillBeRawPtr<CSSCalcValue> calcValue = CSSCalcValue::deserialize(stream);
|
| + return create(calcValue.release());
|
| + }
|
| + case UnitType::CalcPercentageWithNumber:
|
| + case UnitType::CalcPercentageWithLength:
|
| + case UnitType::Unknown:
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + return nullptr;
|
| + case UnitType::Number:
|
| + case UnitType::Integer:
|
| + case UnitType::Percentage:
|
| + case UnitType::Ems:
|
| + case UnitType::QuirkyEms:
|
| + case UnitType::Exs:
|
| + case UnitType::Rems:
|
| + case UnitType::Chs:
|
| + case UnitType::Centimeters:
|
| + case UnitType::Millimeters:
|
| + case UnitType::Inches:
|
| + case UnitType::Points:
|
| + case UnitType::Picas:
|
| + case UnitType::UserUnits:
|
| + case UnitType::Degrees:
|
| + case UnitType::Radians:
|
| + case UnitType::Gradians:
|
| + case UnitType::Milliseconds:
|
| + case UnitType::Seconds:
|
| + case UnitType::Hertz:
|
| + case UnitType::Kilohertz:
|
| + case UnitType::Turns:
|
| + case UnitType::ViewportWidth:
|
| + case UnitType::ViewportHeight:
|
| + case UnitType::ViewportMin:
|
| + case UnitType::ViewportMax:
|
| + case UnitType::DotsPerPixel:
|
| + case UnitType::DotsPerInch:
|
| + case UnitType::DotsPerCentimeter:
|
| + case UnitType::Fraction:
|
| + case UnitType::Pixels: {
|
| + double num = stream->readDouble();
|
| + return create(num, type);
|
| + }
|
| + case UnitType::ValueID: {
|
| + unsigned valueID = stream->readUnsigned();
|
| + return createIdentifier(static_cast<CSSValueID>(valueID));
|
| + }
|
| + }
|
| +}
|
| +
|
| +void CSSPrimitiveValue::serializeAfterDispatch(CSSSerializeStream* stream) const
|
| +{
|
| + stream->writeEnumAsInt<UnitType>(type());
|
| + switch (type()) {
|
| + case UnitType::Calc:
|
| + cssCalcValue()->serialize(stream);
|
| + break;
|
| + case UnitType::CalcPercentageWithNumber:
|
| + case UnitType::CalcPercentageWithLength:
|
| + case UnitType::Unknown:
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + break;
|
| + case UnitType::Number:
|
| + case UnitType::Integer:
|
| + case UnitType::Percentage:
|
| + case UnitType::Ems:
|
| + case UnitType::QuirkyEms:
|
| + case UnitType::Exs:
|
| + case UnitType::Rems:
|
| + case UnitType::Chs:
|
| + case UnitType::Centimeters:
|
| + case UnitType::Millimeters:
|
| + case UnitType::Inches:
|
| + case UnitType::Points:
|
| + case UnitType::Picas:
|
| + case UnitType::UserUnits:
|
| + case UnitType::Degrees:
|
| + case UnitType::Radians:
|
| + case UnitType::Gradians:
|
| + case UnitType::Milliseconds:
|
| + case UnitType::Seconds:
|
| + case UnitType::Hertz:
|
| + case UnitType::Kilohertz:
|
| + case UnitType::Turns:
|
| + case UnitType::ViewportWidth:
|
| + case UnitType::ViewportHeight:
|
| + case UnitType::ViewportMin:
|
| + case UnitType::ViewportMax:
|
| + case UnitType::DotsPerPixel:
|
| + case UnitType::DotsPerInch:
|
| + case UnitType::DotsPerCentimeter:
|
| + case UnitType::Fraction:
|
| + case UnitType::Pixels:
|
| + stream->writeDouble(m_value.num);
|
| + break;
|
| + case UnitType::ValueID:
|
| + stream->writeUnsigned(static_cast<unsigned>(m_value.valueID));
|
| + break;
|
| + }
|
| +}
|
| +
|
| DEFINE_TRACE_AFTER_DISPATCH(CSSPrimitiveValue)
|
| {
|
| #if ENABLE(OILPAN)
|
|
|