| <!DOCTYPE html> |
| <title>Hit-testing culled inline</title> |
| <script src="../resources/runner.js"></script> |
| <body> |
| <div id="container" style="width: 800px"></div> |
| <script> |
| let span_count = 0; |
| |
| function createTree(container, children_list) { |
| let children = children_list.shift(); |
| for (let i = 0; i < children; ++i) { |
| const span = document.createElement('span'); |
| span.appendChild(document.createTextNode('1234567')); |
| container.appendChild(span); |
| container.appendChild(document.createTextNode(' ')); |
| ++span_count; |
| } |
| |
| if (children_list.length) { |
| const span = document.createElement('span'); |
| createTree(span, children_list); |
| container.appendChild(span); |
| } |
| } |
| |
| function setup() { |
| container.textContent = ''; |
| createTree(container, [1, 1, 1, 1, 3000]); |
| } |
| |
| function test() { |
| let bounds = container.getBoundingClientRect(); |
| for (let y = 0; y < 200; y += 10) { |
| for (let x = bounds.x + 5; x < bounds.x + 800; x += 100) |
| document.elementFromPoint(x, y); |
| document.elementFromPoint(bounds.right - 2, y); |
| } |
| } |
| |
| function run() { |
| PerfTestRunner.measureTime({ |
| description: `Measures performance of hit-testing ${span_count} culled inline.`, |
| run: test |
| }); |
| } |
| |
| setup(); |
| run(); |
| </script> |
| </body> |