| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Document::nodesFromRect : Rect-based hit-testing on SVG elements - bug 89990</title> |
| <style type="text/css"> |
| #sandbox { |
| position: absolute; |
| left: 0px; |
| top: 0px; |
| width: 600px; |
| height: 800px; |
| } |
| .svg { |
| width: 40px; |
| height: 20px; |
| margin: 10px; |
| padding: 2px; |
| box-sizing: border-box; |
| } |
| </style> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <script src="resources/nodesFromRect.js"></script> |
| </head> |
| |
| <body> |
| <div id=sandbox> |
| <div class=svg id=div1> |
| <svg id=svg1 height=16 xmlns="http://www.w3.org/2000/svg"> |
| <circle id="red" cx="8" cy="8" r="5" fill="red" /> |
| </svg> |
| </div> |
| <div class=svg id=div2> |
| <svg id=svg2 height=16 xmlns="http://www.w3.org/2000/svg"> |
| <circle id="yellow" cx="8" cy="8" r="5" fill="yellow" /> |
| </svg> |
| </div> |
| <div class=svg id=div3> |
| <svg id=svg3 height=16 xmlns="http://www.w3.org/2000/svg"> |
| <circle id="green" cx="8" cy="8" r="5" fill="green" /> |
| </svg> |
| </div> |
| </div> |
| |
| <script> |
| function runTest() |
| { |
| description(document.title); |
| var e = {}; |
| |
| // Set up shortcut access to elements |
| ['sandbox', 'div1', 'div2', 'div3', 'div4', |
| 'svg1', 'svg2', 'svg3', 'svg4', |
| 'red', 'yellow', 'green'].forEach(function(a) { |
| e[a] = document.getElementById(a); |
| }); |
| |
| window.scrollTo(0, 0); |
| |
| debug('\nSome of following tests will likely FAIL and will need to be updated once rect-based') |
| debug('hit tests are supported inside SVG elements:\n'); |
| |
| debug('Check area hits fully inside SVG element'); |
| check(20, 20, 4, 4, 4, 4, [e.red, e.svg1]); |
| check(20, 52, 4, 4, 4, 4, [e.yellow, e.svg2]); |
| check(18, 80, 4, 4, 4, 4, [e.green, e.svg3]); |
| check(14, 14, 2, 2, 2, 2, [e.svg1]); |
| check(20, 20, 9, 9, 9, 9, [e.red, e.svg1, e.div1]); |
| |
| debug('Check area hits overlapping SVG element'); |
| check(12, 12, 2, 2, 2, 2, [e.svg1, e.div1]); |
| check(6, 50, 5, 20, 5, 5, [e.svg2, e.div2, e.sandbox]); |
| |
| debug('Check area hits across SVG elements'); |
| check(20, 30, 20, 10, 30, 10, [e.svg2, e.div2, e.svg1, e.div1, e.sandbox]); |
| |
| debug(''); |
| } |
| |
| runTest(); |
| </script> |
| |
| <p id='description'></p> |
| <span id="console"></span> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |
| |