gecko/content/media/test/test_load.html
Robert O'Callahan b456ec8e36 Bug 499880 - Restructure content/media directory. r+=doublec
--HG--
rename : content/media/video/src/nsAudioStream.cpp => content/media/nsAudioStream.cpp
rename : content/media/video/public/nsAudioStream.h => content/media/nsAudioStream.h
rename : content/media/video/src/nsMediaCache.cpp => content/media/nsMediaCache.cpp
rename : content/media/video/public/nsMediaCache.h => content/media/nsMediaCache.h
rename : content/media/video/src/nsMediaDecoder.cpp => content/media/nsMediaDecoder.cpp
rename : content/media/video/public/nsMediaDecoder.h => content/media/nsMediaDecoder.h
rename : content/media/video/src/nsMediaStream.cpp => content/media/nsMediaStream.cpp
rename : content/media/video/public/nsMediaStream.h => content/media/nsMediaStream.h
rename : content/media/video/src/nsChannelReader.cpp => content/media/ogg/nsChannelReader.cpp
rename : content/media/video/public/nsChannelReader.h => content/media/ogg/nsChannelReader.h
rename : content/media/video/src/nsOggDecoder.cpp => content/media/ogg/nsOggDecoder.cpp
rename : content/media/video/public/nsOggDecoder.h => content/media/ogg/nsOggDecoder.h
rename : content/media/video/test/320x240.allow-origin.ogv => content/media/test/320x240.allow-origin.ogv
rename : content/media/video/test/320x240.allow-origin.ogv^headers^ => content/media/test/320x240.allow-origin.ogv^headers^
rename : content/media/video/test/320x240.ogv => content/media/test/320x240.ogv
rename : content/media/video/test/Makefile.in => content/media/test/Makefile.in
rename : content/media/video/test/big.wav => content/media/test/big.wav
rename : content/media/video/test/bug461281.ogg => content/media/test/bug461281.ogg
rename : content/media/video/test/bug482461.ogv => content/media/test/bug482461.ogv
rename : content/media/video/test/can_play_type_ogg.js => content/media/test/can_play_type_ogg.js
rename : content/media/video/test/can_play_type_wave.js => content/media/test/can_play_type_wave.js
rename : content/media/video/test/contentDuration1.sjs => content/media/test/contentDuration1.sjs
rename : content/media/video/test/contentDuration2.sjs => content/media/test/contentDuration2.sjs
rename : content/media/video/test/contentDuration3.sjs => content/media/test/contentDuration3.sjs
rename : content/media/video/test/contentDuration4.sjs => content/media/test/contentDuration4.sjs
rename : content/media/video/test/contentDuration5.sjs => content/media/test/contentDuration5.sjs
rename : content/media/video/test/contentDuration6.sjs => content/media/test/contentDuration6.sjs
rename : content/media/video/test/crashtests/468763-1.html => content/media/test/crashtests/468763-1.html
rename : content/media/video/test/crashtests/474744-1.html => content/media/test/crashtests/474744-1.html
rename : content/media/video/test/crashtests/crashtests.list => content/media/test/crashtests/crashtests.list
rename : content/media/video/test/dynamic_redirect.sjs => content/media/test/dynamic_redirect.sjs
rename : content/media/video/test/file_access_controls.html => content/media/test/file_access_controls.html
rename : content/media/video/test/r11025_s16_c1.wav => content/media/test/r11025_s16_c1.wav
rename : content/media/video/test/r11025_s16_c1_trailing.wav => content/media/test/r11025_s16_c1_trailing.wav
rename : content/media/video/test/r11025_u8_c1.wav => content/media/test/r11025_u8_c1.wav
rename : content/media/video/test/r11025_u8_c1_trunc.wav => content/media/test/r11025_u8_c1_trunc.wav
rename : content/media/video/test/r16000_u8_c1_list.wav => content/media/test/r16000_u8_c1_list.wav
rename : content/media/video/test/redirect.sjs => content/media/test/redirect.sjs
rename : content/media/video/test/seek.ogv => content/media/test/seek.ogv
rename : content/media/video/test/small-shot.ogg => content/media/test/small-shot.ogg
rename : content/media/video/test/sound.ogg => content/media/test/sound.ogg
rename : content/media/video/test/test_access_control.html => content/media/test/test_access_control.html
rename : content/media/video/test/test_audio1.html => content/media/test/test_audio1.html
rename : content/media/video/test/test_audio2.html => content/media/test/test_audio2.html
rename : content/media/video/test/test_audioDocumentTitle.html => content/media/test/test_audioDocumentTitle.html
rename : content/media/video/test/test_autobuffer.html => content/media/test/test_autobuffer.html
rename : content/media/video/test/test_autobuffer2.html => content/media/test/test_autobuffer2.html
rename : content/media/video/test/test_autoplay.html => content/media/test/test_autoplay.html
rename : content/media/video/test/test_bug448534.html => content/media/test/test_bug448534.html
rename : content/media/video/test/test_bug461281.html => content/media/test/test_bug461281.html
rename : content/media/video/test/test_bug463162.xhtml => content/media/test/test_bug463162.xhtml
rename : content/media/video/test/test_bug465498.html => content/media/test/test_bug465498.html
rename : content/media/video/test/test_bug468190.html => content/media/test/test_bug468190.html
rename : content/media/video/test/test_bug468190_wav.html => content/media/test/test_bug468190_wav.html
rename : content/media/video/test/test_bug476973.html => content/media/test/test_bug476973.html
rename : content/media/video/test/test_bug482461.html => content/media/test/test_bug482461.html
rename : content/media/video/test/test_bug493187.html => content/media/test/test_bug493187.html
rename : content/media/video/test/test_bug495145.html => content/media/test/test_bug495145.html
rename : content/media/video/test/test_bug495145_wav.html => content/media/test/test_bug495145_wav.html
rename : content/media/video/test/test_bug495300.html => content/media/test/test_bug495300.html
rename : content/media/video/test/test_bug495319.html => content/media/test/test_bug495319.html
rename : content/media/video/test/test_can_play_type.html => content/media/test/test_can_play_type.html
rename : content/media/video/test/test_can_play_type_no_ogg.html => content/media/test/test_can_play_type_no_ogg.html
rename : content/media/video/test/test_can_play_type_no_wave.html => content/media/test/test_can_play_type_no_wave.html
rename : content/media/video/test/test_can_play_type_ogg.html => content/media/test/test_can_play_type_ogg.html
rename : content/media/video/test/test_can_play_type_wave.html => content/media/test/test_can_play_type_wave.html
rename : content/media/video/test/test_closing_connections.html => content/media/test/test_closing_connections.html
rename : content/media/video/test/test_constants.html => content/media/test/test_constants.html
rename : content/media/video/test/test_contentDuration1.html => content/media/test/test_contentDuration1.html
rename : content/media/video/test/test_contentDuration2.html => content/media/test/test_contentDuration2.html
rename : content/media/video/test/test_contentDuration3.html => content/media/test/test_contentDuration3.html
rename : content/media/video/test/test_contentDuration4.html => content/media/test/test_contentDuration4.html
rename : content/media/video/test/test_contentDuration5.html => content/media/test/test_contentDuration5.html
rename : content/media/video/test/test_contentDuration6.html => content/media/test/test_contentDuration6.html
rename : content/media/video/test/test_controls.html => content/media/test/test_controls.html
rename : content/media/video/test/test_currentTime.html => content/media/test/test_currentTime.html
rename : content/media/video/test/test_decoder_disable.html => content/media/test/test_decoder_disable.html
rename : content/media/video/test/test_delay_load.html => content/media/test/test_delay_load.html
rename : content/media/video/test/test_duration1.html => content/media/test/test_duration1.html
rename : content/media/video/test/test_ended1.html => content/media/test/test_ended1.html
rename : content/media/video/test/test_ended2.html => content/media/test/test_ended2.html
rename : content/media/video/test/test_error_on_404.html => content/media/test/test_error_on_404.html
rename : content/media/video/test/test_info_leak.html => content/media/test/test_info_leak.html
rename : content/media/video/test/test_load.html => content/media/test/test_load.html
rename : content/media/video/test/test_load_candidates.html => content/media/test/test_load_candidates.html
rename : content/media/video/test/test_media_selection.html => content/media/test/test_media_selection.html
rename : content/media/video/test/test_mixed_principals.html => content/media/test/test_mixed_principals.html
rename : content/media/video/test/test_networkState.html => content/media/test/test_networkState.html
rename : content/media/video/test/test_onloadedmetadata.html => content/media/test/test_onloadedmetadata.html
rename : content/media/video/test/test_paused.html => content/media/test/test_paused.html
rename : content/media/video/test/test_paused_after_ended.html => content/media/test/test_paused_after_ended.html
rename : content/media/video/test/test_play.html => content/media/test/test_play.html
rename : content/media/video/test/test_progress1.html => content/media/test/test_progress1.html
rename : content/media/video/test/test_progress2.html => content/media/test/test_progress2.html
rename : content/media/video/test/test_progress3.html => content/media/test/test_progress3.html
rename : content/media/video/test/test_progress4.html => content/media/test/test_progress4.html
rename : content/media/video/test/test_readyState.html => content/media/test/test_readyState.html
rename : content/media/video/test/test_seek1.html => content/media/test/test_seek1.html
rename : content/media/video/test/test_seek2.html => content/media/test/test_seek2.html
rename : content/media/video/test/test_seek3.html => content/media/test/test_seek3.html
rename : content/media/video/test/test_seek4.html => content/media/test/test_seek4.html
rename : content/media/video/test/test_seek5.html => content/media/test/test_seek5.html
rename : content/media/video/test/test_seek6.html => content/media/test/test_seek6.html
rename : content/media/video/test/test_seek7.html => content/media/test/test_seek7.html
rename : content/media/video/test/test_seek8.html => content/media/test/test_seek8.html
rename : content/media/video/test/test_seek9.html => content/media/test/test_seek9.html
rename : content/media/video/test/test_source.html => content/media/test/test_source.html
rename : content/media/video/test/test_source_write.html => content/media/test/test_source_write.html
rename : content/media/video/test/test_standalone.html => content/media/test/test_standalone.html
rename : content/media/video/test/test_timeupdate1.html => content/media/test/test_timeupdate1.html
rename : content/media/video/test/test_timeupdate2.html => content/media/test/test_timeupdate2.html
rename : content/media/video/test/test_timeupdate3.html => content/media/test/test_timeupdate3.html
rename : content/media/video/test/test_videoDocumentTitle.html => content/media/test/test_videoDocumentTitle.html
rename : content/media/video/test/test_volume.html => content/media/test/test_volume.html
rename : content/media/video/test/test_wav_8bit.html => content/media/test/test_wav_8bit.html
rename : content/media/video/test/test_wav_ended1.html => content/media/test/test_wav_ended1.html
rename : content/media/video/test/test_wav_ended2.html => content/media/test/test_wav_ended2.html
rename : content/media/video/test/test_wav_list.html => content/media/test/test_wav_list.html
rename : content/media/video/test/test_wav_onloadedmetadata.html => content/media/test/test_wav_onloadedmetadata.html
rename : content/media/video/test/test_wav_seek1.html => content/media/test/test_wav_seek1.html
rename : content/media/video/test/test_wav_seek3.html => content/media/test/test_wav_seek3.html
rename : content/media/video/test/test_wav_seek4.html => content/media/test/test_wav_seek4.html
rename : content/media/video/test/test_wav_seek5.html => content/media/test/test_wav_seek5.html
rename : content/media/video/test/test_wav_seek6.html => content/media/test/test_wav_seek6.html
rename : content/media/video/test/test_wav_seek7.html => content/media/test/test_wav_seek7.html
rename : content/media/video/test/test_wav_seek8.html => content/media/test/test_wav_seek8.html
rename : content/media/video/test/test_wav_seek_past_end.html => content/media/test/test_wav_seek_past_end.html
rename : content/media/video/test/test_wav_seek_then_play.html => content/media/test/test_wav_seek_then_play.html
rename : content/media/video/test/test_wav_standalone.html => content/media/test/test_wav_standalone.html
rename : content/media/video/test/test_wav_timeupdate1.html => content/media/test/test_wav_timeupdate1.html
rename : content/media/video/test/test_wav_timeupdate2.html => content/media/test/test_wav_timeupdate2.html
rename : content/media/video/test/test_wav_trailing.html => content/media/test/test_wav_trailing.html
rename : content/media/video/test/test_wav_trunc.html => content/media/test/test_wav_trunc.html
rename : content/media/video/test/test_wav_trunc_seek.html => content/media/test/test_wav_trunc_seek.html
rename : content/media/video/test/use_large_cache.js => content/media/test/use_large_cache.js
rename : content/media/video/src/nsWaveDecoder.cpp => content/media/wave/nsWaveDecoder.cpp
rename : content/media/video/public/nsWaveDecoder.h => content/media/wave/nsWaveDecoder.h
2009-06-26 16:23:15 +12:00

