OLD | NEW |
| (Empty) |
1 <!doctype html> | |
2 <html> | |
3 <head> | |
4 <style> | |
5 video { background-color: yellow; width: 320px; height: 240px;} | |
6 </style> | |
7 <script src=media-file.js></script> | |
8 <script src=video-test.js></script> | |
9 </head> | |
10 <body> | |
11 <video controls ></video> | |
12 <p>Test to ensure that a media file blocked by a beforeload handler generate
s an error | |
13 and does not block the document's 'load' event.</p> | |
14 | |
15 <script> | |
16 if (window.testRunner) | |
17 testRunner.dumpAsText(); | |
18 | |
19 var blockedURL; | |
20 var allowedURL; | |
21 var test; | |
22 var loadedmetadataFired = false; | |
23 var loadedFired = false; | |
24 | |
25 function logEvent(evt) | |
26 { | |
27 consoleWrite("<br>EVENT('" + evt.type + "')"); | |
28 } | |
29 | |
30 function loadedmetadata(evt) | |
31 { | |
32 logEvent(evt); | |
33 consoleWrite(""); | |
34 loadedmetadataFired = true; | |
35 checkEndTest(); | |
36 } | |
37 | |
38 function setupSourceTest() | |
39 { | |
40 consoleWrite("<br>*** Test using the <source> element ***"); | |
41 blockedURL = relativeURL(video.src); | |
42 allowedURL = findMediaFile("audio", "content/test"); | |
43 | |
44 // Remove 'src' attribute so <source> will be used when we force a r
eload | |
45 video.removeAttribute('src'); | |
46 | |
47 var blockedSource = document.createElement('source'); | |
48 blockedSource.src = blockedURL; | |
49 blockedSource.type = mimeTypeForExtension(blockedSource.src.split('.
').pop()); | |
50 video.appendChild(blockedSource); | |
51 | |
52 var allowedSource = document.createElement('source'); | |
53 allowedSource.src = allowedURL; | |
54 allowedSource.type = mimeTypeForExtension(allowedSource.src.split('.
').pop()); | |
55 video.appendChild(allowedSource); | |
56 | |
57 test = 2; | |
58 video.load(); | |
59 }; | |
60 | |
61 function error(evt) | |
62 { | |
63 logEvent(evt); | |
64 switch (test) | |
65 { | |
66 case 1: | |
67 testExpected("event.target.tagName", "VIDEO"); | |
68 testExpected("video.error", null, "!="); | |
69 testExpected("video.error.code", MediaError.MEDIA_ERR_SRC_NO
T_SUPPORTED); | |
70 testExpected("video.networkState", HTMLMediaElement.NETWORK_
NO_SOURCE); | |
71 | |
72 setupSourceTest(); | |
73 break; | |
74 case 2: | |
75 // The error should have been fired at the <source> and the
media element should | |
76 // not be in an error state. | |
77 testExpected("event.target.tagName", "SOURCE"); | |
78 testExpected("video.error", null); | |
79 break; | |
80 case 3: | |
81 failTest("Unexpected 'error' event fired!"); | |
82 break; | |
83 } | |
84 } | |
85 | |
86 function beforeload(evt) | |
87 { | |
88 logEvent(evt); | |
89 testExpected("event.target.tagName", "VIDEO"); | |
90 switch (test) | |
91 { | |
92 case 1: | |
93 consoleWrite("blocking load of 'src'"); | |
94 evt.preventDefault(); | |
95 break; | |
96 | |
97 case 2: | |
98 if (relativeURL(evt.url) == blockedURL) { | |
99 consoleWrite("blocking load of first <source> elem
ent"); | |
100 evt.preventDefault(); | |
101 } else { | |
102 consoleWrite("allowing load of second <source> ele
ment"); | |
103 } | |
104 break; | |
105 } | |
106 } | |
107 | |
108 function loaded(evt) | |
109 { | |
110 loadedFired = true; | |
111 checkEndTest(); | |
112 }; | |
113 | |
114 function checkEndTest() | |
115 { | |
116 if (loadedmetadataFired && loadedFired) | |
117 endTest(); | |
118 }; | |
119 | |
120 findMediaElement(); | |
121 | |
122 video.addEventListener('loadstart', logEvent, true); | |
123 video.addEventListener('loadedmetadata', loadedmetadata, true); | |
124 video.addEventListener('beforeload', beforeload, true); | |
125 video.addEventListener('error', error, true); | |
126 window.addEventListener('load', loaded, true); | |
127 | |
128 consoleWrite("*** Test initial state ***"); | |
129 testExpected("video.networkState", HTMLMediaElement.NETWORK_EMPTY); | |
130 testExpected("video.error", null); | |
131 | |
132 consoleWrite("<br>*** Test blocking the 'src' attribute ***"); | |
133 test = 1; | |
134 var mediaFile = findMediaFile("video", "content/test"); | |
135 video.src = mediaFile; | |
136 </script> | |
137 | |
138 </body> | |
139 </html> | |
OLD | NEW |