зеркало из https://github.com/mozilla/gecko-dev.git
Bug 886691 - switch from references to pointers for values within GetValue. r=dbaron
This commit is contained in:
Родитель
e2baf5a4ad
Коммит
9903bd2223
|
@ -527,72 +527,75 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
|||
break;
|
||||
}
|
||||
case eCSSProperty_font: {
|
||||
// systemFont might not be present; the others are guaranteed to be
|
||||
// based on the shorthand check at the beginning of the function
|
||||
// systemFont might not be present; other values are guaranteed to be
|
||||
// available based on the shorthand check at the beginning of the
|
||||
// function, as long as the prop is enabled
|
||||
const nsCSSValue *systemFont =
|
||||
data->ValueFor(eCSSProperty__x_system_font);
|
||||
const nsCSSValue &style =
|
||||
*data->ValueFor(eCSSProperty_font_style);
|
||||
const nsCSSValue &variant =
|
||||
*data->ValueFor(eCSSProperty_font_variant);
|
||||
const nsCSSValue &weight =
|
||||
*data->ValueFor(eCSSProperty_font_weight);
|
||||
const nsCSSValue &size =
|
||||
*data->ValueFor(eCSSProperty_font_size);
|
||||
const nsCSSValue &lh =
|
||||
*data->ValueFor(eCSSProperty_line_height);
|
||||
const nsCSSValue &family =
|
||||
*data->ValueFor(eCSSProperty_font_family);
|
||||
const nsCSSValue &stretch =
|
||||
*data->ValueFor(eCSSProperty_font_stretch);
|
||||
const nsCSSValue &sizeAdjust =
|
||||
*data->ValueFor(eCSSProperty_font_size_adjust);
|
||||
const nsCSSValue &featureSettings =
|
||||
*data->ValueFor(eCSSProperty_font_feature_settings);
|
||||
const nsCSSValue &languageOverride =
|
||||
*data->ValueFor(eCSSProperty_font_language_override);
|
||||
const nsCSSValue &fontKerning =
|
||||
*data->ValueFor(eCSSProperty_font_kerning);
|
||||
const nsCSSValue &fontSynthesis =
|
||||
*data->ValueFor(eCSSProperty_font_synthesis);
|
||||
const nsCSSValue &fontVariantAlternates =
|
||||
*data->ValueFor(eCSSProperty_font_variant_alternates);
|
||||
const nsCSSValue &fontVariantCaps =
|
||||
*data->ValueFor(eCSSProperty_font_variant_caps);
|
||||
const nsCSSValue &fontVariantEastAsian =
|
||||
*data->ValueFor(eCSSProperty_font_variant_east_asian);
|
||||
const nsCSSValue &fontVariantLigatures =
|
||||
*data->ValueFor(eCSSProperty_font_variant_ligatures);
|
||||
const nsCSSValue &fontVariantNumeric =
|
||||
*data->ValueFor(eCSSProperty_font_variant_numeric);
|
||||
const nsCSSValue &fontVariantPosition =
|
||||
*data->ValueFor(eCSSProperty_font_variant_position);
|
||||
const nsCSSValue *style =
|
||||
data->ValueFor(eCSSProperty_font_style);
|
||||
const nsCSSValue *variant =
|
||||
data->ValueFor(eCSSProperty_font_variant);
|
||||
const nsCSSValue *weight =
|
||||
data->ValueFor(eCSSProperty_font_weight);
|
||||
const nsCSSValue *size =
|
||||
data->ValueFor(eCSSProperty_font_size);
|
||||
const nsCSSValue *lh =
|
||||
data->ValueFor(eCSSProperty_line_height);
|
||||
const nsCSSValue *family =
|
||||
data->ValueFor(eCSSProperty_font_family);
|
||||
const nsCSSValue *stretch =
|
||||
data->ValueFor(eCSSProperty_font_stretch);
|
||||
const nsCSSValue *sizeAdjust =
|
||||
data->ValueFor(eCSSProperty_font_size_adjust);
|
||||
const nsCSSValue *featureSettings =
|
||||
data->ValueFor(eCSSProperty_font_feature_settings);
|
||||
const nsCSSValue *languageOverride =
|
||||
data->ValueFor(eCSSProperty_font_language_override);
|
||||
const nsCSSValue *fontKerning =
|
||||
data->ValueFor(eCSSProperty_font_kerning);
|
||||
const nsCSSValue *fontSynthesis =
|
||||
data->ValueFor(eCSSProperty_font_synthesis);
|
||||
const nsCSSValue *fontVariantAlternates =
|
||||
data->ValueFor(eCSSProperty_font_variant_alternates);
|
||||
const nsCSSValue *fontVariantCaps =
|
||||
data->ValueFor(eCSSProperty_font_variant_caps);
|
||||
const nsCSSValue *fontVariantEastAsian =
|
||||
data->ValueFor(eCSSProperty_font_variant_east_asian);
|
||||
const nsCSSValue *fontVariantLigatures =
|
||||
data->ValueFor(eCSSProperty_font_variant_ligatures);
|
||||
const nsCSSValue *fontVariantNumeric =
|
||||
data->ValueFor(eCSSProperty_font_variant_numeric);
|
||||
const nsCSSValue *fontVariantPosition =
|
||||
data->ValueFor(eCSSProperty_font_variant_position);
|
||||
|
||||
// if font features are not enabled, pointers for fontVariant
|
||||
// values above may be null since the shorthand check ignores them
|
||||
bool fontFeaturesEnabled =
|
||||
mozilla::Preferences::GetBool("layout.css.font-features.enabled");
|
||||
|
||||
if (systemFont &&
|
||||
systemFont->GetUnit() != eCSSUnit_None &&
|
||||
systemFont->GetUnit() != eCSSUnit_Null) {
|
||||
if (style.GetUnit() != eCSSUnit_System_Font ||
|
||||
variant.GetUnit() != eCSSUnit_System_Font ||
|
||||
weight.GetUnit() != eCSSUnit_System_Font ||
|
||||
size.GetUnit() != eCSSUnit_System_Font ||
|
||||
lh.GetUnit() != eCSSUnit_System_Font ||
|
||||
family.GetUnit() != eCSSUnit_System_Font ||
|
||||
stretch.GetUnit() != eCSSUnit_System_Font ||
|
||||
sizeAdjust.GetUnit() != eCSSUnit_System_Font ||
|
||||
featureSettings.GetUnit() != eCSSUnit_System_Font ||
|
||||
languageOverride.GetUnit() != eCSSUnit_System_Font ||
|
||||
if (style->GetUnit() != eCSSUnit_System_Font ||
|
||||
variant->GetUnit() != eCSSUnit_System_Font ||
|
||||
weight->GetUnit() != eCSSUnit_System_Font ||
|
||||
size->GetUnit() != eCSSUnit_System_Font ||
|
||||
lh->GetUnit() != eCSSUnit_System_Font ||
|
||||
family->GetUnit() != eCSSUnit_System_Font ||
|
||||
stretch->GetUnit() != eCSSUnit_System_Font ||
|
||||
sizeAdjust->GetUnit() != eCSSUnit_System_Font ||
|
||||
featureSettings->GetUnit() != eCSSUnit_System_Font ||
|
||||
languageOverride->GetUnit() != eCSSUnit_System_Font ||
|
||||
(fontFeaturesEnabled &&
|
||||
(fontKerning.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontSynthesis.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantAlternates.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantCaps.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantEastAsian.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantLigatures.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantNumeric.GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantPosition.GetUnit() != eCSSUnit_System_Font))) {
|
||||
(fontKerning->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontSynthesis->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantAlternates->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantCaps->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantEastAsian->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantLigatures->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantNumeric->GetUnit() != eCSSUnit_System_Font ||
|
||||
fontVariantPosition->GetUnit() != eCSSUnit_System_Font))) {
|
||||
// This can't be represented as a shorthand.
|
||||
return;
|
||||
}
|
||||
|
@ -600,47 +603,47 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
|||
} else {
|
||||
// properties reset by this shorthand property to their
|
||||
// initial values but not represented in its syntax
|
||||
if (stretch.GetUnit() != eCSSUnit_Enumerated ||
|
||||
stretch.GetIntValue() != NS_STYLE_FONT_STRETCH_NORMAL ||
|
||||
sizeAdjust.GetUnit() != eCSSUnit_None ||
|
||||
featureSettings.GetUnit() != eCSSUnit_Normal ||
|
||||
languageOverride.GetUnit() != eCSSUnit_Normal ||
|
||||
if (stretch->GetUnit() != eCSSUnit_Enumerated ||
|
||||
stretch->GetIntValue() != NS_STYLE_FONT_STRETCH_NORMAL ||
|
||||
sizeAdjust->GetUnit() != eCSSUnit_None ||
|
||||
featureSettings->GetUnit() != eCSSUnit_Normal ||
|
||||
languageOverride->GetUnit() != eCSSUnit_Normal ||
|
||||
(fontFeaturesEnabled &&
|
||||
(fontKerning.GetIntValue() != NS_FONT_KERNING_AUTO ||
|
||||
fontSynthesis.GetUnit() != eCSSUnit_Enumerated ||
|
||||
fontSynthesis.GetIntValue() !=
|
||||
(fontKerning->GetIntValue() != NS_FONT_KERNING_AUTO ||
|
||||
fontSynthesis->GetUnit() != eCSSUnit_Enumerated ||
|
||||
fontSynthesis->GetIntValue() !=
|
||||
(NS_FONT_SYNTHESIS_WEIGHT | NS_FONT_SYNTHESIS_STYLE) ||
|
||||
fontVariantAlternates.GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantCaps.GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantEastAsian.GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantLigatures.GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantNumeric.GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantPosition.GetUnit() != eCSSUnit_Normal))) {
|
||||
fontVariantAlternates->GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantCaps->GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantEastAsian->GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantLigatures->GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantNumeric->GetUnit() != eCSSUnit_Normal ||
|
||||
fontVariantPosition->GetUnit() != eCSSUnit_Normal))) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (style.GetUnit() != eCSSUnit_Enumerated ||
|
||||
style.GetIntValue() != NS_FONT_STYLE_NORMAL) {
|
||||
style.AppendToString(eCSSProperty_font_style, aValue);
|
||||
if (style->GetUnit() != eCSSUnit_Enumerated ||
|
||||
style->GetIntValue() != NS_FONT_STYLE_NORMAL) {
|
||||
style->AppendToString(eCSSProperty_font_style, aValue);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
if (variant.GetUnit() != eCSSUnit_Enumerated ||
|
||||
variant.GetIntValue() != NS_FONT_VARIANT_NORMAL) {
|
||||
variant.AppendToString(eCSSProperty_font_variant, aValue);
|
||||
if (variant->GetUnit() != eCSSUnit_Enumerated ||
|
||||
variant->GetIntValue() != NS_FONT_VARIANT_NORMAL) {
|
||||
variant->AppendToString(eCSSProperty_font_variant, aValue);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
if (weight.GetUnit() != eCSSUnit_Enumerated ||
|
||||
weight.GetIntValue() != NS_FONT_WEIGHT_NORMAL) {
|
||||
weight.AppendToString(eCSSProperty_font_weight, aValue);
|
||||
if (weight->GetUnit() != eCSSUnit_Enumerated ||
|
||||
weight->GetIntValue() != NS_FONT_WEIGHT_NORMAL) {
|
||||
weight->AppendToString(eCSSProperty_font_weight, aValue);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
}
|
||||
size.AppendToString(eCSSProperty_font_size, aValue);
|
||||
if (lh.GetUnit() != eCSSUnit_Normal) {
|
||||
size->AppendToString(eCSSProperty_font_size, aValue);
|
||||
if (lh->GetUnit() != eCSSUnit_Normal) {
|
||||
aValue.Append(PRUnichar('/'));
|
||||
lh.AppendToString(eCSSProperty_line_height, aValue);
|
||||
lh->AppendToString(eCSSProperty_line_height, aValue);
|
||||
}
|
||||
aValue.Append(PRUnichar(' '));
|
||||
family.AppendToString(eCSSProperty_font_family, aValue);
|
||||
family->AppendToString(eCSSProperty_font_family, aValue);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -663,37 +666,37 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
|||
case eCSSProperty_text_decoration: {
|
||||
// If text-decoration-color or text-decoration-style isn't initial value,
|
||||
// we cannot serialize the text-decoration shorthand value.
|
||||
const nsCSSValue &decorationColor =
|
||||
*data->ValueFor(eCSSProperty_text_decoration_color);
|
||||
const nsCSSValue &decorationStyle =
|
||||
*data->ValueFor(eCSSProperty_text_decoration_style);
|
||||
const nsCSSValue *decorationColor =
|
||||
data->ValueFor(eCSSProperty_text_decoration_color);
|
||||
const nsCSSValue *decorationStyle =
|
||||
data->ValueFor(eCSSProperty_text_decoration_style);
|
||||
|
||||
NS_ABORT_IF_FALSE(decorationStyle.GetUnit() == eCSSUnit_Enumerated,
|
||||
NS_ABORT_IF_FALSE(decorationStyle->GetUnit() == eCSSUnit_Enumerated,
|
||||
nsPrintfCString("bad text-decoration-style unit %d",
|
||||
decorationStyle.GetUnit()).get());
|
||||
decorationStyle->GetUnit()).get());
|
||||
|
||||
if (decorationColor.GetUnit() != eCSSUnit_Enumerated ||
|
||||
decorationColor.GetIntValue() != NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR ||
|
||||
decorationStyle.GetIntValue() !=
|
||||
if (decorationColor->GetUnit() != eCSSUnit_Enumerated ||
|
||||
decorationColor->GetIntValue() != NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR ||
|
||||
decorationStyle->GetIntValue() !=
|
||||
NS_STYLE_TEXT_DECORATION_STYLE_SOLID) {
|
||||
return;
|
||||
}
|
||||
|
||||
const nsCSSValue &textBlink =
|
||||
*data->ValueFor(eCSSProperty_text_blink);
|
||||
const nsCSSValue &decorationLine =
|
||||
*data->ValueFor(eCSSProperty_text_decoration_line);
|
||||
const nsCSSValue *textBlink =
|
||||
data->ValueFor(eCSSProperty_text_blink);
|
||||
const nsCSSValue *decorationLine =
|
||||
data->ValueFor(eCSSProperty_text_decoration_line);
|
||||
|
||||
NS_ABORT_IF_FALSE(textBlink.GetUnit() == eCSSUnit_Enumerated,
|
||||
NS_ABORT_IF_FALSE(textBlink->GetUnit() == eCSSUnit_Enumerated,
|
||||
nsPrintfCString("bad text-blink unit %d",
|
||||
textBlink.GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(decorationLine.GetUnit() == eCSSUnit_Enumerated,
|
||||
textBlink->GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(decorationLine->GetUnit() == eCSSUnit_Enumerated,
|
||||
nsPrintfCString("bad text-decoration-line unit %d",
|
||||
decorationLine.GetUnit()).get());
|
||||
decorationLine->GetUnit()).get());
|
||||
|
||||
bool blinkNone = (textBlink.GetIntValue() == NS_STYLE_TEXT_BLINK_NONE);
|
||||
bool blinkNone = (textBlink->GetIntValue() == NS_STYLE_TEXT_BLINK_NONE);
|
||||
bool lineNone =
|
||||
(decorationLine.GetIntValue() == NS_STYLE_TEXT_DECORATION_LINE_NONE);
|
||||
(decorationLine->GetIntValue() == NS_STYLE_TEXT_DECORATION_LINE_NONE);
|
||||
|
||||
if (blinkNone && lineNone) {
|
||||
AppendValueToString(eCSSProperty_text_decoration_line, aValue);
|
||||
|
@ -711,38 +714,38 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
|||
break;
|
||||
}
|
||||
case eCSSProperty_transition: {
|
||||
const nsCSSValue &transProp =
|
||||
*data->ValueFor(eCSSProperty_transition_property);
|
||||
const nsCSSValue &transDuration =
|
||||
*data->ValueFor(eCSSProperty_transition_duration);
|
||||
const nsCSSValue &transTiming =
|
||||
*data->ValueFor(eCSSProperty_transition_timing_function);
|
||||
const nsCSSValue &transDelay =
|
||||
*data->ValueFor(eCSSProperty_transition_delay);
|
||||
const nsCSSValue *transProp =
|
||||
data->ValueFor(eCSSProperty_transition_property);
|
||||
const nsCSSValue *transDuration =
|
||||
data->ValueFor(eCSSProperty_transition_duration);
|
||||
const nsCSSValue *transTiming =
|
||||
data->ValueFor(eCSSProperty_transition_timing_function);
|
||||
const nsCSSValue *transDelay =
|
||||
data->ValueFor(eCSSProperty_transition_delay);
|
||||
|
||||
NS_ABORT_IF_FALSE(transDuration.GetUnit() == eCSSUnit_List ||
|
||||
transDuration.GetUnit() == eCSSUnit_ListDep,
|
||||
NS_ABORT_IF_FALSE(transDuration->GetUnit() == eCSSUnit_List ||
|
||||
transDuration->GetUnit() == eCSSUnit_ListDep,
|
||||
nsPrintfCString("bad t-duration unit %d",
|
||||
transDuration.GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(transTiming.GetUnit() == eCSSUnit_List ||
|
||||
transTiming.GetUnit() == eCSSUnit_ListDep,
|
||||
transDuration->GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(transTiming->GetUnit() == eCSSUnit_List ||
|
||||
transTiming->GetUnit() == eCSSUnit_ListDep,
|
||||
nsPrintfCString("bad t-timing unit %d",
|
||||
transTiming.GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(transDelay.GetUnit() == eCSSUnit_List ||
|
||||
transDelay.GetUnit() == eCSSUnit_ListDep,
|
||||
transTiming->GetUnit()).get());
|
||||
NS_ABORT_IF_FALSE(transDelay->GetUnit() == eCSSUnit_List ||
|
||||
transDelay->GetUnit() == eCSSUnit_ListDep,
|
||||
nsPrintfCString("bad t-delay unit %d",
|
||||
transDelay.GetUnit()).get());
|
||||
transDelay->GetUnit()).get());
|
||||
|
||||
const nsCSSValueList* dur = transDuration.GetListValue();
|
||||
const nsCSSValueList* tim = transTiming.GetListValue();
|
||||
const nsCSSValueList* del = transDelay.GetListValue();
|
||||
const nsCSSValueList* dur = transDuration->GetListValue();
|
||||
const nsCSSValueList* tim = transTiming->GetListValue();
|
||||
const nsCSSValueList* del = transDelay->GetListValue();
|
||||
|
||||
if (transProp.GetUnit() == eCSSUnit_None ||
|
||||
transProp.GetUnit() == eCSSUnit_All) {
|
||||
if (transProp->GetUnit() == eCSSUnit_None ||
|
||||
transProp->GetUnit() == eCSSUnit_All) {
|
||||
// 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);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
dur->mValue.AppendToString(eCSSProperty_transition_duration,aValue);
|
||||
aValue.Append(PRUnichar(' '));
|
||||
|
@ -755,11 +758,11 @@ Declaration::GetValue(nsCSSProperty aProperty, nsAString& aValue) const
|
|||
aValue.Truncate();
|
||||
}
|
||||
} else {
|
||||
NS_ABORT_IF_FALSE(transProp.GetUnit() == eCSSUnit_List ||
|
||||
transProp.GetUnit() == eCSSUnit_ListDep,
|
||||
NS_ABORT_IF_FALSE(transProp->GetUnit() == eCSSUnit_List ||
|
||||
transProp->GetUnit() == eCSSUnit_ListDep,
|
||||
nsPrintfCString("bad t-prop unit %d",
|
||||
transProp.GetUnit()).get());
|
||||
const nsCSSValueList* pro = transProp.GetListValue();
|
||||
transProp->GetUnit()).get());
|
||||
const nsCSSValueList* pro = transProp->GetListValue();
|
||||
for (;;) {
|
||||
pro->mValue.AppendToString(eCSSProperty_transition_property,
|
||||
aValue);
|
||||
|
|
Загрузка…
Ссылка в новой задаче