Index: tools/perf/page_sets/tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html |
diff --git a/tools/perf/page_sets/tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html b/tools/perf/page_sets/tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..90c5b003bfd8bfaa52efb21e5f515bd8f7100a9f |
--- /dev/null |
+++ b/tools/perf/page_sets/tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html |
@@ -0,0 +1,62 @@ |
+<!DOCTYPE html> |
+<meta name="viewport" content="width=device-width, user-scalable=no"> |
+<link rel="stylesheet" type="text/css" href="resources/tablet.css"> |
+<script src="resources/perftesthelper.js"></script> |
+ |
+<container id="container"></container> |
+ |
+<script> |
+var N = PerfTestHelper.getN(500); |
+var duration = 1000; |
+ |
+function startAnimation() { |
+ var target = document.createElement('target'); |
+ container.appendChild(target); |
+ updateStyle(target); |
+ target.addEventListener('webkitAnimationEnd', function(e) { |
+ updateStyle(target); |
+ }); |
+} |
+ |
+var nextId = 0; |
+var nextAnim = 0; |
+function updateStyle(element) { |
+ if (!element.id) { |
+ element.id = 'e' + nextId++; |
+ } |
+ if (element.styleSheet) { |
+ element.styleSheet.remove(); |
+ } |
+ var id = element.id; |
+ var anim = id + 'anim' + nextAnim++; |
+ var style = document.createElement('style'); |
+ style.textContent = '\ |
+ #' + id + ' {\ |
+ -webkit-animation: ' + anim + ' 1s;\ |
+ }\n\ |
+ @-webkit-keyframes ' + anim + ' {\ |
+ 0% { opacity: 0; }\ |
+ 100% { opacity: 1; }\ |
+ }'; |
+ container.appendChild(style); |
+ element.styleSheet = style; |
+} |
+ |
+requestAnimationFrame(function(t) { |
+ var base = t; |
+ var i = 0; |
+ |
+ function staggeredStart(t) { |
+ elapsed = t - base; |
+ for (; i < N * elapsed / duration; i++) { |
+ startAnimation(); |
+ } |
+ if (i < N) { |
+ requestAnimationFrame(staggeredStart); |
+ } else { |
+ PerfTestHelper.signalReady(); |
+ } |
+ } |
+ requestAnimationFrame(staggeredStart); |
+}); |
+</script> |