mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 10:15:41 +00:00
aa82f54ab6
There are a few different reasons why tests needed updating (not an exhaustive list): - Tests assume that successive operations take place at different times. - Tests assume that an operation took a minimum amount of time. - Tests hardcodes a specific delay. In most cases we hardcode the preference off. In some cases this is the best approach, in others, we would like to improve. The bug for tracking those improvements is Bug 1429648 An improvement that is present in some tests is to hardcode a specific precision reduction that is acceptable based on the confides of the test. (Obviously this needs to be a fix for the test framework and not a requirement on the feature being tested.) In a few places, the test itself can be fixed, for example to no longer require the end time of an operation to be strictly greater than the start time, and allows it to be equal to it. MozReview-Commit-ID: J59c7xQtZZJ --HG-- extra : rebase_source : df8a03e76eaf9cdc9524dbb3eb9035af237e534b
111 lines
3.0 KiB
XML
111 lines
3.0 KiB
XML
<?xml version="1.0"?>
|
|
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
|
|
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=453650
|
|
-->
|
|
<window title="Mozilla Bug 453650"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<script type="application/javascript"
|
|
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
|
|
<!-- test code goes here -->
|
|
<script type="application/javascript">
|
|
<![CDATA[
|
|
|
|
/** Test for Bug 453650 **/
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var iter = runTests();
|
|
nextTest();
|
|
|
|
function* runTests() {
|
|
var iframe = document.createElement("iframe");
|
|
iframe.style.width = "300px";
|
|
iframe.style.height = "300px";
|
|
iframe.setAttribute("src", "data:text/html,<h1 id='h'>hello</h1>");
|
|
|
|
document.documentElement.appendChild(iframe);
|
|
yield whenLoaded(iframe);
|
|
info("iframe loaded");
|
|
|
|
var h1 = iframe.contentDocument.getElementById("h");
|
|
h1.style.width = "400px";
|
|
yield waitForInterruptibleReflow(iframe.docShell);
|
|
|
|
h1.style.width = "300px";
|
|
waitForReflow(iframe.docShell);
|
|
yield is(300, h1.offsetWidth, "h1 has correct width");
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function waitForInterruptibleReflow(docShell) {
|
|
waitForReflow(docShell, true);
|
|
}
|
|
|
|
function waitForReflow(docShell, interruptible = false) {
|
|
function done() {
|
|
docShell.removeWeakReflowObserver(observer);
|
|
SimpleTest.executeSoon(nextTest);
|
|
}
|
|
|
|
var observer = {
|
|
reflow: function (start, end) {
|
|
if (interruptible) {
|
|
ok(false, "expected interruptible reflow");
|
|
} else {
|
|
ok(true, "observed uninterruptible reflow");
|
|
}
|
|
|
|
info("times: " + start + ", " + end);
|
|
ok(start <= end, "reflow start time lower than end time");
|
|
done();
|
|
},
|
|
|
|
reflowInterruptible: function (start, end) {
|
|
if (!interruptible) {
|
|
ok(false, "expected uninterruptible reflow");
|
|
} else {
|
|
ok(true, "observed interruptible reflow");
|
|
}
|
|
|
|
info("times: " + start + ", " + end);
|
|
ok(start <= end, "reflow start time lower than end time");
|
|
done();
|
|
},
|
|
|
|
QueryInterface: function (iid) {
|
|
if (Ci.nsIReflowObserver.equals(iid) ||
|
|
Ci.nsISupportsWeakReference.equals(iid) ||
|
|
Ci.nsISupports.equals(iid))
|
|
return this;
|
|
throw Cr.NS_ERROR_NO_INTERFACE;
|
|
},
|
|
};
|
|
|
|
docShell.addWeakReflowObserver(observer);
|
|
}
|
|
|
|
function whenLoaded(iframe) {
|
|
iframe.addEventListener("load", function onLoad() {
|
|
iframe.removeEventListener("load", onLoad);
|
|
SimpleTest.executeSoon(nextTest);
|
|
});
|
|
}
|
|
|
|
function nextTest() {
|
|
iter.next();
|
|
}
|
|
|
|
]]>
|
|
</script>
|
|
|
|
<!-- test results are displayed in the html:body -->
|
|
<body xmlns="http://www.w3.org/1999/xhtml">
|
|
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=453650"
|
|
target="_blank">Mozilla Bug 453650</a>
|
|
</body>
|
|
</window>
|