mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 731271 - Part 4: Add ability for nsCSSValues to serialize themselves in their original syntactic form. r=dbaron
This commit is contained in:
parent
c1d57665b1
commit
6fe0a29f68
@ -95,7 +95,8 @@ Declaration::HasProperty(nsCSSProperty aProperty) const
|
||||
|
||||
bool
|
||||
Declaration::AppendValueToString(nsCSSProperty aProperty,
|
||||
nsAString& aResult) const
|
||||
nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
NS_ABORT_IF_FALSE(0 <= aProperty &&
|
||||
aProperty < eCSSProperty_COUNT_no_shorthands,
|
||||
@ -108,7 +109,7 @@ Declaration::AppendValueToString(nsCSSProperty aProperty,
|
||||
return false;
|
||||
}
|
||||
|
||||
val->AppendToString(aProperty, aResult);
|
||||
val->AppendToString(aProperty, aResult, aSerialization);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -117,7 +118,8 @@ Declaration::AppendValueToString(nsCSSProperty aProperty,
|
||||
static void
|
||||
AppendSidesShorthandToString(const nsCSSProperty aProperties[],
|
||||
const nsCSSValue* aValues[],
|
||||
nsAString& aString)
|
||||
nsAString& aString,
|
||||
nsCSSValue::Serialization aSerialization)
|
||||
{
|
||||
const nsCSSValue& value1 = *aValues[0];
|
||||
const nsCSSValue& value2 = *aValues[1];
|
||||
@ -125,19 +127,19 @@ AppendSidesShorthandToString(const nsCSSProperty aProperties[],
|
||||
const nsCSSValue& value4 = *aValues[3];
|
||||
|
||||
NS_ABORT_IF_FALSE(value1.GetUnit() != eCSSUnit_Null, "null value 1");
|
||||
value1.AppendToString(aProperties[0], aString);
|
||||
value1.AppendToString(aProperties[0], aString, aSerialization);
|
||||
if (value1 != value2 || value1 != value3 || value1 != value4) {
|
||||
aString.Append(PRUnichar(' '));
|
||||
NS_ABORT_IF_FALSE(value2.GetUnit() != eCSSUnit_Null, "null value 2");
|
||||
value2.AppendToString(aProperties[1], aString);
|
||||
value2.AppendToString(aProperties[1], aString, aSerialization);
|
||||
if (value1 != value3 || value2 != value4) {
|
||||
aString.Append(PRUnichar(' '));
|
||||
NS_ABORT_IF_FALSE(value3.GetUnit() != eCSSUnit_Null, "null value 3");
|
||||
value3.AppendToString(aProperties[2], aString);
|
||||
value3.AppendToString(aProperties[2], aString, aSerialization);
|
||||
if (value2 != value4) {
|
||||
aString.Append(PRUnichar(' '));
|
||||
NS_ABORT_IF_FALSE(value4.GetUnit() != eCSSUnit_Null, "null value 4");
|
||||
value4.AppendToString(aProperties[3], aString);
|
||||
value4.AppendToString(aProperties[3], aString, aSerialization);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -145,12 +147,25 @@ AppendSidesShorthandToString(const nsCSSProperty aProperties[],
|
||||
|
||||
void
|
||||
Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
{
|
||||
GetValue(aProperty, aValue, nsCSSValue::eNormalized);
|
||||
}
|
||||
|
||||
void
|
||||
Declaration::GetAuthoredValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
{
|
||||
GetValue(aProperty, aValue, nsCSSValue::eAuthorSpecified);
|
||||
}
|
||||
|
||||
void
|
||||
Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
aValue.Truncate(0);
|
||||
|
||||
// simple properties are easy.
|
||||
if (!nsCSSProps::IsShorthand(aProperty)) {
|
||||
AppendValueToString(aProperty, aValue);
|
||||
AppendValueToString(aProperty, aValue, aSerialization);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -220,17 +235,20 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
}
|
||||
if (initialCount == totalCount) {
|
||||
// Simplify serialization below by serializing initial up-front.
|
||||
nsCSSValue(eCSSUnit_Initial).AppendToString(eCSSProperty_UNKNOWN, aValue);
|
||||
nsCSSValue(eCSSUnit_Initial).AppendToString(eCSSProperty_UNKNOWN, aValue,
|
||||
nsCSSValue::eNormalized);
|
||||
return;
|
||||
}
|
||||
if (inheritCount == totalCount) {
|
||||
// Simplify serialization below by serializing inherit up-front.
|
||||
nsCSSValue(eCSSUnit_Inherit).AppendToString(eCSSProperty_UNKNOWN, aValue);
|
||||
nsCSSValue(eCSSUnit_Inherit).AppendToString(eCSSProperty_UNKNOWN, aValue,
|
||||
nsCSSValue::eNormalized);
|
||||
return;
|
||||
}
|
||||
if (unsetCount == totalCount) {
|
||||
// Simplify serialization below by serializing unset up-front.
|
||||
nsCSSValue(eCSSUnit_Unset).AppendToString(eCSSProperty_UNKNOWN, aValue);
|
||||
nsCSSValue(eCSSUnit_Unset).AppendToString(eCSSProperty_UNKNOWN, aValue,
|
||||
nsCSSValue::eNormalized);
|
||||
return;
|
||||
}
|
||||
if (initialCount != 0 || inheritCount != 0 || unsetCount != 0) {
|
||||
@ -271,7 +289,7 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
data->ValueFor(subprops[2]),
|
||||
data->ValueFor(subprops[3])
|
||||
};
|
||||
AppendSidesShorthandToString(subprops, vals, aValue);
|
||||
AppendSidesShorthandToString(subprops, vals, aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_border_radius:
|
||||
@ -300,10 +318,10 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
}
|
||||
}
|
||||
|
||||
AppendSidesShorthandToString(subprops, xVals, aValue);
|
||||
AppendSidesShorthandToString(subprops, xVals, aValue, aSerialization);
|
||||
if (needY) {
|
||||
aValue.AppendLiteral(" / ");
|
||||
AppendSidesShorthandToString(subprops, yVals, aValue);
|
||||
AppendSidesShorthandToString(subprops, yVals, aValue, aSerialization);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -312,7 +330,8 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
// 'border-image-source' (when it's none), it's probably not a
|
||||
// good idea since it's likely to be confusing. It would also
|
||||
// require adding the extra check that we serialize *something*.
|
||||
AppendValueToString(eCSSProperty_border_image_source, aValue);
|
||||
AppendValueToString(eCSSProperty_border_image_source, aValue,
|
||||
aSerialization);
|
||||
|
||||
bool sliceDefault = data->HasDefaultBorderImageSlice();
|
||||
bool widthDefault = data->HasDefaultBorderImageWidth();
|
||||
@ -320,16 +339,19 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
|
||||
if (!sliceDefault || !widthDefault || !outsetDefault) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(eCSSProperty_border_image_slice, aValue);
|
||||
AppendValueToString(eCSSProperty_border_image_slice, aValue,
|
||||
aSerialization);
|
||||
if (!widthDefault || !outsetDefault) {
|
||||
aValue.Append(NS_LITERAL_STRING(" /"));
|
||||
if (!widthDefault) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(eCSSProperty_border_image_width, aValue);
|
||||
AppendValueToString(eCSSProperty_border_image_width, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
if (!outsetDefault) {
|
||||
aValue.Append(NS_LITERAL_STRING(" / "));
|
||||
AppendValueToString(eCSSProperty_border_image_outset, aValue);
|
||||
AppendValueToString(eCSSProperty_border_image_outset, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -337,7 +359,8 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
bool repeatDefault = data->HasDefaultBorderImageRepeat();
|
||||
if (!repeatDefault) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(eCSSProperty_border_image_repeat, aValue);
|
||||
AppendValueToString(eCSSProperty_border_image_repeat, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -407,13 +430,13 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
bool isMozUseTextColor =
|
||||
colorValue->GetUnit() == eCSSUnit_Enumerated &&
|
||||
colorValue->GetIntValue() == NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR;
|
||||
if (!AppendValueToString(subprops[0], aValue) ||
|
||||
if (!AppendValueToString(subprops[0], aValue, aSerialization) ||
|
||||
!(aValue.Append(PRUnichar(' ')),
|
||||
AppendValueToString(subprops[1], aValue)) ||
|
||||
AppendValueToString(subprops[1], aValue, aSerialization)) ||
|
||||
// Don't output a third value when it's -moz-use-text-color.
|
||||
!(isMozUseTextColor ||
|
||||
(aValue.Append(PRUnichar(' ')),
|
||||
AppendValueToString(subprops[2], aValue)))) {
|
||||
AppendValueToString(subprops[2], aValue, aSerialization)))) {
|
||||
aValue.Truncate();
|
||||
}
|
||||
break;
|
||||
@ -442,7 +465,7 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
nsCSSProps::SubpropertyEntryFor(aProperty);
|
||||
NS_ABORT_IF_FALSE(subprops[3] == eCSSProperty_UNKNOWN,
|
||||
"not box property with physical vs. logical cascading");
|
||||
AppendValueToString(subprops[0], aValue);
|
||||
AppendValueToString(subprops[0], aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_background: {
|
||||
@ -475,27 +498,32 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
data->ValueFor(eCSSProperty_background_size)->
|
||||
GetPairListValue();
|
||||
for (;;) {
|
||||
image->mValue.AppendToString(eCSSProperty_background_image, aValue);
|
||||
image->mValue.AppendToString(eCSSProperty_background_image, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
repeat->mXValue.AppendToString(eCSSProperty_background_repeat, aValue);
|
||||
repeat->mXValue.AppendToString(eCSSProperty_background_repeat, aValue,
|
||||
aSerialization);
|
||||
if (repeat->mYValue.GetUnit() != eCSSUnit_Null) {
|
||||
repeat->mYValue.AppendToString(eCSSProperty_background_repeat, aValue);
|
||||
repeat->mYValue.AppendToString(eCSSProperty_background_repeat, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
aValue.Append(PRUnichar(' '));
|
||||
attachment->mValue.AppendToString(eCSSProperty_background_attachment,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
position->mValue.AppendToString(eCSSProperty_background_position,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
|
||||
if (size->mXValue.GetUnit() != eCSSUnit_Auto ||
|
||||
size->mYValue.GetUnit() != eCSSUnit_Auto) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
aValue.Append(PRUnichar('/'));
|
||||
aValue.Append(PRUnichar(' '));
|
||||
size->mXValue.AppendToString(eCSSProperty_background_size, aValue);
|
||||
size->mXValue.AppendToString(eCSSProperty_background_size, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
size->mYValue.AppendToString(eCSSProperty_background_size, aValue);
|
||||
size->mYValue.AppendToString(eCSSProperty_background_size, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
|
||||
NS_ABORT_IF_FALSE(clip->mValue.GetUnit() == eCSSUnit_Enumerated &&
|
||||
@ -518,11 +546,13 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
NS_STYLE_BG_ORIGIN_CONTENT,
|
||||
"bg-clip and bg-origin style constants must agree");
|
||||
aValue.Append(PRUnichar(' '));
|
||||
origin->mValue.AppendToString(eCSSProperty_background_origin, aValue);
|
||||
origin->mValue.AppendToString(eCSSProperty_background_origin, aValue,
|
||||
aSerialization);
|
||||
|
||||
if (clip->mValue != origin->mValue) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
clip->mValue.AppendToString(eCSSProperty_background_clip, aValue);
|
||||
clip->mValue.AppendToString(eCSSProperty_background_clip, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
}
|
||||
|
||||
@ -552,7 +582,8 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
}
|
||||
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(eCSSProperty_background_color, aValue);
|
||||
AppendValueToString(eCSSProperty_background_color, aValue,
|
||||
aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_font: {
|
||||
@ -629,7 +660,8 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
// This can't be represented as a shorthand.
|
||||
return;
|
||||
}
|
||||
systemFont->AppendToString(eCSSProperty__x_system_font, aValue);
|
||||
systemFont->AppendToString(eCSSProperty__x_system_font, aValue,
|
||||
aSerialization);
|
||||
} else {
|
||||
// properties reset by this shorthand property to their
|
||||
// initial values but not represented in its syntax
|
||||
@ -654,35 +686,44 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
|
||||
if (style->GetUnit() != eCSSUnit_Enumerated ||
|
||||
style->GetIntValue() != NS_FONT_STYLE_NORMAL) {
|
||||
style->AppendToString(eCSSProperty_font_style, aValue);
|
||||
style->AppendToString(eCSSProperty_font_style, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
if (variant->GetUnit() != eCSSUnit_Enumerated ||
|
||||
variant->GetIntValue() != NS_FONT_VARIANT_NORMAL) {
|
||||
variant->AppendToString(eCSSProperty_font_variant, aValue);
|
||||
variant->AppendToString(eCSSProperty_font_variant, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
if (weight->GetUnit() != eCSSUnit_Enumerated ||
|
||||
weight->GetIntValue() != NS_FONT_WEIGHT_NORMAL) {
|
||||
weight->AppendToString(eCSSProperty_font_weight, aValue);
|
||||
weight->AppendToString(eCSSProperty_font_weight, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
size->AppendToString(eCSSProperty_font_size, aValue);
|
||||
size->AppendToString(eCSSProperty_font_size, aValue, aSerialization);
|
||||
if (lh->GetUnit() != eCSSUnit_Normal) {
|
||||
aValue.Append(PRUnichar('/'));
|
||||
lh->AppendToString(eCSSProperty_line_height, aValue);
|
||||
lh->AppendToString(eCSSProperty_line_height, aValue, aSerialization);
|
||||
}
|
||||
aValue.Append(PRUnichar(' '));
|
||||
family->AppendToString(eCSSProperty_font_family, aValue);
|
||||
family->AppendToString(eCSSProperty_font_family, aValue,
|
||||
aSerialization);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_list_style:
|
||||
if (AppendValueToString(eCSSProperty_list_style_type, aValue))
|
||||
if (AppendValueToString(eCSSProperty_list_style_type, aValue,
|
||||
aSerialization)) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
if (AppendValueToString(eCSSProperty_list_style_position, aValue))
|
||||
}
|
||||
if (AppendValueToString(eCSSProperty_list_style_position, aValue,
|
||||
aSerialization)) {
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(eCSSProperty_list_style_image, aValue);
|
||||
}
|
||||
AppendValueToString(eCSSProperty_list_style_image, aValue,
|
||||
aSerialization);
|
||||
break;
|
||||
case eCSSProperty_overflow: {
|
||||
const nsCSSValue &xValue =
|
||||
@ -690,7 +731,7 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
const nsCSSValue &yValue =
|
||||
*data->ValueFor(eCSSProperty_overflow_y);
|
||||
if (xValue == yValue)
|
||||
xValue.AppendToString(eCSSProperty_overflow_x, aValue);
|
||||
xValue.AppendToString(eCSSProperty_overflow_x, aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_text_decoration: {
|
||||
@ -712,7 +753,8 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
return;
|
||||
}
|
||||
|
||||
AppendValueToString(eCSSProperty_text_decoration_line, aValue);
|
||||
AppendValueToString(eCSSProperty_text_decoration_line, aValue,
|
||||
aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_transition: {
|
||||
@ -747,14 +789,17 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
// If any of the other three lists has more than one element,
|
||||
// we can't use the shorthand.
|
||||
if (!dur->mNext && !tim->mNext && !del->mNext) {
|
||||
transProp->AppendToString(eCSSProperty_transition_property, aValue);
|
||||
transProp->AppendToString(eCSSProperty_transition_property, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
dur->mValue.AppendToString(eCSSProperty_transition_duration,aValue);
|
||||
dur->mValue.AppendToString(eCSSProperty_transition_duration,aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
tim->mValue.AppendToString(eCSSProperty_transition_timing_function,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
del->mValue.AppendToString(eCSSProperty_transition_delay, aValue);
|
||||
del->mValue.AppendToString(eCSSProperty_transition_delay, aValue,
|
||||
aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
} else {
|
||||
aValue.Truncate();
|
||||
@ -767,16 +812,16 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
const nsCSSValueList* pro = transProp->GetListValue();
|
||||
for (;;) {
|
||||
pro->mValue.AppendToString(eCSSProperty_transition_property,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
dur->mValue.AppendToString(eCSSProperty_transition_duration,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
tim->mValue.AppendToString(eCSSProperty_transition_timing_function,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
del->mValue.AppendToString(eCSSProperty_transition_delay,
|
||||
aValue);
|
||||
aValue, aSerialization);
|
||||
pro = pro->mNext;
|
||||
dur = dur->mNext;
|
||||
tim = tim->mNext;
|
||||
@ -819,7 +864,7 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
"animation-name must be last");
|
||||
bool done = false;
|
||||
for (uint32_t i = 0;;) {
|
||||
lists[i]->mValue.AppendToString(subprops[i], aValue);
|
||||
lists[i]->mValue.AppendToString(subprops[i], aValue, aSerialization);
|
||||
lists[i] = lists[i]->mNext;
|
||||
if (!lists[i]) {
|
||||
done = true;
|
||||
@ -851,16 +896,16 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
const nsCSSValue &startValue =
|
||||
*data->ValueFor(eCSSProperty_marker_start);
|
||||
if (endValue == midValue && midValue == startValue)
|
||||
AppendValueToString(eCSSProperty_marker_end, aValue);
|
||||
AppendValueToString(eCSSProperty_marker_end, aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty__moz_columns: {
|
||||
// Two values, column-count and column-width, separated by a space.
|
||||
const nsCSSProperty* subprops =
|
||||
nsCSSProps::SubpropertyEntryFor(aProperty);
|
||||
AppendValueToString(subprops[0], aValue);
|
||||
AppendValueToString(subprops[0], aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(subprops[1], aValue);
|
||||
AppendValueToString(subprops[1], aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_flex: {
|
||||
@ -868,11 +913,11 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
const nsCSSProperty* subprops =
|
||||
nsCSSProps::SubpropertyEntryFor(aProperty);
|
||||
|
||||
AppendValueToString(subprops[0], aValue);
|
||||
AppendValueToString(subprops[0], aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(subprops[1], aValue);
|
||||
AppendValueToString(subprops[1], aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(subprops[2], aValue);
|
||||
AppendValueToString(subprops[2], aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_flex_flow: {
|
||||
@ -882,9 +927,9 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
NS_ABORT_IF_FALSE(subprops[2] == eCSSProperty_UNKNOWN,
|
||||
"must have exactly two subproperties");
|
||||
|
||||
AppendValueToString(subprops[0], aValue);
|
||||
AppendValueToString(subprops[0], aValue, aSerialization);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
AppendValueToString(subprops[1], aValue);
|
||||
AppendValueToString(subprops[1], aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty__moz_transform: {
|
||||
@ -893,7 +938,7 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
||||
nsCSSProps::SubpropertyEntryFor(aProperty);
|
||||
NS_ABORT_IF_FALSE(subprops[1] == eCSSProperty_UNKNOWN,
|
||||
"must have exactly one subproperty");
|
||||
AppendValueToString(subprops[0], aValue);
|
||||
AppendValueToString(subprops[0], aValue, aSerialization);
|
||||
break;
|
||||
}
|
||||
case eCSSProperty_all:
|
||||
@ -961,7 +1006,7 @@ Declaration::AppendPropertyAndValueToString(nsCSSProperty aProperty,
|
||||
AppendASCIItoUTF16(nsCSSProps::GetStringValue(aProperty), aResult);
|
||||
aResult.AppendLiteral(": ");
|
||||
if (aValue.IsEmpty())
|
||||
AppendValueToString(aProperty, aResult);
|
||||
AppendValueToString(aProperty, aResult, nsCSSValue::eNormalized);
|
||||
else
|
||||
aResult.Append(aValue);
|
||||
if (GetValueIsImportant(aProperty)) {
|
||||
@ -1096,7 +1141,8 @@ Declaration::ToString(nsAString& aString) const
|
||||
// Output the shorthand font declaration that we will
|
||||
// partially override later. But don't add it to
|
||||
// |shorthandsUsed|, since we will have to override it.
|
||||
systemFont->AppendToString(eCSSProperty__x_system_font, value);
|
||||
systemFont->AppendToString(eCSSProperty__x_system_font, value,
|
||||
nsCSSValue::eNormalized);
|
||||
AppendPropertyAndValueToString(eCSSProperty_font, value, aString);
|
||||
value.Truncate();
|
||||
didSystemFont = true;
|
||||
|
@ -63,6 +63,7 @@ public:
|
||||
bool HasProperty(nsCSSProperty aProperty) const;
|
||||
|
||||
void GetValue(nsCSSProperty aProperty, nsAString& aValue) const;
|
||||
void GetAuthoredValue(nsCSSProperty aProperty, nsAString& aValue) const;
|
||||
|
||||
bool HasImportantData() const {
|
||||
return mImportantData || mImportantVariables;
|
||||
@ -278,9 +279,14 @@ private:
|
||||
Declaration& operator=(const Declaration& aCopy) MOZ_DELETE;
|
||||
bool operator==(const Declaration& aCopy) const MOZ_DELETE;
|
||||
|
||||
void GetValue(nsCSSProperty aProperty, nsAString& aValue,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
static void AppendImportanceToString(bool aIsImportant, nsAString& aString);
|
||||
// return whether there was a value in |aValue| (i.e., it had a non-null unit)
|
||||
bool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
bool AppendValueToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
// Helper for ToString with strange semantics regarding aValue.
|
||||
void AppendPropertyAndValueToString(nsCSSProperty aProperty,
|
||||
nsAutoString& aValue,
|
||||
|
@ -1512,15 +1512,18 @@ nsCSSFontFaceStyleDecl::GetPropertyValue(nsCSSFontDesc aFontDescID,
|
||||
}
|
||||
|
||||
case eCSSFontDesc_Style:
|
||||
val.AppendToString(eCSSProperty_font_style, aResult);
|
||||
val.AppendToString(eCSSProperty_font_style, aResult,
|
||||
nsCSSValue::eNormalized);
|
||||
return NS_OK;
|
||||
|
||||
case eCSSFontDesc_Weight:
|
||||
val.AppendToString(eCSSProperty_font_weight, aResult);
|
||||
val.AppendToString(eCSSProperty_font_weight, aResult,
|
||||
nsCSSValue::eNormalized);
|
||||
return NS_OK;
|
||||
|
||||
case eCSSFontDesc_Stretch:
|
||||
val.AppendToString(eCSSProperty_font_stretch, aResult);
|
||||
val.AppendToString(eCSSProperty_font_stretch, aResult,
|
||||
nsCSSValue::eNormalized);
|
||||
return NS_OK;
|
||||
|
||||
case eCSSFontDesc_FontFeatureSettings:
|
||||
@ -1528,7 +1531,8 @@ nsCSSFontFaceStyleDecl::GetPropertyValue(nsCSSFontDesc aFontDescID,
|
||||
return NS_OK;
|
||||
|
||||
case eCSSFontDesc_FontLanguageOverride:
|
||||
val.AppendToString(eCSSProperty_font_language_override, aResult);
|
||||
val.AppendToString(eCSSProperty_font_language_override, aResult,
|
||||
nsCSSValue::eNormalized);
|
||||
return NS_OK;
|
||||
|
||||
case eCSSFontDesc_Src:
|
||||
|
@ -381,7 +381,8 @@ nsMediaQuery::AppendToString(nsAString& aString) const
|
||||
NS_ASSERTION(expr.mValue.IsLengthUnit(), "bad unit");
|
||||
// Use 'width' as a property that takes length values
|
||||
// written in the normal way.
|
||||
expr.mValue.AppendToString(eCSSProperty_width, aString);
|
||||
expr.mValue.AppendToString(eCSSProperty_width, aString,
|
||||
nsCSSValue::eNormalized);
|
||||
break;
|
||||
case nsMediaFeature::eInteger:
|
||||
case nsMediaFeature::eBoolInteger:
|
||||
@ -389,7 +390,8 @@ nsMediaQuery::AppendToString(nsAString& aString) const
|
||||
"bad unit");
|
||||
// Use 'z-index' as a property that takes integer values
|
||||
// written without anything extra.
|
||||
expr.mValue.AppendToString(eCSSProperty_z_index, aString);
|
||||
expr.mValue.AppendToString(eCSSProperty_z_index, aString,
|
||||
nsCSSValue::eNormalized);
|
||||
break;
|
||||
case nsMediaFeature::eFloat:
|
||||
{
|
||||
@ -397,7 +399,8 @@ nsMediaQuery::AppendToString(nsAString& aString) const
|
||||
"bad unit");
|
||||
// Use 'line-height' as a property that takes float values
|
||||
// written in the normal way.
|
||||
expr.mValue.AppendToString(eCSSProperty_line_height, aString);
|
||||
expr.mValue.AppendToString(eCSSProperty_line_height, aString,
|
||||
nsCSSValue::eNormalized);
|
||||
}
|
||||
break;
|
||||
case nsMediaFeature::eIntRatio:
|
||||
@ -410,9 +413,11 @@ nsMediaQuery::AppendToString(nsAString& aString) const
|
||||
"bad unit");
|
||||
NS_ASSERTION(array->Item(1).GetUnit() == eCSSUnit_Integer,
|
||||
"bad unit");
|
||||
array->Item(0).AppendToString(eCSSProperty_z_index, aString);
|
||||
array->Item(0).AppendToString(eCSSProperty_z_index, aString,
|
||||
nsCSSValue::eNormalized);
|
||||
aString.AppendLiteral("/");
|
||||
array->Item(1).AppendToString(eCSSProperty_z_index, aString);
|
||||
array->Item(1).AppendToString(eCSSProperty_z_index, aString,
|
||||
nsCSSValue::eNormalized);
|
||||
}
|
||||
break;
|
||||
case nsMediaFeature::eResolution:
|
||||
|
@ -738,9 +738,11 @@ nsCSSValue::BufferFromString(const nsString& aValue)
|
||||
namespace {
|
||||
|
||||
struct CSSValueSerializeCalcOps {
|
||||
CSSValueSerializeCalcOps(nsCSSProperty aProperty, nsAString& aResult)
|
||||
CSSValueSerializeCalcOps(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization)
|
||||
: mProperty(aProperty),
|
||||
mResult(aResult)
|
||||
mResult(aResult),
|
||||
mValueSerialization(aSerialization)
|
||||
{
|
||||
}
|
||||
|
||||
@ -760,24 +762,26 @@ struct CSSValueSerializeCalcOps {
|
||||
{
|
||||
NS_ABORT_IF_FALSE(aValue.GetUnit() == eCSSUnit_Percent ||
|
||||
aValue.IsLengthUnit(), "unexpected unit");
|
||||
aValue.AppendToString(mProperty, mResult);
|
||||
aValue.AppendToString(mProperty, mResult, mValueSerialization);
|
||||
}
|
||||
|
||||
void AppendNumber(const input_type& aValue)
|
||||
{
|
||||
NS_ABORT_IF_FALSE(aValue.GetUnit() == eCSSUnit_Number, "unexpected unit");
|
||||
aValue.AppendToString(mProperty, mResult);
|
||||
aValue.AppendToString(mProperty, mResult, mValueSerialization);
|
||||
}
|
||||
|
||||
private:
|
||||
nsCSSProperty mProperty;
|
||||
nsAString &mResult;
|
||||
nsCSSValue::Serialization mValueSerialization;
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
void
|
||||
nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
Serialization aSerialization) const
|
||||
{
|
||||
// eCSSProperty_UNKNOWN gets used for some recursive calls below.
|
||||
NS_ABORT_IF_FALSE((0 <= aProperty &&
|
||||
@ -844,7 +848,7 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
i == array->Count() - 1)
|
||||
? eCSSProperty_list_style_type : aProperty;
|
||||
if (array->Item(i).GetUnit() != eCSSUnit_Null) {
|
||||
array->Item(i).AppendToString(prop, aResult);
|
||||
array->Item(i).AppendToString(prop, aResult, aSerialization);
|
||||
mark = true;
|
||||
}
|
||||
}
|
||||
@ -902,7 +906,8 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
|
||||
/* Now, step through the function contents, writing each of them as we go. */
|
||||
for (size_t index = 1; index < array->Count(); ++index) {
|
||||
array->Item(index).AppendToString(aProperty, aResult);
|
||||
array->Item(index).AppendToString(aProperty, aResult,
|
||||
aSerialization);
|
||||
|
||||
/* If we're not at the final element, append a comma. */
|
||||
if (index + 1 != array->Count())
|
||||
@ -914,7 +919,7 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
}
|
||||
else if (IsCalcUnit()) {
|
||||
NS_ABORT_IF_FALSE(GetUnit() == eCSSUnit_Calc, "unexpected unit");
|
||||
CSSValueSerializeCalcOps ops(aProperty, aResult);
|
||||
CSSValueSerializeCalcOps ops(aProperty, aResult, aSerialization);
|
||||
css::SerializeCalc(*this, ops);
|
||||
}
|
||||
else if (eCSSUnit_Integer == unit) {
|
||||
@ -1112,10 +1117,12 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
} else {
|
||||
NS_ABORT_IF_FALSE(gradient->GetRadiusX().GetUnit() != eCSSUnit_None,
|
||||
"bad unit for radial gradient explicit size");
|
||||
gradient->GetRadiusX().AppendToString(aProperty, aResult);
|
||||
gradient->GetRadiusX().AppendToString(aProperty, aResult,
|
||||
aSerialization);
|
||||
if (gradient->GetRadiusY().GetUnit() != eCSSUnit_None) {
|
||||
aResult.AppendLiteral(" ");
|
||||
gradient->GetRadiusY().AppendToString(aProperty, aResult);
|
||||
gradient->GetRadiusY().AppendToString(aProperty, aResult,
|
||||
aSerialization);
|
||||
}
|
||||
needSep = true;
|
||||
}
|
||||
@ -1131,16 +1138,16 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
if (!(gradient->mBgPos.mXValue.GetIntValue() & NS_STYLE_BG_POSITION_CENTER)) {
|
||||
aResult.AppendLiteral(" ");
|
||||
gradient->mBgPos.mXValue.AppendToString(eCSSProperty_background_position,
|
||||
aResult);
|
||||
aResult, aSerialization);
|
||||
}
|
||||
if (!(gradient->mBgPos.mYValue.GetIntValue() & NS_STYLE_BG_POSITION_CENTER)) {
|
||||
aResult.AppendLiteral(" ");
|
||||
gradient->mBgPos.mYValue.AppendToString(eCSSProperty_background_position,
|
||||
aResult);
|
||||
aResult, aSerialization);
|
||||
}
|
||||
needSep = true;
|
||||
} else if (gradient->mAngle.GetUnit() != eCSSUnit_None) {
|
||||
gradient->mAngle.AppendToString(aProperty, aResult);
|
||||
gradient->mAngle.AppendToString(aProperty, aResult, aSerialization);
|
||||
needSep = true;
|
||||
}
|
||||
} else if (gradient->mBgPos.mXValue.GetUnit() != eCSSUnit_None ||
|
||||
@ -1154,18 +1161,18 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
}
|
||||
if (gradient->mBgPos.mXValue.GetUnit() != eCSSUnit_None) {
|
||||
gradient->mBgPos.mXValue.AppendToString(eCSSProperty_background_position,
|
||||
aResult);
|
||||
aResult, aSerialization);
|
||||
aResult.AppendLiteral(" ");
|
||||
}
|
||||
if (gradient->mBgPos.mXValue.GetUnit() != eCSSUnit_None) {
|
||||
gradient->mBgPos.mYValue.AppendToString(eCSSProperty_background_position,
|
||||
aResult);
|
||||
aResult, aSerialization);
|
||||
aResult.AppendLiteral(" ");
|
||||
}
|
||||
if (gradient->mAngle.GetUnit() != eCSSUnit_None) {
|
||||
NS_ABORT_IF_FALSE(gradient->mIsLegacySyntax,
|
||||
"angle is allowed only for legacy syntax");
|
||||
gradient->mAngle.AppendToString(aProperty, aResult);
|
||||
gradient->mAngle.AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
needSep = true;
|
||||
}
|
||||
@ -1206,10 +1213,12 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
}
|
||||
|
||||
for (uint32_t i = 0 ;;) {
|
||||
gradient->mStops[i].mColor.AppendToString(aProperty, aResult);
|
||||
gradient->mStops[i].mColor.AppendToString(aProperty, aResult,
|
||||
aSerialization);
|
||||
if (gradient->mStops[i].mLocation.GetUnit() != eCSSUnit_None) {
|
||||
aResult.AppendLiteral(" ");
|
||||
gradient->mStops[i].mLocation.AppendToString(aProperty, aResult);
|
||||
gradient->mStops[i].mLocation.AppendToString(aProperty, aResult,
|
||||
aSerialization);
|
||||
}
|
||||
if (++i == gradient->mStops.Length()) {
|
||||
break;
|
||||
@ -1247,23 +1256,23 @@ nsCSSValue::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
nsStyleUtil::SerializeFunctionalAlternates(altValues, out);
|
||||
aResult.Append(out);
|
||||
} else {
|
||||
GetPairValue().AppendToString(aProperty, aResult);
|
||||
GetPairValue().AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
} else if (eCSSUnit_Triplet == unit) {
|
||||
GetTripletValue().AppendToString(aProperty, aResult);
|
||||
GetTripletValue().AppendToString(aProperty, aResult, aSerialization);
|
||||
} else if (eCSSUnit_Rect == unit) {
|
||||
GetRectValue().AppendToString(aProperty, aResult);
|
||||
GetRectValue().AppendToString(aProperty, aResult, aSerialization);
|
||||
} else if (eCSSUnit_List == unit || eCSSUnit_ListDep == unit) {
|
||||
GetListValue()->AppendToString(aProperty, aResult);
|
||||
GetListValue()->AppendToString(aProperty, aResult, aSerialization);
|
||||
} else if (eCSSUnit_SharedList == unit) {
|
||||
GetSharedListValue()->AppendToString(aProperty, aResult);
|
||||
GetSharedListValue()->AppendToString(aProperty, aResult, aSerialization);
|
||||
} else if (eCSSUnit_PairList == unit || eCSSUnit_PairListDep == unit) {
|
||||
switch (aProperty) {
|
||||
case eCSSProperty_font_feature_settings:
|
||||
nsStyleUtil::AppendFontFeatureSettings(*this, aResult);
|
||||
break;
|
||||
default:
|
||||
GetPairListValue()->AppendToString(aProperty, aResult);
|
||||
GetPairListValue()->AppendToString(aProperty, aResult, aSerialization);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1554,11 +1563,12 @@ nsCSSValueList::CloneInto(nsCSSValueList* aList) const
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSValueList::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
nsCSSValueList::AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
const nsCSSValueList* val = this;
|
||||
for (;;) {
|
||||
val->mValue.AppendToString(aProperty, aResult);
|
||||
val->mValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
val = val->mNext;
|
||||
if (!val)
|
||||
break;
|
||||
@ -1618,10 +1628,11 @@ nsCSSValueSharedList::~nsCSSValueSharedList()
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSValueSharedList::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
nsCSSValueSharedList::AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
if (mHead) {
|
||||
mHead->AppendToString(aProperty, aResult);
|
||||
mHead->AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1663,7 +1674,8 @@ nsCSSRect::~nsCSSRect()
|
||||
}
|
||||
|
||||
void
|
||||
nsCSSRect::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
nsCSSRect::AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
NS_ABORT_IF_FALSE(mTop.GetUnit() != eCSSUnit_Null &&
|
||||
mTop.GetUnit() != eCSSUnit_Inherit &&
|
||||
@ -1676,24 +1688,24 @@ nsCSSRect::AppendToString(nsCSSProperty aProperty, nsAString& aResult) const
|
||||
eCSSProperty_border_image_outset == aProperty) {
|
||||
NS_NAMED_LITERAL_STRING(space, " ");
|
||||
|
||||
mTop.AppendToString(aProperty, aResult);
|
||||
mTop.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(space);
|
||||
mRight.AppendToString(aProperty, aResult);
|
||||
mRight.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(space);
|
||||
mBottom.AppendToString(aProperty, aResult);
|
||||
mBottom.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(space);
|
||||
mLeft.AppendToString(aProperty, aResult);
|
||||
mLeft.AppendToString(aProperty, aResult, aSerialization);
|
||||
} else {
|
||||
NS_NAMED_LITERAL_STRING(comma, ", ");
|
||||
|
||||
aResult.AppendLiteral("rect(");
|
||||
mTop.AppendToString(aProperty, aResult);
|
||||
mTop.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(comma);
|
||||
mRight.AppendToString(aProperty, aResult);
|
||||
mRight.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(comma);
|
||||
mBottom.AppendToString(aProperty, aResult);
|
||||
mBottom.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(comma);
|
||||
mLeft.AppendToString(aProperty, aResult);
|
||||
mLeft.AppendToString(aProperty, aResult, aSerialization);
|
||||
aResult.Append(PRUnichar(')'));
|
||||
}
|
||||
}
|
||||
@ -1732,12 +1744,13 @@ static_assert(NS_SIDE_TOP == 0 && NS_SIDE_RIGHT == 1 &&
|
||||
|
||||
void
|
||||
nsCSSValuePair::AppendToString(nsCSSProperty aProperty,
|
||||
nsAString& aResult) const
|
||||
nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
mXValue.AppendToString(aProperty, aResult);
|
||||
mXValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
if (mYValue.GetUnit() != eCSSUnit_Null) {
|
||||
aResult.Append(PRUnichar(' '));
|
||||
mYValue.AppendToString(aProperty, aResult);
|
||||
mYValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1763,15 +1776,16 @@ nsCSSValuePair_heap::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) co
|
||||
|
||||
void
|
||||
nsCSSValueTriplet::AppendToString(nsCSSProperty aProperty,
|
||||
nsAString& aResult) const
|
||||
nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
mXValue.AppendToString(aProperty, aResult);
|
||||
mXValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
if (mYValue.GetUnit() != eCSSUnit_Null) {
|
||||
aResult.Append(PRUnichar(' '));
|
||||
mYValue.AppendToString(aProperty, aResult);
|
||||
mYValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
if (mZValue.GetUnit() != eCSSUnit_Null) {
|
||||
aResult.Append(PRUnichar(' '));
|
||||
mZValue.AppendToString(aProperty, aResult);
|
||||
mZValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1810,19 +1824,20 @@ nsCSSValuePairList::Clone() const
|
||||
|
||||
void
|
||||
nsCSSValuePairList::AppendToString(nsCSSProperty aProperty,
|
||||
nsAString& aResult) const
|
||||
nsAString& aResult,
|
||||
nsCSSValue::Serialization aSerialization) const
|
||||
{
|
||||
const nsCSSValuePairList* item = this;
|
||||
for (;;) {
|
||||
NS_ABORT_IF_FALSE(item->mXValue.GetUnit() != eCSSUnit_Null,
|
||||
"unexpected null unit");
|
||||
item->mXValue.AppendToString(aProperty, aResult);
|
||||
item->mXValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
if (item->mXValue.GetUnit() != eCSSUnit_Inherit &&
|
||||
item->mXValue.GetUnit() != eCSSUnit_Initial &&
|
||||
item->mXValue.GetUnit() != eCSSUnit_Unset &&
|
||||
item->mYValue.GetUnit() != eCSSUnit_Null) {
|
||||
aResult.Append(PRUnichar(' '));
|
||||
item->mYValue.AppendToString(aProperty, aResult);
|
||||
item->mYValue.AppendToString(aProperty, aResult, aSerialization);
|
||||
}
|
||||
item = item->mNext;
|
||||
if (!item)
|
||||
|
@ -311,11 +311,15 @@ public:
|
||||
return !(*this == aOther);
|
||||
}
|
||||
|
||||
// Enum for AppendToString's aValueSerialization argument.
|
||||
enum Serialization { eNormalized, eAuthorSpecified };
|
||||
|
||||
/**
|
||||
* Serialize |this| as a specified value for |aProperty| and append
|
||||
* it to |aResult|.
|
||||
*/
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
Serialization aValueSerialization) const;
|
||||
|
||||
nsCSSUnit GetUnit() const { return mUnit; }
|
||||
bool IsLengthUnit() const
|
||||
@ -725,7 +729,8 @@ struct nsCSSValueList {
|
||||
|
||||
nsCSSValueList* Clone() const; // makes a deep copy
|
||||
void CloneInto(nsCSSValueList* aList) const; // makes a deep copy into aList
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
bool operator==(nsCSSValueList const& aOther) const;
|
||||
bool operator!=(const nsCSSValueList& aOther) const
|
||||
@ -775,7 +780,8 @@ struct nsCSSValueSharedList {
|
||||
|
||||
NS_INLINE_DECL_REFCOUNTING(nsCSSValueSharedList)
|
||||
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
bool operator==(nsCSSValueSharedList const& aOther) const;
|
||||
bool operator!=(const nsCSSValueSharedList& aOther) const
|
||||
@ -815,7 +821,8 @@ struct nsCSSRect {
|
||||
nsCSSRect(const nsCSSRect& aCopy);
|
||||
~nsCSSRect();
|
||||
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
bool operator==(const nsCSSRect& aOther) const {
|
||||
return mTop == aOther.mTop &&
|
||||
@ -944,7 +951,8 @@ struct nsCSSValuePair {
|
||||
mYValue.GetUnit() != eCSSUnit_Null;
|
||||
}
|
||||
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
|
||||
|
||||
@ -1029,7 +1037,8 @@ struct nsCSSValueTriplet {
|
||||
mZValue.GetUnit() != eCSSUnit_Null;
|
||||
}
|
||||
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
nsCSSValue mXValue;
|
||||
nsCSSValue mYValue;
|
||||
@ -1086,7 +1095,8 @@ struct nsCSSValuePairList {
|
||||
~nsCSSValuePairList();
|
||||
|
||||
nsCSSValuePairList* Clone() const; // makes a deep copy
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult) const;
|
||||
void AppendToString(nsCSSProperty aProperty, nsAString& aResult,
|
||||
nsCSSValue::Serialization aValueSerialization) const;
|
||||
|
||||
bool operator==(const nsCSSValuePairList& aOther) const;
|
||||
bool operator!=(const nsCSSValuePairList& aOther) const
|
||||
|
@ -2687,7 +2687,7 @@ nsStyleAnimation::UncomputeValue(nsCSSProperty aProperty,
|
||||
return false;
|
||||
}
|
||||
|
||||
val.AppendToString(aProperty, aSpecifiedValue);
|
||||
val.AppendToString(aProperty, aSpecifiedValue, nsCSSValue::eNormalized);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user