Home | History | Annotate | Download | only in Events
      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