| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Document::nodesFromRect test - bug 40197</title> |
| <style type="text/css"> @import "resources/nodesFromRect.css"; </style> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <script src="resources/nodesFromRect.js"></script> |
| <script type="application/javascript"> |
| function runTest() |
| { |
| var e = {}; |
| |
| // Set up shortcut access to elements |
| e['html'] = document.getElementsByTagName("html")[0]; |
| ['h1', 'd1', 'd2', 'p1', 'p2', 'p3', 'p4', 'p5', 'span', 'body'].forEach(function(a) { |
| e[a] = document.getElementById(a); |
| }); |
| |
| window.scrollTo(0, 0); |
| |
| check(53, 71, 0, 0, 0, 0, [e.body]); |
| check(53, 71, 10, 0, 0, 0, [e.h1, e.body]); |
| check(53, 71, 0, 10, 0, 0, [e.p3, e.body]); |
| check(53, 71, 0, 0, 10, 0, [e.d1, e.body]); |
| check(53, 71, 0, 0, 0, 10, [e.body]); |
| check(53, 71, 0, 10, 0, 10, [e.p3, e.body]); |
| check(53, 71, 10, 0, 10, 0, [e.d1, e.h1, e.body]); |
| check(53, 71, 10, 10, 10, 10, [e.p3, e.d1, e.h1, e.body]); |
| |
| check(152, 105, 10, 0, 0, 0, [e.p3, e.body]); |
| check(152, 105, 0, 10, 0, 0, [e.p4, e.body]); |
| check(152, 105, 0, 0, 10, 0, [e.body]); |
| check(152, 105, 0, 0, 0, 10, [e.d1, e.body]); |
| check(152, 105, 10, 0, 10, 0, [e.p3, e.body]); |
| check(152, 105, 0, 10, 0, 10, [e.p4, e.d1, e.body]); |
| check(152, 105, 10, 10, 10, 10, [e.p4, e.p3, e.d1, e.body]); |
| |
| // e.p1 is invisible and shouldn't appear: |
| check(153, 193, 0, 0, 0, 0, [e.p5]); |
| // NOTE: [e.p5, e.d2]) should be returned if we did not stop |
| // at e.p5, which fully encloses the target rect. |
| check(153,193,0, 20, 0, 20, [e.p5]); |
| check(153,193,20, 0, 20, 0, [e.p5, e.body]); |
| |
| check(77, 240, 0, 0, 0, 0, [e.p2]); |
| check(77, 240, 1, 0, 0, 0, [e.p5, e.p2]); |
| check(77, 240, 0, 0, 1, 0, [e.span, e.p2]); |
| check(77, 240, 1, 0, 1, 0, [e.p5, e.span, e.p2]); |
| |
| // Precise pixel checks: |
| check(144, 183, 0, 0, 0, 0, [e.body]); |
| check(144, 183, 1, 0, 1, 0, [e.p5, e.body]); |
| check(144, 183, 0, 1, 0, 1, [e.d2, e.body]); |
| check(144, 183, 0, 0, 1, 0, [e.p5, e.body]); |
| check(144, 183, 0, 0, 0, 1, [e.d2, e.body]); |
| check(144, 183, 0, 0, 1, 1, [e.p5, e.d2, e.body]); |
| check(144, 183, 1, 1, 1, 1, [e.p5, e.d2, e.body]); |
| check(77, 240, 0, 0, 0, 0, [e.p2]); |
| check(77, 240, 0, 1, 0, 1, [e.p2]); |
| check(77, 240, 1, 0, 0, 0, [e.p5, e.p2]); |
| check(77, 240, 0, 0, 1, 0, [e.span, e.p2]); |
| check(77, 240, 1, 0, 1, 0, [e.p5, e.span, e.p2]); |
| check(77, 240, 1, 1, 1, 1, [e.p5, e.span, e.p2]); |
| |
| // Expanding area checks: |
| check(39, 212, 0, 0, 0, 0, [e.body]); |
| check(39, 212, 10, 0, 0, 0, [e.d2, e.body]); |
| check(39, 212, 0, 0, 10, 0, [e.p2, e.body]); |
| check(39, 212, 10, 1, 30, 0, [e.d2, e.p2, e.body]); |
| check(39, 212, 10, 5, 30, 0, [e.span, e.d2, e.p2, e.body]); |
| check(39, 212, 10, 15, 30, 0, [e.p5, e.span, e.d2, e.p2, e.body]); |
| check(39, 212, 10, 0, 10, 0, [e.d2, e.p2, e.body]); |
| check(39, 212, 0, 10, 0, 10, [e.p5, e.body]); |
| check(39, 212, 10, 10, 10, 10, [e.p5, e.d2, e.p2, e.body]); |
| } |
| window.onload = runTest; |
| </script> |
| </head> |
| <body id="body"> |
| <h1 id="h1"></h1> |
| <div id="d1"></div> |
| |
| <!-- floated element --> |
| <div id="d2" style="float: left"></div> |
| |
| <!-- hidden element --> |
| <p id="p1" style="float: left; visibility: hidden"></p> |
| |
| <p id="p2" style="clear: left"><span id="span"></span></p> |
| |
| <!-- absolute position --> |
| <p id="p3" style="position:absolute; top: 10px; left:50px; height:50px;"></p> |
| |
| <!-- fixed position --> |
| <p id="p4" style="position: fixed; top: 30px; left: 150px; height: 50px; background-color: blue;"></p> |
| |
| <!-- relative position --> |
| <p id="p5" style="position:relative; top: -100px; left: 30px; margin-bottom: -70px; background-color: green"></p> |
| |
| <span id="console"></span> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |
| |