1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script type="text/javascript" src="../resources/runner.js"></script> 5 </head> 6 <body> 7 <div id="root"></div> 8 <script> 9 function createTreeOfTrees(root, depth, branch, eachTreeHeight) 10 { 11 var node = root; 12 var i; 13 for (i = 0; i < eachTreeHeight; ++i) { 14 var child = document.createElement('div'); 15 node.appendChild(child); 16 node = child; 17 } 18 if (depth == 1) 19 return; 20 for (i = 0; i < branch; ++i) { 21 var child = document.createElement('div'); 22 node.appendChild(child); 23 var shadowRoot = child.createShadowRoot(); 24 createTreeOfTrees(shadowRoot, depth - 1, branch, eachTreeHeight); 25 } 26 } 27 28 function leftMostLeaf(root) 29 { 30 var node = root; 31 while (node.firstChild) 32 node = node.firstChild 33 if (!node.shadowRoot) 34 return node; 35 return leftMostLeaf(node.shadowRoot) 36 } 37 38 function rightMostLeaf(root) 39 { 40 var node = root; 41 while (node.lastChild) 42 node = node.lastChild 43 if (!node.shadowRoot) 44 return node; 45 return rightMostLeaf(node.shadowRoot) 46 } 47 48 var root = document.getElementById('root'); 49 createTreeOfTrees(root, 10, 2, 50); 50 var leaf1 = leftMostLeaf(root); 51 var leaf2 = rightMostLeaf(root); 52 53 function run() 54 { 55 leaf1.dispatchEvent(new MouseEvent('mousemove', { 56 relatedTarget: leaf2 57 })); 58 } 59 60 PerfTestRunner.measureRunsPerSecond({ 61 description: "Measure mousemove events dispatching in shadow trees", 62 run: run 63 }); 64 </script> 65 </body> 66 </html> 67