mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 20:30:41 +00:00
Bug 1893127 - Back out bug 1881220 for causing worse regressions than the problem it was fixing. r=layout-reviewers,firefox-style-system-reviewers,boris
As a short term fix this seems acceptable. Mark the test for the regressing bug as failing. Differential Revision: https://phabricator.services.mozilla.com/D208834
This commit is contained in:
parent
11db3cd3ee
commit
22153710b5
@ -700,9 +700,12 @@ CSSCoord StyleCalcLengthPercentage::ResolveToCSSPixels(CSSCoord aBasis) const {
|
||||
return Servo_ResolveCalcLengthPercentage(this, aBasis);
|
||||
}
|
||||
|
||||
nscoord StyleCalcLengthPercentage::Resolve(nscoord aBasis) const {
|
||||
return detail::DefaultLengthToAppUnits(
|
||||
ResolveToCSSPixels(CSSPixel::FromAppUnits(aBasis)));
|
||||
template <typename Rounder>
|
||||
nscoord StyleCalcLengthPercentage::Resolve(nscoord aBasis,
|
||||
Rounder aRounder) const {
|
||||
static_assert(std::is_same_v<decltype(aRounder(1.0f)), nscoord>);
|
||||
CSSCoord result = ResolveToCSSPixels(CSSPixel::FromAppUnits(aBasis));
|
||||
return aRounder(result * AppUnitsPerCSSPixel());
|
||||
}
|
||||
|
||||
template <>
|
||||
@ -727,11 +730,10 @@ CSSCoord LengthPercentage::ResolveToCSSPixelsWith(T aPercentageGetter) const {
|
||||
return ResolveToCSSPixels(aPercentageGetter());
|
||||
}
|
||||
|
||||
template <typename T, typename PercentRounder>
|
||||
nscoord LengthPercentage::Resolve(T aPercentageGetter,
|
||||
PercentRounder aPercentRounder) const {
|
||||
template <typename T, typename Rounder>
|
||||
nscoord LengthPercentage::Resolve(T aPercentageGetter, Rounder aRounder) const {
|
||||
static_assert(std::is_same_v<decltype(aPercentageGetter()), nscoord>);
|
||||
static_assert(std::is_same_v<decltype(aPercentRounder(1.0f)), nscoord>);
|
||||
static_assert(std::is_same_v<decltype(aRounder(1.0f)), nscoord>);
|
||||
if (ConvertsToLength()) {
|
||||
return ToLength();
|
||||
}
|
||||
@ -740,9 +742,9 @@ nscoord LengthPercentage::Resolve(T aPercentageGetter,
|
||||
}
|
||||
nscoord basis = aPercentageGetter();
|
||||
if (IsPercentage()) {
|
||||
return aPercentRounder(basis * AsPercentage()._0);
|
||||
return aRounder(basis * AsPercentage()._0);
|
||||
}
|
||||
return AsCalc().Resolve(basis);
|
||||
return AsCalc().Resolve(basis, aRounder);
|
||||
}
|
||||
|
||||
nscoord LengthPercentage::Resolve(nscoord aPercentageBasis) const {
|
||||
@ -755,11 +757,10 @@ nscoord LengthPercentage::Resolve(T aPercentageGetter) const {
|
||||
return Resolve(aPercentageGetter, detail::DefaultPercentLengthToAppUnits);
|
||||
}
|
||||
|
||||
template <typename PercentRounder>
|
||||
template <typename Rounder>
|
||||
nscoord LengthPercentage::Resolve(nscoord aPercentageBasis,
|
||||
PercentRounder aPercentRounder) const {
|
||||
return Resolve([aPercentageBasis] { return aPercentageBasis; },
|
||||
aPercentRounder);
|
||||
Rounder aRounder) const {
|
||||
return Resolve([aPercentageBasis] { return aPercentageBasis; }, aRounder);
|
||||
}
|
||||
|
||||
void LengthPercentage::ScaleLengthsBy(float aScale) {
|
||||
|
@ -368,7 +368,8 @@ renaming_overrides_prefixing = true
|
||||
|
||||
"CalcLengthPercentage" = """
|
||||
inline CSSCoord ResolveToCSSPixels(CSSCoord aBasis) const;
|
||||
inline nscoord Resolve(nscoord aBasis) const;
|
||||
template<typename Rounder>
|
||||
inline nscoord Resolve(nscoord aBasis, Rounder) const;
|
||||
"""
|
||||
|
||||
"GenericCalcNode" = """
|
||||
@ -429,10 +430,10 @@ renaming_overrides_prefixing = true
|
||||
inline bool IsDefinitelyZero() const;
|
||||
inline CSSCoord ResolveToCSSPixels(CSSCoord aPercentageBasisInCSSPixels) const;
|
||||
template<typename T> inline CSSCoord ResolveToCSSPixelsWith(T aPercentageGetter) const;
|
||||
template<typename T, typename PercentRounder>
|
||||
inline nscoord Resolve(T aPercentageGetter, PercentRounder) const;
|
||||
template<typename PercentRounder>
|
||||
inline nscoord Resolve(nscoord aPercentageBasis, PercentRounder) const;
|
||||
template<typename T, typename Rounder>
|
||||
inline nscoord Resolve(T aPercentageGetter, Rounder) const;
|
||||
template<typename Rounder>
|
||||
inline nscoord Resolve(nscoord aPercentageBasis, Rounder) const;
|
||||
template<typename T> inline nscoord Resolve(T aPercentageGetter) const;
|
||||
inline nscoord Resolve(nscoord aPercentageBasis) const;
|
||||
"""
|
||||
|
@ -0,0 +1,3 @@
|
||||
[calc-rounding-002.html]
|
||||
expected: FAIL
|
||||
bug: 1881220
|
@ -0,0 +1,10 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
.outer {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid;
|
||||
}
|
||||
</style>
|
||||
<div class="outer"></div>
|
@ -0,0 +1,25 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1893127">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-values/#funcdef-calc">
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="https://mozilla.org" title="Mozilla">
|
||||
<link rel="match" href="calc-rounding-003-ref.html">
|
||||
<style>
|
||||
.outer {
|
||||
width: 100px;
|
||||
border: 1px solid;
|
||||
}
|
||||
.inner {
|
||||
height: 40px;
|
||||
vertical-align: top;
|
||||
display: inline-block;
|
||||
--margin: 4.009px;
|
||||
width: calc(50% - 2 * var(--margin));
|
||||
margin-inline: var(--margin);
|
||||
}
|
||||
</style>
|
||||
<div class="outer"
|
||||
><div class="inner"></div
|
||||
><div class="inner"></div
|
||||
></div>
|
Loading…
x
Reference in New Issue
Block a user