• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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