Backed out changeset b08319695e21 (bug 1667118) for causing xpcshell failures in test_css-properties-db.js

CLOSED TREE
This commit is contained in:
Mihai Alexandru Michis 2020-09-25 16:40:33 +03:00
Родитель 056d0d693c
Коммит cc04d2696e
21 изменённых файлов: 60 добавлений и 79 удалений

Просмотреть файл

@ -61,15 +61,6 @@ let whitelist = [
},
];
if (!Services.prefs.getBoolPref("layout.css.math-depth.enabled")) {
// mathml.css UA sheet rule for math-depth.
whitelist.push({
sourceName: /(?:res|gre-resources)\/mathml\.css$/i,
errorMessage: /Unknown property .*\bmath-depth\b/i,
isFromDevTools: false,
});
}
if (!Services.prefs.getBoolPref("layout.css.math-style.enabled")) {
// mathml.css UA sheet rule for math-style.
whitelist.push({

Просмотреть файл

@ -226,7 +226,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [
"padding-block-start",
"padding-inline-end",
"padding-inline-start",
"math-depth",
"-moz-script-level",
"-moz-top-layer",
"transition-delay",
"transition-duration",

Просмотреть файл

@ -441,7 +441,7 @@ void MathMLElement::MapMathMLAttributesInto(
//
value = aAttributes->GetAttr(nsGkAtoms::scriptlevel_);
if (value && value->Type() == nsAttrValue::eString &&
!aDecls.PropertyIsSet(eCSSProperty_math_depth)) {
!aDecls.PropertyIsSet(eCSSProperty__moz_script_level)) {
auto str = value->GetStringValue();
str.CompressWhitespace();
if (str.Length() > 0) {
@ -452,13 +452,11 @@ void MathMLElement::MapMathMLAttributesInto(
// then it's a relative value and we store the nsCSSValue as an
// Integer to indicate that. Otherwise we store it as a Number
// to indicate that the scriptlevel is absolute.
// XXX Bug 1667090: Use math-depth: add(<integer>) for relative values
// and and math-depth: <integer> for absolute values.
char16_t ch = str.CharAt(0);
if (ch == '+' || ch == '-') {
aDecls.SetIntValue(eCSSProperty_math_depth, intValue);
aDecls.SetIntValue(eCSSProperty__moz_script_level, intValue);
} else {
aDecls.SetNumberValue(eCSSProperty_math_depth, intValue);
aDecls.SetNumberValue(eCSSProperty__moz_script_level, intValue);
}
} else {
ReportParseErrorNoTag(str, nsGkAtoms::scriptlevel_, aDecls.Document());

Просмотреть файл

@ -82,7 +82,7 @@ ms[rquote]:after {
- mathvariant -> -moz-math-variant
- scriptsizemultiplier -> -moz-script-size-multiplier
- scriptminsize -> -moz-script-min-size
- scriptlevel -> math-depth
- scriptlevel -> -moz-script-level
- mathsize -> font-size
- mathcolor -> color
- mathbackground -> background
@ -226,14 +226,14 @@ mtable[framespacing] > mtr > mtd {
insufficient to control when the scriptlevel should be incremented. All other
cases can be described using regular CSS, so we do it this way because it's
more efficient and less code. */
:-moz-math-increment-script-level { math-depth: +1; }
:-moz-math-increment-script-level { -moz-script-level: +1; }
/*
The mfrac element sets displaystyle to "false", or if it was already false
increments scriptlevel by 1, within numerator and denominator.
*/
mfrac > * {
math-depth: auto;
-moz-script-level: auto;
math-style: compact;
}
@ -243,7 +243,7 @@ mfrac > * {
The msqrt element leaves both attributes unchanged within its argument.
*/
mroot > :not(:first-child) {
math-depth: +2;
-moz-script-level: +2;
math-style: compact;
}
@ -267,7 +267,7 @@ msub > :not(:first-child),
msup > :not(:first-child),
msubsup > :not(:first-child),
mmultiscripts > :not(:first-child) {
math-depth: +1;
-moz-script-level: +1;
math-style: compact;
}
@ -303,7 +303,7 @@ mtable { math-style: compact; }
scriptlevel by 1, so the children are typically displayed in a smaller font.
XXXfredw: This element is not implemented yet. See bug 534967.
mscarries {
math-depth: +1;
-moz-script-level: +1;
math-style: compact;
}
*/

Просмотреть файл

@ -1142,7 +1142,7 @@ class nsMathMLContainerFrame::RowChildFrameIterator {
// add inter frame spacing
const nsStyleFont* font = mParentFrame->StyleFont();
nscoord space =
GetInterFrameSpacing(font->mMathDepth, prevFrameType, mChildFrameType,
GetInterFrameSpacing(font->mScriptLevel, prevFrameType, mChildFrameType,
&mFromFrameType, &mCarrySpace);
mX += space * GetThinSpace(font);
return *this;
@ -1293,7 +1293,7 @@ static nscoord AddInterFrameSpacingToSize(ReflowOutput& aDesiredSize,
return 0;
}
if (parentContent->IsAnyOfMathMLElements(nsGkAtoms::math, nsGkAtoms::mtd_)) {
gap = GetInterFrameSpacingFor(aFrame->StyleFont()->mMathDepth, parent,
gap = GetInterFrameSpacingFor(aFrame->StyleFont()->mScriptLevel, parent,
aFrame);
// add our own italic correction
nscoord leftCorrection = 0, italicCorrection = 0;

Просмотреть файл

@ -333,19 +333,19 @@ void nsMathMLmfencedFrame::Reflow(nsPresContext* aPresContext,
/////////////////
// opening fence ...
ReflowChar(drawTarget, *fm, fontSizeInflation, mOpenChar,
NS_MATHML_OPERATOR_FORM_PREFIX, font->mMathDepth, axisHeight,
NS_MATHML_OPERATOR_FORM_PREFIX, font->mScriptLevel, axisHeight,
leading, em, containerSize, ascent, descent, isRTL);
/////////////////
// separators ...
for (i = 0; i < mSeparatorsCount; i++) {
ReflowChar(drawTarget, *fm, fontSizeInflation, &mSeparatorsChar[i],
NS_MATHML_OPERATOR_FORM_INFIX, font->mMathDepth, axisHeight,
NS_MATHML_OPERATOR_FORM_INFIX, font->mScriptLevel, axisHeight,
leading, em, containerSize, ascent, descent, isRTL);
}
/////////////////
// closing fence ...
ReflowChar(drawTarget, *fm, fontSizeInflation, mCloseChar,
NS_MATHML_OPERATOR_FORM_POSTFIX, font->mMathDepth, axisHeight,
NS_MATHML_OPERATOR_FORM_POSTFIX, font->mScriptLevel, axisHeight,
leading, em, containerSize, ascent, descent, isRTL);
//////////////////
@ -574,7 +574,7 @@ void nsMathMLmfencedFrame::GetIntrinsicISizeMetrics(
if (mOpenChar) {
width += GetMaxCharWidth(
this, aRenderingContext->GetDrawTarget(), fontSizeInflation, mOpenChar,
NS_MATHML_OPERATOR_FORM_PREFIX, font->mMathDepth, em);
NS_MATHML_OPERATOR_FORM_PREFIX, font->mScriptLevel, em);
}
int32_t i = 0;
@ -586,10 +586,10 @@ void nsMathMLmfencedFrame::GetIntrinsicISizeMetrics(
nsLayoutUtils::PREF_ISIZE);
if (i < mSeparatorsCount) {
width +=
GetMaxCharWidth(this, aRenderingContext->GetDrawTarget(),
fontSizeInflation, &mSeparatorsChar[i],
NS_MATHML_OPERATOR_FORM_INFIX, font->mMathDepth, em);
width += GetMaxCharWidth(this, aRenderingContext->GetDrawTarget(),
fontSizeInflation, &mSeparatorsChar[i],
NS_MATHML_OPERATOR_FORM_INFIX,
font->mScriptLevel, em);
}
i++;
}
@ -597,7 +597,7 @@ void nsMathMLmfencedFrame::GetIntrinsicISizeMetrics(
if (mCloseChar) {
width += GetMaxCharWidth(
this, aRenderingContext->GetDrawTarget(), fontSizeInflation, mCloseChar,
NS_MATHML_OPERATOR_FORM_POSTFIX, font->mMathDepth, em);
NS_MATHML_OPERATOR_FORM_POSTFIX, font->mScriptLevel, em);
}
aDesiredSize.Width() = width;

Просмотреть файл

@ -267,7 +267,7 @@ nsresult nsMathMLmmultiscriptsFrame::PlaceMultiScript(
// get sup script shift depending on current script level and display style
// Rule 18c, App. G, TeXbook
if (font->mMathDepth == 0 &&
if (font->mScriptLevel == 0 &&
font->mMathStyle == NS_STYLE_MATH_STYLE_NORMAL &&
!NS_MATHML_IS_COMPRESSED(presentationData.flags)) {
// Style D in TeXbook

Просмотреть файл

@ -342,7 +342,7 @@ void nsMathMLmoFrame::ProcessOperatorData() {
// tuning if we don't want too much extra space when we are a script.
// (with its fonts, TeX sets lspace=0 & rspace=0 as soon as scriptlevel>0.
// Our fonts can be anything, so...)
if (StyleFont()->mMathDepth > 0 &&
if (StyleFont()->mScriptLevel > 0 &&
!NS_MATHML_OPERATOR_HAS_EMBELLISH_ANCESTOR(mFlags)) {
mEmbellishData.leadingSpace /= 2;
mEmbellishData.trailingSpace /= 2;

Просмотреть файл

@ -226,7 +226,7 @@ nsStyleFont::nsStyleFont(const nsStyleFont& aSrc)
mFontSizeOffset(aSrc.mFontSizeOffset),
mFontSizeKeyword(aSrc.mFontSizeKeyword),
mGenericID(aSrc.mGenericID),
mMathDepth(aSrc.mMathDepth),
mScriptLevel(aSrc.mScriptLevel),
mMathVariant(aSrc.mMathVariant),
mMathStyle(aSrc.mMathStyle),
mMinFontSizeRatio(aSrc.mMinFontSizeRatio),
@ -247,7 +247,7 @@ nsStyleFont::nsStyleFont(const Document& aDocument)
mFontSizeOffset{0},
mFontSizeKeyword(StyleFontSizeKeyword::Medium),
mGenericID(StyleGenericFontFamily::None),
mMathDepth(0),
mScriptLevel(0),
mMathVariant(NS_MATHML_MATHVARIANT_NONE),
mMathStyle(NS_STYLE_MATH_STYLE_NORMAL),
mMinFontSizeRatio(100), // 100%
@ -293,7 +293,8 @@ nsChangeHint nsStyleFont::CalcDifference(const nsStyleFont& aNewData) const {
}
// XXX Should any of these cause a non-nsChangeHint_NeutralChange change?
if (mGenericID != aNewData.mGenericID || mMathDepth != aNewData.mMathDepth ||
if (mGenericID != aNewData.mGenericID ||
mScriptLevel != aNewData.mScriptLevel ||
mScriptUnconstrainedSize != aNewData.mScriptUnconstrainedSize ||
mScriptMinSize != aNewData.mScriptMinSize ||
mScriptSizeMultiplier != aNewData.mScriptSizeMultiplier) {

Просмотреть файл

@ -110,8 +110,8 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleFont {
mozilla::StyleGenericFontFamily mGenericID;
// math-depth support (used for MathML scriptlevel)
int8_t mMathDepth;
// MathML scriptlevel support
int8_t mScriptLevel;
// MathML mathvariant support
uint8_t mMathVariant;
// math-style support (used for MathML displaystyle)

Просмотреть файл

@ -6060,14 +6060,6 @@
mirror: always
rust: true
# Is support for math-depth enabled?
# This must not be enabled until implementation is complete (see bug 1667090).
- name: layout.css.math-depth.enabled
type: RelaxedAtomicBool
value: false
mirror: always
rust: true
# Pref to control whether @-moz-document rules are enabled in content pages.
- name: layout.css.moz-document.content.enabled
type: RelaxedAtomicBool

Просмотреть файл

@ -963,7 +963,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
fn handle_mathml_scriptlevel_if_needed(&mut self) {
use crate::values::generics::NonNegative;
if !self.seen.contains(LonghandId::MathDepth) &&
if !self.seen.contains(LonghandId::MozScriptLevel) &&
!self.seen.contains(LonghandId::MozScriptMinSize) &&
!self.seen.contains(LonghandId::MozScriptSizeMultiplier) {
return;
@ -980,7 +980,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
let parent_font = builder.get_parent_font().gecko();
let delta =
font.mMathDepth.saturating_sub(parent_font.mMathDepth);
font.mScriptLevel.saturating_sub(parent_font.mScriptLevel);
if delta == 0 {
return;

Просмотреть файл

@ -360,7 +360,7 @@ class Longhand(object):
"MasonryAutoFlow",
"MozForceBrokenImageIcon",
"MozListReversed",
"MathDepth",
"MozScriptLevel",
"MozScriptMinSize",
"MozScriptSizeMultiplier",
"TextDecorationSkipInk",

Просмотреть файл

@ -228,15 +228,14 @@ ${helpers.predefined_type(
)}
${helpers.predefined_type(
"math-depth",
"MathDepth",
"-moz-script-level",
"MozScriptLevel",
"0",
engines="gecko",
gecko_pref="layout.css.math-depth.enabled",
has_effect_on_gecko_scrollbars=False,
animation_value_type="none",
enabled_in="ua",
spec="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property",
gecko_ffi_name="mScriptLevel",
spec="Internal (not web-exposed)",
)}
${helpers.single_keyword(

Просмотреть файл

@ -1342,8 +1342,8 @@ impl LonghandId {
// preferences properly, see bug 1165538.
LonghandId::MozMinFontSizeRatio |
// font-size depends on math-depth's computed value.
LonghandId::MathDepth |
// Needed to do font-size for MathML. :(
LonghandId::MozScriptLevel |
% endif
// Needed to compute the first available font, in order to

Просмотреть файл

@ -811,20 +811,20 @@ impl ToComputedValue for specified::MozScriptMinSize {
}
}
/// The computed value of the math-depth property.
pub type MathDepth = i8;
/// The computed value of the -moz-script-level property.
pub type MozScriptLevel = i8;
#[cfg(feature = "gecko")]
impl ToComputedValue for specified::MathDepth {
type ComputedValue = MathDepth;
impl ToComputedValue for specified::MozScriptLevel {
type ComputedValue = MozScriptLevel;
fn to_computed_value(&self, cx: &Context) -> i8 {
use crate::properties::longhands::math_style::SpecifiedValue as MathStyleValue;
use std::{cmp, i8};
let int = match *self {
specified::MathDepth::Auto => {
let parent = cx.builder.get_parent_font().clone_math_depth() as i32;
specified::MozScriptLevel::Auto => {
let parent = cx.builder.get_parent_font().clone__moz_script_level() as i32;
let style = cx.builder.get_parent_font().clone_math_style();
if style == MathStyleValue::Compact {
parent + 1
@ -832,17 +832,17 @@ impl ToComputedValue for specified::MathDepth {
parent
}
},
specified::MathDepth::Relative(rel) => {
let parent = cx.builder.get_parent_font().clone_math_depth();
specified::MozScriptLevel::Relative(rel) => {
let parent = cx.builder.get_parent_font().clone__moz_script_level();
parent as i32 + rel
},
specified::MathDepth::MozAbsolute(abs) => abs,
specified::MozScriptLevel::MozAbsolute(abs) => abs,
};
cmp::min(int, i8::MAX as i32) as i8
}
fn from_computed_value(other: &i8) -> Self {
specified::MathDepth::MozAbsolute(*other as i32)
specified::MozScriptLevel::MozAbsolute(*other as i32)
}
}

Просмотреть файл

@ -58,7 +58,7 @@ pub use self::font::{FontFeatureSettings, FontVariantLigatures, FontVariantNumer
pub use self::font::{FontSize, FontSizeAdjust, FontStretch, FontSynthesis};
pub use self::font::{FontVariantAlternates, FontWeight};
pub use self::font::{FontVariantEastAsian, FontVariationSettings};
pub use self::font::{MathDepth, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
pub use self::image::{Gradient, Image, LineDirection, MozImageRect};
pub use self::length::{CSSPixelLength, ExtremumLength, NonNegativeLength};
pub use self::length::{Length, LengthOrNumber, LengthPercentage, NonNegativeLengthOrNumber};

Просмотреть файл

@ -2303,7 +2303,7 @@ impl Parse for MozScriptMinSize {
///
/// The main effect of scriptlevel is to control the font size.
/// https://www.w3.org/TR/MathML3/chapter3.html#presm.scriptlevel
pub enum MathDepth {
pub enum MozScriptLevel {
/// Change `font-size` relatively.
Relative(i32),
/// Change `font-size` absolutely.
@ -2317,17 +2317,17 @@ pub enum MathDepth {
Auto,
}
impl Parse for MathDepth {
impl Parse for MozScriptLevel {
fn parse<'i, 't>(
_: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<MathDepth, ParseError<'i>> {
) -> Result<MozScriptLevel, ParseError<'i>> {
// We don't bother to handle calc here.
if let Ok(i) = input.try_parse(|i| i.expect_integer()) {
return Ok(MathDepth::Relative(i));
return Ok(MozScriptLevel::Relative(i));
}
input.expect_ident_matching("auto")?;
Ok(MathDepth::Auto)
Ok(MozScriptLevel::Auto)
}
}

Просмотреть файл

@ -53,7 +53,7 @@ pub use self::font::{FontFeatureSettings, FontVariantLigatures, FontVariantNumer
pub use self::font::{FontSize, FontSizeAdjust, FontSizeKeyword, FontStretch, FontSynthesis};
pub use self::font::{FontVariantAlternates, FontWeight};
pub use self::font::{FontVariantEastAsian, FontVariationSettings};
pub use self::font::{MathDepth, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
pub use self::font::{MozScriptLevel, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom};
pub use self::image::{EndingShape as GradientEndingShape, Gradient};
pub use self::image::{Image, MozImageRect};
pub use self::length::{AbsoluteLength, CalcLengthPercentage, CharacterWidth};

Просмотреть файл

@ -4901,7 +4901,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetIntValue(
property: nsCSSPropertyID,
value: i32,
) {
use style::properties::longhands::math_depth::SpecifiedValue as MathDepth;
use style::properties::longhands::_moz_script_level::SpecifiedValue as MozScriptLevel;
use style::properties::PropertyDeclaration;
use style::values::specified::Integer;
@ -4909,7 +4909,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetIntValue(
let prop = match_wrap_declared! { long,
XSpan => Integer::new(value),
// Gecko uses Integer values to signal that it is relative
MathDepth => MathDepth::Relative(value),
MozScriptLevel => MozScriptLevel::Relative(value),
};
write_locked_arc(declarations, |decls: &mut PropertyDeclarationBlock| {
decls.push(prop, Importance::Normal);
@ -5072,7 +5072,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetNumberValue(
property: nsCSSPropertyID,
value: f32,
) {
use style::properties::longhands::math_depth::SpecifiedValue as MathDepth;
use style::properties::longhands::_moz_script_level::SpecifiedValue as MozScriptLevel;
use style::properties::longhands::_moz_script_size_multiplier::SpecifiedValue as MozScriptSizeMultiplier;
use style::properties::PropertyDeclaration;
@ -5081,7 +5081,7 @@ pub extern "C" fn Servo_DeclarationBlock_SetNumberValue(
let prop = match_wrap_declared! { long,
MozScriptSizeMultiplier => MozScriptSizeMultiplier(value),
// Gecko uses Number values to signal that it is absolute
MathDepth => MathDepth::MozAbsolute(value as i32),
MozScriptLevel => MozScriptLevel::MozAbsolute(value as i32),
};
write_locked_arc(declarations, |decls: &mut PropertyDeclarationBlock| {
decls.push(prop, Importance::Normal);

Просмотреть файл

@ -47,7 +47,7 @@
-moz-list-reversed: initial;
-moz-font-smoothing-background-color: initial;
-moz-min-font-size-ratio: initial;
math-depth: initial;
-moz-script-level: initial;
/* As long as inert implies pointer-events: none as it does now, we're
* good. */
-moz-inert: initial;