WebCore:
[WebKit-https.git] / LayoutTests / media / video-test.js
1 if (window.layoutTestController) {
2     layoutTestController.dumpAsText();
3     layoutTestController.waitUntilDone();
4 }
5
6 var video = document.getElementsByTagName('video')[0];
7 var media;
8 if (video)
9     media = video;
10 var console = document.createElement('div');
11 document.body.appendChild(console);
12
13 function hanged()
14 {
15     consoleWrite("FAIL: timed out");
16     if (window.layoutTestController)
17         layoutTestController.notifyDone();  
18 }
19 setTimeout(hanged, 10000);
20
21 function testAndEnd(testFuncString)
22 {
23     test(testFuncString, true);
24 }
25
26 function test(testFuncString, endit)
27 {
28     if (eval(testFuncString))
29         consoleWrite("TEST(" + testFuncString + ") <span style='color:green'>OK</span>");
30     else
31         consoleWrite("TEST(" + testFuncString + ") <span style='color:red'>FAIL</span>");    
32
33     if (endit)
34         endTest();  
35 }
36
37 function run(testFuncString)
38 {
39     consoleWrite("RUN(" + testFuncString + ")");
40     try {
41         eval(testFuncString);
42     } catch (ex) {
43         consoleWrite(ex);
44     }
45 }
46
47 function waitForEventAndEnd(eventName, funcString)
48 {
49     waitForEvent(eventName, funcString, true)
50 }
51
52 function waitForEvent(eventName, func, endit)
53 {
54     function _eventCallback(event)
55     {
56         consoleWrite("EVENT(" + eventName + ")");
57         
58         if (func)
59             func();
60         
61         if (endit)
62             endTest();    
63     }
64
65     media.addEventListener(eventName, _eventCallback);    
66 }
67
68 function waitForEventTestAndEnd(eventName, testFuncString)
69 {
70     waitForEventAndTest(eventName, testFuncString, true);
71 }
72
73 function waitForEventAndFail(eventName)
74 {
75     waitForEventAndTest(eventName, "false", true);
76 }
77
78 function waitForEventAndTest(eventName, testFuncString, endit)
79 {
80     function _eventCallback(event)
81     {
82         if (eval(testFuncString))
83             consoleWrite("EVENT(" + eventName + ") TEST(" + testFuncString + ") <span style='color:green'>OK</span>");
84         else
85             consoleWrite("EVENT(" + eventName + ") TEST(" + testFuncString + ") <span style='color:red'>FAIL</span>");
86         
87         if (endit)
88             endTest();    
89     }
90     
91     media.addEventListener(eventName, _eventCallback);
92 }
93
94 function testException(testString, exceptionString)
95 {
96     try {
97         eval(testString);
98     } catch (ex) { 
99         if (ex.code == eval(exceptionString))
100             consoleWrite("TEST(" + testString + ") THROWS("+exceptionString+") <span style='color:green'>OK</span>");
101         else
102             consoleWrite("TEST(" + testString + ") THROWS("+exceptionString+") <span style='color:red'>FAIL</span>");    
103     }
104 }
105
106 var testEnded = false;
107
108 function endTest()
109 {
110     consoleWrite("END OF TEST");
111     testEnded = true;
112     if (window.layoutTestController)
113         layoutTestController.notifyDone();     
114 }
115
116 function endTestLater()
117 {
118     setTimeout(endTest, 250);
119 }
120
121 function failTestIn(ms)
122 {
123     setTimeout(function () {
124         consoleWrite("FAIL: did not end fast enough");
125         endTest();
126     }, ms);
127 }
128
129 function consoleWrite(text)
130 {
131     if (testEnded)
132         return;
133     console.innerHTML += text + "<br>";
134 }
135
136 function relativeURL(url)
137 {
138     return url.substr(url.indexOf('/media/')+7);
139 }