3 Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
7 <link rel="import" href="/tvcm/raf.html">
11 tvcm.unittest.testSuite(function() {
12 var fakeNow = undefined;
13 function withFakeWindowPerformanceNow(func) {
14 var oldNow = window.performance.now;
16 window.performance.now = function() { return fakeNow; };
19 window.performance.now = oldNow;
23 test('runIdleTaskWhileIdle', function() {
24 withFakeWindowPerformanceNow(function() {
25 tvcm.forcePendingRAFTasksToRun(100000); // Clear current RAF task queue.
28 tvcm.requestAnimationFrame(function() {
32 tvcm.requestIdleCallback(function() {
36 tvcm.forcePendingRAFTasksToRun(fakeNow);
39 tvcm.forcePendingRAFTasksToRun(fakeNow);
44 test('twoShortIdleCallbacks', function() {
45 withFakeWindowPerformanceNow(function() {
46 tvcm.forcePendingRAFTasksToRun(100000); // Clear current RAF task queue.
50 tvcm.requestIdleCallback(function() {
54 tvcm.requestIdleCallback(function() {
59 tvcm.forcePendingRAFTasksToRun(fakeNow);
66 test('oneLongOneShortIdleCallback', function() {
67 withFakeWindowPerformanceNow(function() {
68 tvcm.forcePendingRAFTasksToRun(100000); // Clear current RAF task queue.
72 tvcm.requestIdleCallback(function() {
76 tvcm.requestIdleCallback(function() {
81 tvcm.forcePendingRAFTasksToRun(fakeNow);
83 assertFalse(idle2Ran);
85 // Reset idle1Ran to verify that it dosn't run again.
88 // Now run. idle2 should now run.
89 tvcm.forcePendingRAFTasksToRun(fakeNow);
90 assertFalse(idle1Ran);
95 test('buggyPerformanceNowDoesNotBlockIdleTasks', function() {
96 withFakeWindowPerformanceNow(function() {
97 tvcm.forcePendingRAFTasksToRun(); // Clear current RAF task queue.
100 var idle2Ran = false;
101 tvcm.requestIdleCallback(function() {
105 tvcm.requestIdleCallback(function() {
110 tvcm.forcePendingRAFTasksToRun(0);
111 assertTrue(idle1Ran);
112 assertFalse(idle2Ran);
114 // Reset idle1Ran to verify that it dosn't run again.
117 // Now run. idle2 should now run.
118 tvcm.forcePendingRAFTasksToRun(0);
119 assertFalse(idle1Ran);
120 assertTrue(idle2Ran);