Bug 1467688 - Make sure we invalidate for perspective changes even if the frame isn't otherwise transformed. r=dbaron

MozReview-Commit-ID: DpND8Jwr226

--HG--
extra : rebase_source : c6f51b9e8f91978a1783eb27de5ca89f75a3f2a5
This commit is contained in:
Matt Woodrow 2018-07-02 17:46:10 -04:00
Родитель cb3429d30b
Коммит dc37a6b69c
3 изменённых файлов: 29 добавлений и 7 удалений

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

@ -0,0 +1,17 @@
<html class="reftest-wait">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body style="transform:translate(4px)">
<div id="invalid" style="width:100px; height:100px; background-color:red;"></div>
<script>
function doTest() {
document.documentElement.style.perspective = '100px';
document.getElementById("invalid").style.backgroundColor = "green";
document.documentElement.removeAttribute("class");
}
window.addEventListener("MozReftestInvalidate", doTest);
}
</script>
</body>
</html>

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

@ -544,5 +544,6 @@ load 1462412.html
load 1463940.html
pref(dom.webcomponents.shadowdom.enabled,true) HTTP load 1464641.html
load 1464737.html
load 1467688.html
load 1467964.html
load 1469354.html

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

@ -3863,13 +3863,7 @@ nsStyleDisplay::CalcDifference(const nsStyleDisplay& aNewData) const
}
}
if (HasPerspectiveStyle() != aNewData.HasPerspectiveStyle()) {
// A change from/to being a containing block for position:fixed.
hint |= nsChangeHint_UpdateContainingBlock;
}
if (mChildPerspective != aNewData.mChildPerspective ||
mTransformStyle != aNewData.mTransformStyle ||
if (mTransformStyle != aNewData.mTransformStyle ||
mTransformBox != aNewData.mTransformBox) {
transformHint |= kUpdateOverflowAndRepaintHint;
}
@ -3887,6 +3881,16 @@ nsStyleDisplay::CalcDifference(const nsStyleDisplay& aNewData) const
}
}
if (HasPerspectiveStyle() != aNewData.HasPerspectiveStyle()) {
// A change from/to being a containing block for position:fixed.
hint |= nsChangeHint_UpdateContainingBlock |
nsChangeHint_UpdateOverflow |
nsChangeHint_RepaintFrame;
} else if (mChildPerspective != aNewData.mChildPerspective) {
hint |= nsChangeHint_UpdateOverflow |
nsChangeHint_RepaintFrame;
}
// Note that the HasTransformStyle() != aNewData.HasTransformStyle()
// test above handles relevant changes in the
// NS_STYLE_WILL_CHANGE_TRANSFORM bit, which in turn handles frame