mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-02 07:05:24 +00:00
53f3fdea84
When C++APZ is enabled in Fennec, events that are generated by nsWindowUtil may result in off by one errors when received by the DOM. This is caused by the fact that the PresShell resolution must be applied to the event coordinates before being dispatched which introduces rounding errors. To work around the failure in test_bug388794.html it is necessary to convert the string compares to regex so that the off by one rounding errors may be accounted for. --HG-- extra : commitid : FCSDte8j1sG
105 lines
3.6 KiB
HTML
105 lines
3.6 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=388794
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 388794</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
<style>
|
|
input { padding: 0; margin: 0; border: none; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=388794">Mozilla Bug 388794</a>
|
|
<p id="display">
|
|
<form action="data:text/html," target="test1" method="GET">
|
|
<input id="test1image" type="image" name="testImage">
|
|
</form>
|
|
<form action="data:text/html," target="test2" method="GET">
|
|
<input id="test2image" type="image">
|
|
</form>
|
|
<form action="data:text/html," target="test3" method="GET">
|
|
<input id="test3image" type="image" src="nnc_lockup.gif" name="testImage">
|
|
</form>
|
|
<form action="data:text/html," target="test4" method="GET">
|
|
<input id="test4image" type="image" src="nnc_lockup.gif">
|
|
</form>
|
|
<form action="data:text/html," target="test5" method="GET">
|
|
<input id="test5image" type="image" src="nnc_lockup.gif" name="testImage">
|
|
</form>
|
|
<form action="data:text/html," target="test6" method="GET">
|
|
<input id="test6image" type="image" src="nnc_lockup.gif">
|
|
</form>
|
|
<iframe name="test1" id="test1"></iframe>
|
|
<iframe name="test2" id="test2"></iframe>
|
|
<iframe name="test3" id="test3"></iframe>
|
|
<iframe name="test4" id="test4"></iframe>
|
|
<iframe name="test5" id="test5"></iframe>
|
|
<iframe name="test6" id="test6"></iframe>
|
|
</p>
|
|
<div id="content" style="display: none">
|
|
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 388794 **/
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var pendingLoads = 0;
|
|
/* Use regex due to rounding error in Fennec with C++APZ enabled */
|
|
var hrefs = {
|
|
test1: /data:text\/html,\?testImage\.x=0&testImage\.y=0/,
|
|
test2: /data:text\/html,\?x=0&y=0/,
|
|
test3: /data:text\/html,\?testImage\.x=0&testImage\.y=0/,
|
|
test4: /data:text\/html,\?x=0&y=0/,
|
|
test5: /data:text\/html,\?testImage\.x=[4-6]&testImage\.y=[4-6]/,
|
|
test6: /data:text\/html,\?x=[4-6]&y=[4-6]/,
|
|
};
|
|
|
|
function submitForm(idNum) {
|
|
$("test"+idNum).setAttribute("onload", "frameLoaded(this)");
|
|
$("test" + idNum + "image").focus();
|
|
sendKey("return");
|
|
}
|
|
|
|
function submitFormMouse(idNum) {
|
|
$("test"+idNum).setAttribute("onload", "frameLoaded(this)");
|
|
// Use 4.99 instead of 5 to guard against the possibility that the
|
|
// image's 'top' is exactly N + 0.5 pixels from the root. In that case
|
|
// we'd round up the widget mouse coordinate to N + 6, which relative
|
|
// to the image would be 5.5, which would get rounded up to 6 when
|
|
// submitting the form. Instead we round the widget mouse coordinate to
|
|
// N + 5, which relative to the image would be 4.5 which gets rounded up
|
|
// to 5.
|
|
synthesizeMouse($("test" + idNum + "image"), 4.99, 4.99, {});
|
|
}
|
|
|
|
addLoadEvent(function() {
|
|
// Need the timeout so painting has a chance to be unsuppressed.
|
|
setTimeout(function() {
|
|
submitForm(++pendingLoads);
|
|
submitForm(++pendingLoads);
|
|
submitForm(++pendingLoads);
|
|
submitForm(++pendingLoads);
|
|
submitFormMouse(++pendingLoads);
|
|
submitFormMouse(++pendingLoads);
|
|
}, 0);
|
|
});
|
|
|
|
function frameLoaded(frame) {
|
|
ok(hrefs[frame.name].test(frame.contentWindow.location.href),
|
|
"Unexpected href for frame " + frame.name, "expected to match: " + hrefs[frame.name].toString() + " got: " + frame.contentWindow.location.href);
|
|
if (--pendingLoads == 0) {
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|