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 id="child1"></div><div id="child2"></div></div> 8<script> 9function createTreeOfTrees(root, depth, 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 var child = document.createElement('div'); 21 node.appendChild(child); 22 var shadowRoot = child.createShadowRoot(); 23 createTreeOfTrees(shadowRoot, depth - 1, eachTreeHeight); 24} 25 26function leftMostLeaf(root) 27{ 28 var node = root; 29 while (node.firstChild) 30 node = node.firstChild 31 if (!node.shadowRoot) 32 return node; 33 return leftMostLeaf(node.shadowRoot) 34} 35 36function rightMostLeaf(root) 37{ 38 var node = root; 39 while (node.lastChild) 40 node = node.lastChild 41 if (!node.shadowRoot) 42 return node; 43 return rightMostLeaf(node.shadowRoot) 44} 45 46var root = document.getElementById('root'); 47createTreeOfTrees(document.getElementById('child1'), 50, 20); 48createTreeOfTrees(document.getElementById('child2'), 50, 20); 49var leaf1 = leftMostLeaf(root); 50var leaf2 = rightMostLeaf(root); 51 52function run() 53{ 54 leaf1.dispatchEvent(new MouseEvent('mousemove', { 55 relatedTarget: leaf2 56 })); 57} 58 59PerfTestRunner.measureRunsPerSecond({ 60 description: "Measure mousemove events dispatching in shadow trees", 61 run: run 62}); 63</script> 64</body> 65</html> 66