mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 17:37:30 +09:00
218 lines
6 KiB
HTML
218 lines
6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1235899
|
|
-->
|
|
<head>
|
|
<title>Test for bug 1235899</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<script type="application/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
|
|
<script type="application/javascript" src="apz_test_utils.js"></script>
|
|
<script type="application/javascript" src="apz_test_native_event_utils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
<style>
|
|
.outer {
|
|
height: 400px;
|
|
width: 415px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
.inner {
|
|
height: 100%;
|
|
outline: none;
|
|
overflow-x: hidden;
|
|
overflow-y: scroll;
|
|
position: relative;
|
|
scroll-behavior: smooth;
|
|
}
|
|
.outer.contentBefore::before {
|
|
top: 0;
|
|
content: '';
|
|
display: block;
|
|
height: 2px;
|
|
position: absolute;
|
|
width: 100%;
|
|
z-index: 99;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1235899">Mozilla Bug 1235899</a>
|
|
<p id="display"></p>
|
|
<div id="content">
|
|
<p>You should be able to fling this list without it stopping abruptly</p>
|
|
<div class="outer">
|
|
<div class="inner">
|
|
<ol>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
<li>Some text</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<pre id="test">
|
|
<script type="application/javascript;version=1.7">
|
|
function* test(testDriver) {
|
|
var elm = document.getElementsByClassName('inner')[0];
|
|
elm.scrollTop = 0;
|
|
yield flushApzRepaints(testDriver);
|
|
|
|
// Take over control of the refresh driver and compositor
|
|
var utils = SpecialPowers.DOMWindowUtils;
|
|
utils.advanceTimeAndRefresh(0);
|
|
|
|
// Kick off an APZ smooth-scroll to 0,200
|
|
elm.scrollTo(0, 200);
|
|
yield waitForAllPaints(function() { setTimeout(testDriver, 0); });
|
|
|
|
// Let's do a couple of frames of the animation, and make sure it's going
|
|
utils.advanceTimeAndRefresh(16);
|
|
utils.advanceTimeAndRefresh(16);
|
|
yield flushApzRepaints(testDriver);
|
|
ok(elm.scrollTop > 0, "APZ animation in progress", "scrollTop is now " + elm.scrollTop);
|
|
ok(elm.scrollTop < 200, "APZ animation not yet completed", "scrollTop is now " + elm.scrollTop);
|
|
|
|
var frameReconstructionTriggered = 0;
|
|
// Register the listener that triggers the frame reconstruction
|
|
elm.onscroll = function() {
|
|
// Do the reconstruction
|
|
elm.parentNode.classList.add('contentBefore');
|
|
frameReconstructionTriggered++;
|
|
// schedule a thing to undo the changes above
|
|
setTimeout(function() {
|
|
elm.parentNode.classList.remove('contentBefore');
|
|
}, 0);
|
|
}
|
|
|
|
// and do a few more frames of the animation, this should trigger the listener
|
|
// and the frame reconstruction
|
|
utils.advanceTimeAndRefresh(16);
|
|
utils.advanceTimeAndRefresh(16);
|
|
yield flushApzRepaints(testDriver);
|
|
ok(elm.scrollTop < 200, "APZ animation not yet completed", "scrollTop is now " + elm.scrollTop);
|
|
ok(frameReconstructionTriggered > 0, "Frame reconstruction triggered", "reconstruction triggered " + frameReconstructionTriggered + " times");
|
|
|
|
// and now run to completion
|
|
for (var i = 0; i < 100; i++) {
|
|
utils.advanceTimeAndRefresh(16);
|
|
}
|
|
utils.restoreNormalRefresh();
|
|
yield waitForAllPaints(function() { setTimeout(testDriver, 0); });
|
|
yield flushApzRepaints(testDriver);
|
|
|
|
is(elm.scrollTop, 200, "Element should have scrolled by 200px");
|
|
}
|
|
|
|
if (isApzEnabled()) {
|
|
SimpleTest.waitForExplicitFinish();
|
|
SimpleTest.expectAssertions(0, 1); // this test triggers an assertion, see bug 1247050
|
|
waitUntilApzStable()
|
|
.then(runContinuation(test))
|
|
.then(SimpleTest.finish);
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|