зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1251075 - Add test that dynamic change of transform when will-change:transform is set doesn't reconstruct frames. r=bz
Without the patch (or, rather, with the new code in nsStyleContext::CalcStyleDifferenceInternal commented out), the second of the tests added fails: TEST-UNEXPECTED-FAIL | layout/style/test/test_change_hint_optimizations.html | adding a transform style to an element with filter: blur(3px); should not cause frame reconstruction even when the element has absolutely positioned descendants - got 34, expected 28 The first of the new tests doesn't fail without the patch because will-change:transform influences HasTransformStyle. However, since that case is probably the most important one, it still seems worth testing explicitly. With the patches, both tests pass. MozReview-Commit-ID: 8n7QKGxd3j6
This commit is contained in:
Родитель
611f172de6
Коммит
dfe11b3205
|
@ -150,6 +150,7 @@ support-files = file_bug1089417_iframe.html
|
|||
[test_bug1232829.html]
|
||||
[test_cascade.html]
|
||||
[test_ch_ex_no_infloops.html]
|
||||
[test_change_hint_optimizations.html]
|
||||
[test_clip-path_polygon.html]
|
||||
[test_compute_data_with_start_struct.html]
|
||||
skip-if = toolkit == 'android'
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for style change hint optimizations</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script type="application/javascript">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
function runTests() {
|
||||
|
||||
/** Test for Bug 1251075 **/
|
||||
function test_bug1251075_div(id) {
|
||||
var utils = SpecialPowers.DOMWindowUtils;
|
||||
|
||||
var div = document.getElementById(id);
|
||||
div.style.display = "";
|
||||
|
||||
var description = div.style.cssText;
|
||||
|
||||
div.firstElementChild.offsetTop;
|
||||
var constructedBefore = utils.framesConstructed;
|
||||
|
||||
div.style.transform = "translateX(10px)";
|
||||
div.firstElementChild.offsetTop;
|
||||
is(utils.framesConstructed, constructedBefore,
|
||||
"adding a transform style to an element with " + description +
|
||||
" should not cause frame reconstruction even when the element " +
|
||||
"has absolutely positioned descendants");
|
||||
|
||||
div.style.display = "none";
|
||||
}
|
||||
|
||||
test_bug1251075_div("bug1251075_a");
|
||||
test_bug1251075_div("bug1251075_b");
|
||||
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="runTests()">
|
||||
<div id="bug1251075_a" style="will-change: transform; display:none">
|
||||
<div style="position: absolute; top: 0; left: 0;"></div>
|
||||
<div style="position: fixed; top: 0; left: 0;"></div>
|
||||
</div>
|
||||
<div id="bug1251075_b" style="filter: blur(3px); display:none">
|
||||
<div style="position: absolute; top: 0; left: 0;"></div>
|
||||
<div style="position: fixed; top: 0; left: 0;"></div>
|
||||
</div>
|
||||
<pre id="test">
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче