122 lines
4.3 KiB
HTML
122 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Document::nodesFromRect : Rect-based hit-testing on tables - bug 86605</title>
|
|
<style type="text/css">
|
|
#sandbox {
|
|
position: absolute;
|
|
left: 0px;
|
|
top: 0px;
|
|
width: 600px;
|
|
height: 800px;
|
|
}
|
|
#testtable {
|
|
margin: 100px;
|
|
width: 200px;
|
|
height: 200px;
|
|
}
|
|
.rtl {
|
|
direction: rtl;
|
|
}
|
|
.tblr {
|
|
-webkit-writing-mode: vertical-lr;
|
|
}
|
|
</style>
|
|
<script src="../../../resources/js-test-pre.js"></script>
|
|
<script src="resources/nodesFromRect.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id=sandbox>
|
|
<table id=testtable>
|
|
<tr id=tr1>
|
|
<td id=td11>
|
|
<td id=td12>
|
|
<td id=td13>
|
|
<td id=td14>
|
|
<tr id=tr2>
|
|
<td id=td21>
|
|
<td id=td22>
|
|
<td id=td23>
|
|
<td id=td24>
|
|
<tr id=tr3>
|
|
<td id=td31>
|
|
<td id=td32>
|
|
<td id=td33>
|
|
<td id=td34>
|
|
<tr id=tr4>
|
|
<td id=td41>
|
|
<td id=td42>
|
|
<td id=td43>
|
|
<td id=td44>
|
|
</table>
|
|
</div>
|
|
|
|
<script>
|
|
function runTest()
|
|
{
|
|
description(document.title);
|
|
var e = {};
|
|
|
|
// Set up shortcut access to elements
|
|
['sandbox', 'testtable', 'tr1', 'tr2', 'tr3', 'tr4',
|
|
'td11', 'td12', 'td13', 'td14',
|
|
'td21', 'td22', 'td23', 'td24',
|
|
'td31', 'td32', 'td33', 'td34',
|
|
'td41', 'td42', 'td43', 'td44'].forEach(function(a) {
|
|
e[a] = document.getElementById(a);
|
|
});
|
|
|
|
window.scrollTo(0, 0);
|
|
debug('Check area hits fully inside table cells');
|
|
check(125, 125, 10, 10, 10, 10, [e.td11]);
|
|
check(275, 125, 10, 10, 10, 10, [e.td14]);
|
|
check(175, 175, 10, 10, 10, 10, [e.td22]);
|
|
check(125, 275, 10, 10, 10, 10, [e.td41]);
|
|
|
|
debug('Check area hits across table border');
|
|
check(90, 125, 10, 20, 10, 20, [e.td11, e.testtable, e.sandbox]);
|
|
check(275, 90, 20, 10, 20, 10, [e.td14, e.testtable, e.sandbox]);
|
|
check(310, 310, 20, 20, 20, 20, [e.td44, e.testtable, e.sandbox]);
|
|
|
|
debug('Check area hits crossing neighbouring table cells');
|
|
check(190, 175, 10, 20, 10, 20, [e.td22, e.td23, e.testtable]);
|
|
check(260, 275, 10, 20, 10, 20, [e.td43, e.td44, e.testtable]);
|
|
check(175, 190, 20, 10, 20, 10, [e.td22, e.td32, e.testtable]);
|
|
check(275, 260, 20, 10, 20, 10, [e.td34, e.td44, e.testtable]);
|
|
check(190, 190, 20, 20, 20, 20, [e.td22, e.td23, e.td32, e.td33, e.testtable]);
|
|
|
|
debug('Check area hits crossing entire table cells');
|
|
check(200, 175, 10, 90, 10, 90, [e.td21, e.td22, e.td23, e.td24, e.testtable]);
|
|
check(175, 200, 90, 10, 90, 10, [e.td12, e.td22, e.td32, e.td42, e.testtable]);
|
|
check(150, 150, 60, 60, 60, 60, [e.td11, e.td12, e.td13,
|
|
e.td21, e.td22, e.td23,
|
|
e.td31, e.td32, e.td33,
|
|
e.testtable, e.sandbox]);
|
|
check(125, 350, 120, 10, 10, 10, [e.td31, e.td41, e.testtable, e.sandbox]);
|
|
check(350, 150, 10, 10, 10, 120, [e.td13, e.td14, e.td23, e.td24, e.testtable, e.sandbox]);
|
|
|
|
debug('Check area hits on right-to-left table');
|
|
e['testtable'].setAttribute('class', 'rtl');
|
|
check(275, 125, 10, 10, 10, 10, [e.td11]);
|
|
check(175, 175, 10, 10, 10, 10, [e.td23]);
|
|
check(175, 190, 20, 10, 20, 10, [e.td23, e.td33, e.testtable]);
|
|
|
|
debug('Check area hits on flipped (tb-lr) table');
|
|
e['testtable'].setAttribute('class', 'tblr');
|
|
check(275, 125, 10, 10, 10, 10, [e.td41]);
|
|
check(125, 275, 10, 10, 10, 10, [e.td14]);
|
|
check(200, 175, 10, 90, 10, 90, [e.td12, e.td22, e.td32, e.td42, e.testtable]);
|
|
|
|
}
|
|
|
|
runTest();
|
|
</script>
|
|
|
|
<p id='description'></p>
|
|
<span id="console"></span>
|
|
<script src="../../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|
|
|