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> 9function 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 28function 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 38function 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 48var root = document.getElementById('root'); 49createTreeOfTrees(root, 10, 2, 50); 50var leaf1 = leftMostLeaf(root); 51var leaf2 = rightMostLeaf(root); 52 53function run() 54{ 55 leaf1.dispatchEvent(new MouseEvent('mousemove', { 56 relatedTarget: leaf2 57 })); 58} 59 60PerfTestRunner.measureRunsPerSecond({ 61 description: "Measure mousemove events dispatching in shadow trees", 62 run: run 63}); 64</script> 65</body> 66</html> 67