267 lines
8.4 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=479859
-->
<head>
<title>Test for Bug 479859</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript" src="use_large_cache.js"></script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=479859">Mozilla Bug 479859</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="text/javascript">
function log(msg) {
//document.getElementById('log').innerHTML += "<p>" + msg + "</p>";
}
// We don't track: progress, canplay, canplaythrough and stalled events,
// as these can be delivered out of order, and/or multiple times.
var gEventTypes = [ 'loadstart', 'load', 'abort', 'error', 'emptied', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange' ];
var gEventNum = 0;
var gTestNum = 0;
var gExpectedEvents = null;
var gTest = null;
var gTestName = "?";
function listener(evt) {
log('event ' + evt.type);
evt.stopPropagation();
ok(gEventNum < gExpectedEvents.length, gTestName+" - corrent number of events received");
var expected = (gEventNum < gExpectedEvents.length) ? gExpectedEvents[gEventNum] : "NoEvent";
is(evt.type, expected, gTestName+" - events received in order");
gEventNum++;
if (gEventNum == gExpectedEvents.length) {
setTimeout(nextTest, 0);
}
}
var gMedia = null;
function createMedia(tag) {
gMedia = document.createElement(tag);
gMedia.setAttribute("autobuffer", "true");
for (var i=0; i<gEventTypes.length; i++) {
gMedia.addEventListener(gEventTypes[i], listener, false);
}
}
var gWavAudio = 'r11025_s16_c1.wav';
var gWavAudioType = 'audio/x-wav';
var gOggVideo = '320x240.ogv';
var gOggVideoType = "application/ogg";
function addSource(src, type) {
var s = document.createElement("source");
s.src = src;
s.type = type;
gMedia.appendChild(s);
}
function prependSource(src, type) {
var s = document.createElement("source");
s.src = src;
s.type = type;
gMedia.insertBefore(s, gMedia.firstChild);
}
var gTest10Prepended = false;
var gTest11Prepended = false;
var gTests = [
{
// Test 0: adding video to doc, then setting src should load implicitly.
create:
function() {
createMedia("video");
document.body.appendChild(gMedia);
gMedia.src = gOggVideo;
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 1: adding audio to doc, then setting src should load implicitly.
create:
function() {
createMedia("audio");
document.body.appendChild(gMedia);
gMedia.src = gWavAudio;
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 2: adding video to doc, then adding source.
create:
function() {
createMedia("video");
document.body.appendChild(gMedia);
addSource(gOggVideo, gOggVideoType);
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 3: adding audio to doc, then adding source.
create:
function() {
createMedia("audio");
document.body.appendChild(gMedia);
addSource(gWavAudio, gWavAudioType);
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 4: video with multiple source, the first of which are bad, we should load the last.
create:
function() {
createMedia("video");
document.body.appendChild(gMedia);
addSource("404a.ogv", gOggVideoType);
addSource("404b.ogv", gOggVideoType);
addSource(gOggVideo, gOggVideoType);
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 5: audio with multiple source, the first of which are bad, we should load the last.
create:
function() {
createMedia("audio");
document.body.appendChild(gMedia);
addSource("404a.wav", gWavAudioType);
addSource("404b.wav", gWavAudioType);
addSource(gWavAudio, gWavAudioType);
},
expectedEvents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 6: video with bad src, good <source>, ensure that <source> aren't used.
create:
function() {
createMedia("video");
gMedia.src = "404a.ogv";
addSource(gOggVideo, gOggVideoType);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error']
}, {
// Test 7: audio with bad src, good <source>, ensure that <source> aren't used.
create:
function() {
createMedia("audio");
gMedia.src = "404a.wav";
addSource(gWavAudio, gWavAudioType);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error']
}, {
// Test 8: video with only bad source, loading, then adding a good source - should resume load.
create:
function() {
createMedia("video");
addSource("404a.ogv", gOggVideoType);
addSource("404b.ogv", gOggVideoType);
gMedia.addEventListener("error",
function(e) {
// Should awaken waiting load, causing successful load.
addSource(gOggVideo, gOggVideoType);
},
false);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 9: audio with only bad source, loading, then adding a good source - should resume load.
create:
function() {
createMedia("audio");
addSource("404a.wav", gWavAudioType);
addSource("404b.wav", gWavAudioType);
gMedia.addEventListener("error",
function(e) {
// Should awaken waiting load, causing successful load.
addSource(gWavAudio, gWavAudioType);
},
false);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error', 'durationchange', 'loadedmetadata', 'loadeddata', 'load']
}, {
// Test 10: video with only 1 bad source, let it fail to load, then prepend a good <source> to the video, it shouldn't be selected, because the "pointer" should be after the last child - the bad source.
prepended: false,
create:
function() {
createMedia("video");
addSource("404a.ogv", gOggVideoType);
addSource("404b.ogv", gOggVideoType);
gMedia.addEventListener("error",
function(e) {
// Should awaken waiting load, causing successful load.
if (!gTest10Prepended) {
prependSource(gOggVideo, gOggVideoType);
gTest10Prepended = true;
}
},
false);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error', 'error']
}, {
// Test 11: audio with only 1 bad source, let it fail to load, then prepend a good <source> to the video, it shouldn't be selected, because the "pointer" should be after the last child - the bad source.
create:
function() {
createMedia("audio");
addSource("404a.wav", gWavAudioType);
addSource("404b.wav", gWavAudioType);
gMedia.addEventListener("error",
function(e) {
// Should awaken waiting load, causing successful load.
if (!gTest11Prepended) {
prependSource(gWavAudio, gWavAudioType);
gTest11Prepended = true;
}
},
false);
document.body.appendChild(gMedia);
},
expectedEvents: ['loadstart', 'error', 'error']
}
];
function nextTest() {
if (gMedia) {
if (gMedia.parentNode)
gMedia.parentNode.removeChild(gMedia);
gMedia = null;
}
gEventNum = 0;
if (gTestNum == gTests.length) {
SimpleTest.finish();
return;
}
log("Starting test " + gTestNum);
var t = gTests[gTestNum];
gTestName = "Test"+gTestNum;
gTestNum++;
gExpectedEvents = t.expectedEvents;
t.create();
}
addLoadEvent(nextTest);
SimpleTest.waitForExplicitFinish();
</script>
</pre>
<div id="log" style="font-size: small"></div>
</body>
</html>