Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!-- Used by media_seek_perf to record seek perf metrics. --> | |
| 2 <!DOCTYPE html> | |
| 3 <html lang="en-US"> | |
| 4 <head> | |
| 5 <title>CNS Seek Tests</title> | |
| 6 <script src="utils.js" type="text/javascript"></script> | |
| 7 </head> | |
| 8 | |
| 9 <body> | |
| 10 <video controls></video> | |
| 11 <div></div> | |
| 12 </body> | |
| 13 | |
| 14 <script type="text/javascript"> | |
| 15 var video = document.querySelector("video"); | |
| 16 var logDiv = document.querySelector("div"); | |
| 17 var ITERATIONS = 3; | |
| 18 | |
| 19 var SeekTestCase = { | |
| 20 SHORT_SEEK: 0, | |
| 21 LONG_SEEK: 1, | |
| 22 BUFFERED_SEEK: 2 | |
| 23 } | |
| 24 | |
| 25 var CachedState = { | |
| 26 UNCACHED: 0, | |
| 27 CACHED: 1 | |
| 28 } | |
| 29 | |
| 30 function log(text) { | |
| 31 logDiv.innerText += text + "\n"; | |
| 32 } | |
| 33 | |
| 34 function resetSeekRecords() { | |
| 35 seekRecords = []; | |
| 36 for (cache_value in Object.keys(CachedState)) { | |
|
DaleCurtis
2012/04/23 22:56:20
Why the change to cache_value? Aren't we reading t
shadi
2012/04/23 23:24:28
Well, Object.keys(CachedState) is ["UNCACHED", "CA
| |
| 37 seekRecords[cache_value] = []; | |
| 38 for (seek_value in Object.keys(SeekTestCase)) { | |
|
DaleCurtis
2012/04/23 22:56:20
Ditto.
shadi
2012/04/23 23:24:28
Done.
| |
| 39 seekRecords[cache_value][seek_value] = []; | |
| 40 } | |
| 41 } | |
| 42 } | |
| 43 | |
| 44 // Called by the PyAuto controller to initiate testing. | |
| 45 function startTest(src) { | |
| 46 if (window.domAutomationController) | |
| 47 window.domAutomationController.send(true); | |
| 48 | |
| 49 resetSeekRecords(); | |
| 50 endTest = false; | |
| 51 errorMsg = ""; | |
| 52 timer = new Timer(); | |
| 53 | |
| 54 video.addEventListener("playing", playing); | |
| 55 video.addEventListener("seeked", seeked); | |
| 56 video.addEventListener("error", | |
| 57 function() { end("Error loading media"); }); | |
| 58 originalSrc = src; | |
| 59 log("Running tests on " + originalSrc); | |
| 60 log("Starting seek tests without browser caching:"); | |
| 61 cacheState = CachedState.UNCACHED; | |
| 62 iteration = 0; | |
| 63 IterationTest(); | |
| 64 } | |
| 65 | |
| 66 function IterationTest() { | |
| 67 if (iteration < ITERATIONS) { | |
| 68 iteration++; | |
| 69 log("Test iteration " + iteration); | |
| 70 seekState = SeekTestCase.SHORT_SEEK; | |
| 71 video.src = getVideoSrc(); | |
| 72 video.play(); | |
| 73 } else if (cacheState == CachedState.UNCACHED) { | |
| 74 log("Starting seek tests with browser caching:"); | |
| 75 cacheState = CachedState.CACHED; | |
| 76 iteration = 0; | |
| 77 IterationTest(); | |
| 78 } else { | |
| 79 endTest = true; | |
| 80 } | |
| 81 } | |
| 82 | |
| 83 function getVideoSrc() { | |
| 84 if (cacheState == CachedState.UNCACHED) { | |
| 85 return GenerateUniqueURL(originalSrc); | |
| 86 } else { | |
| 87 return video.src; | |
| 88 } | |
| 89 } | |
| 90 | |
| 91 function playing() { | |
| 92 if (seekState == SeekTestCase.SHORT_SEEK) { | |
| 93 timer.start(); | |
| 94 video.currentTime = 1; | |
| 95 } | |
| 96 } | |
| 97 | |
| 98 function seeked() { | |
| 99 delta = timer.stop(); | |
| 100 switch (seekState) { | |
| 101 case SeekTestCase.SHORT_SEEK: | |
| 102 seekRecords[cacheState][SeekTestCase.SHORT_SEEK].push(delta); | |
| 103 log ("short seek in " + delta + "ms.") | |
| 104 seekState = SeekTestCase.LONG_SEEK; | |
| 105 timer.start(); | |
| 106 video.currentTime = video.duration - 1; | |
| 107 break; | |
| 108 // Seek to almost end of file (unbuffered area). | |
| 109 case SeekTestCase.LONG_SEEK: | |
| 110 seekRecords[cacheState][SeekTestCase.LONG_SEEK].push(delta); | |
| 111 log("long seek in " + delta + "ms.") | |
| 112 seekState = SeekTestCase.BUFFERED_SEEK; | |
| 113 timer.start(); | |
| 114 video.currentTime = 1; | |
| 115 break; | |
| 116 case SeekTestCase.BUFFERED_SEEK: | |
| 117 seekRecords[cacheState][SeekTestCase.BUFFERED_SEEK].push(delta); | |
| 118 log("buffered seek in " + delta + "ms.") | |
| 119 IterationTest(); | |
| 120 break; | |
| 121 default: | |
| 122 end("An un-expected seek occured."); | |
| 123 } | |
| 124 } | |
| 125 | |
| 126 function end(msg) { | |
| 127 errorMsg = msg; | |
| 128 endTest = true; | |
| 129 log(msg); | |
| 130 } | |
| 131 </script> | |
| 132 </html> | |
| OLD | NEW |