Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: third_party/WebKit/PerformanceTests/Canvas/resources/canvas_runner.js

Issue 1644353002: Enable blink_perf.canvas on Android Perf bots (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add --reduce-security-for-testing Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // CanvasRunner is a wrapper of PerformanceTests/resources/runner.js for canvas tests. 1 // CanvasRunner is a wrapper of PerformanceTests/resources/runner.js for canvas tests.
2 (function () { 2 (function () {
3 var MEASURE_DRAW_TIMES = 50; 3 var MEASURE_DRAW_TIMES = 50;
4 var MAX_MEASURE_DRAW_TIMES = 1000; 4 var MAX_MEASURE_DRAW_TIMES = 1000;
5 var MAX_MEASURE_TIME_PER_FRAME = 1000; // 1 sec 5 var MAX_MEASURE_TIME_PER_FRAME = 1000; // 1 sec
6 var currentTest = null; 6 var currentTest = null;
7 var isTestDone = false; 7 var isTestDone = false;
8 8
9 var CanvasRunner = {}; 9 var CanvasRunner = {};
10 10
11 CanvasRunner.start = function (test) { 11 CanvasRunner.start = function (test) {
12 PerfTestRunner.prepareToMeasureValuesAsync({unit: 'runs/s', 12 PerfTestRunner.prepareToMeasureValuesAsync({unit: 'runs/s',
13 description: test.description, done: testDone}); 13 description: test.description, done: testDone});
14 if (!test.doRun) { 14 if (!test.doRun) {
15 CanvasRunner.logFatalError("\ndoRun must be set.\n"); 15 CanvasRunner.logFatalError("doRun must be set.");
16 return; 16 return;
17 } 17 }
18 currentTest = test; 18 currentTest = test;
19 runTest(); 19 runTest();
20 } 20 }
21 21
22 function runTest() { 22 function runTest() {
23 try { 23 try {
24 if (currentTest.preRun) 24 if (currentTest.preRun)
25 currentTest.preRun(); 25 currentTest.preRun();
26 26
27 var start = PerfTestRunner.now(); 27 var start = PerfTestRunner.now();
28 var count = 0; 28 var count = 0;
29 while ((PerfTestRunner.now() - start <= MAX_MEASURE_TIME_PER_FRAME) && (count * MEASURE_DRAW_TIMES < MAX_MEASURE_DRAW_TIMES)) { 29 while ((PerfTestRunner.now() - start <= MAX_MEASURE_TIME_PER_FRAME) && (count * MEASURE_DRAW_TIMES < MAX_MEASURE_DRAW_TIMES)) {
30 for (var i = 0; i < MEASURE_DRAW_TIMES; i++) { 30 for (var i = 0; i < MEASURE_DRAW_TIMES; i++) {
31 currentTest.doRun(); 31 currentTest.doRun();
32 } 32 }
33 count++; 33 count++;
34 } 34 }
35 if (currentTest.ensureComplete) 35 if (currentTest.ensureComplete)
36 currentTest.ensureComplete(); 36 currentTest.ensureComplete();
37 var elapsedTime = PerfTestRunner.now() - start; 37 var elapsedTime = PerfTestRunner.now() - start;
38 if (currentTest.postRun) 38 if (currentTest.postRun)
39 currentTest.postRun(); 39 currentTest.postRun();
40 40
41 PerfTestRunner.measureValueAsync(MEASURE_DRAW_TIMES * count * 1000 / elapsedTime); 41 PerfTestRunner.measureValueAsync(MEASURE_DRAW_TIMES * count * 1000 / elapsedTime);
42 } catch(err) { 42 } catch(err) {
43 CanvasRunner.logFatalError("\ntest fails due to GPU issue. " + err + "\n"); 43 CanvasRunner.logFatalError("test fails due to GPU issue. " + err);
44 return; 44 return;
45 } 45 }
46 46
47 if (!isTestDone) 47 if (!isTestDone)
48 requestAnimationFrame(runTest); 48 requestAnimationFrame(runTest);
49 } 49 }
50 50
51 function testDone() { 51 function testDone() {
52 isTestDone = true; 52 isTestDone = true;
53 } 53 }
54 54
55 CanvasRunner.logFatalError = function (text) { 55 CanvasRunner.logFatalError = function (text) {
56 PerfTestRunner.logFatalError(text); 56 PerfTestRunner.logFatalError(text);
57 } 57 }
58 58
59 CanvasRunner.startPlayingAndWaitForVideo = function (video, callback) {
60 var gotPlaying = false;
61 var gotTimeUpdate = false;
62
63 var maybeCallCallback = function() {
64 if (gotPlaying && gotTimeUpdate && callback) {
65 callback(video);
66 callback = undefined;
67 video.removeEventListener('playing', playingListener, true);
68 video.removeEventListener('timeupdate', timeupdateListener, true );
69 }
70 };
71
72 var playingListener = function() {
73 gotPlaying = true;
74 maybeCallCallback();
75 };
76
77 var timeupdateListener = function() {
78 // Checking to make sure the current time has advanced beyond
79 // the start time seems to be a reliable heuristic that the
80 // video element has data that can be consumed.
81 if (video.currentTime > 0.0) {
82 gotTimeUpdate = true;
83 maybeCallCallback();
84 }
85 };
86
87 video.addEventListener('playing', playingListener, true);
88 video.addEventListener('timeupdate', timeupdateListener, true);
89 video.loop = true;
90 video.play();
91 }
92
59 window.CanvasRunner = CanvasRunner; 93 window.CanvasRunner = CanvasRunner;
60 })(); 94 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698