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

Unified Diff: third_party/WebKit/Source/core/css/CSSPrimitiveValue.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 side-by-side diff with in-line comments
Download patch
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)
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSPrimitiveValue.h ('k') | third_party/WebKit/Source/core/css/CSSQuadValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698