Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / tools / perf / page_sets / tough_animation_cases / css_transitions_staggered_triggering_by_inserting_new_element.html
1 <!DOCTYPE html>
2 <meta name="viewport" content="width=device-width, user-scalable=no">
3 <link rel="stylesheet" type="text/css" href="resources/tablet.css">
4 <link rel="stylesheet" type="text/css" href="resources/transition.css">
5 <script src="resources/perftesthelper.js"></script>
6 <style>
7 show + target {
8   opacity: 1;
9 }
10 hide + target {
11   opacity: 0;
12 }
13 show, hide {
14   display: none;
15 }
16 </style>
17
18 <container id="container"></container>
19
20 <script>
21 var N = PerfTestHelper.getN(1000);
22 var duration = 1000;
23 var stash = {SHOW: [], HIDE: []};
24 var targets = [];
25
26 for (var i = 0; i < N; i++) {
27   stash.HIDE.push(document.createElement('hide'));
28   var show = document.createElement('show');
29   container.appendChild(show);
30   var target = document.createElement('target');
31   container.appendChild(target);
32   targets.push(target);
33 }
34
35 function startTransition(target, fastForward) {
36   var state = target.previousSibling;
37   stash[state.tagName].push(state);
38   state.remove();
39   var newState = state.tagName == 'SHOW' ? stash.HIDE.pop() : stash.SHOW.pop();
40   container.insertBefore(newState, target);
41   target.style.transitionDelay = -fastForward + 'ms';
42 }
43
44 requestAnimationFrame(function(time) {
45   var startTime = time - duration;
46   var step = 0;
47
48   function staggeredStart(time) {
49     var elapsed = time - startTime;
50     var targetStep = Math.floor(N * elapsed / duration);
51     step = Math.max(targetStep - N, step);
52     for (; step < targetStep; step++) {
53       startTransition(targets[step % N], elapsed - (step / N * duration));
54     }
55     requestAnimationFrame(staggeredStart);
56   }
57   staggeredStart(time);
58 });
59
60 PerfTestHelper.signalReady();
61 </script>