142 lines
5.9 KiB
HTML
142 lines
5.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
<script>
|
|
var embed;
|
|
var orangeURL = "orange.mov";
|
|
var yellowURL = "yellow.mov";
|
|
|
|
function logEvent(event)
|
|
{
|
|
debug("<i>EVENT(" + event.type + ")</i>");
|
|
}
|
|
|
|
function seeked()
|
|
{
|
|
debug("");
|
|
shouldEvaluateTo("embed.GetTime()", embed.GetTimeScale() * 2);
|
|
evalAndLog("embed.Play()");
|
|
}
|
|
|
|
function playing(event)
|
|
{
|
|
embed.removeEventListener("qt_play", playing, true);
|
|
debug("");
|
|
logEvent(event);
|
|
shouldEvaluateTo("embed.GetRate()", 1);
|
|
evalAndLog("embed.Stop()");
|
|
}
|
|
|
|
function clearURL(event)
|
|
{
|
|
logEvent(event)
|
|
|
|
shouldBeTrue("embed.GetURL().indexOf('" + yellowURL + "') != -1");
|
|
|
|
debug("<br>** SetURL to an empty string should generate an error.");
|
|
evalAndLog("embed.SetURL('')");
|
|
}
|
|
|
|
function paused(event)
|
|
{
|
|
debug("");
|
|
logEvent(event)
|
|
shouldEvaluateTo("embed.GetRate()", 0);
|
|
|
|
debug("<br>** SetURL expects a url relative to the original src, not to the document.");
|
|
embed.addEventListener("qt_canplaythrough", clearURL, true);
|
|
evalAndLog("embed.SetURL('" + yellowURL + "')");
|
|
}
|
|
|
|
function error(event)
|
|
{
|
|
logEvent(event)
|
|
shouldBeEqualToString("embed.GetURL()", "");
|
|
shouldBeEqualToString("embed.GetPluginStatus()", "Error");
|
|
debug("<br>END TEST.");
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
|
|
function testElement(event)
|
|
{
|
|
embed.removeEventListener("qt_canplaythrough", testElement, true);
|
|
logEvent(event)
|
|
|
|
if (window.internals) {
|
|
debug("<br>** Test to make sure <video> element is in the shadow DOM.");
|
|
evalAndLog("shadowElement = internals.shadowRoot(embed).firstChild");
|
|
shouldBeEqualToString("shadowElement.tagName", "VIDEO");
|
|
shouldBeEqualToString("internals.shadowPseudoId(shadowElement)", "-webkit-plugin-replacement");
|
|
} else {
|
|
debug("");
|
|
testFailed("This test must be run in DRT.");
|
|
debug("");
|
|
}
|
|
|
|
debug("<br>** Test for the presence of overridden methods.");
|
|
var methods = [ "SetURL", "GetURL", "Play", "Stop", "GetRate", "SetRate", "IsFullScreen",
|
|
"ExitFullScreen", "GetPluginStatus", "GetTime", "SetTime", "SeekToDate", "GetDate",
|
|
"GetDuration", "GetTimeScale", "GetMaxTimeLoaded", "GetMaxBytesLoaded",
|
|
"GetMovieSize", "GetTimedMetadataUpdates", "GetAccessLog", "GetErrorLog"
|
|
];
|
|
for (i = 0; i < methods.length; ++i) {
|
|
var type = typeof embed[methods[i]];
|
|
if (type == "function")
|
|
testPassed("embed." + methods[i] + " is a function.");
|
|
else
|
|
testFailed("embed." + methods[i] + " should be a function but is \"" + type + "\".");
|
|
}
|
|
|
|
debug("<br>** Test overridden methods.");
|
|
shouldBeTrue("embed.GetURL().indexOf('" + orangeURL + "') != -1");
|
|
shouldEvaluateTo("embed.GetDuration()", 300000);
|
|
shouldEvaluateTo("embed.GetMovieSize()", 24962);
|
|
shouldEvaluateTo("embed.GetMaxTimeLoaded()", 300000);
|
|
shouldEvaluateTo("embed.GetMaxBytesLoaded()", 24962);
|
|
shouldEvaluateTo("embed.GetMovieSize()", 24962);
|
|
shouldBeEqualToString("embed.GetPluginStatus()", "Playable");
|
|
|
|
// "GetDate()" should return the current date, clear seconds and milliseconds
|
|
var now = new Date();
|
|
shouldBeCloseTo("new Date(embed.GetDate()) - new Date()", 0, 100);
|
|
|
|
evalAndLog("embed.SetTime(embed.GetTimeScale() * 2)");
|
|
setTimeout(seeked, 500);
|
|
}
|
|
|
|
function setup()
|
|
{
|
|
if (window.testRunner) {
|
|
window.testRunner.waitUntilDone();
|
|
window.testRunner.dumpAsText()
|
|
window.internals.settings.setQuickTimePluginReplacementEnabled(true);
|
|
}
|
|
|
|
div = document.getElementById("parent");
|
|
|
|
debug("<br>** Test 'qtsrc'. src = " + yellowURL + " qtsrc = " + orangeURL + ", qtsrc should load.");
|
|
div.innerHTML = '<embed src="resources/' + yellowURL + '" qtsrc="' + orangeURL + '" width="640" height="480" postdomevents=true>';
|
|
|
|
var events = [ "qt_begin", "qt_validated", "qt_enterfullscreen", "qt_exitfullscreen",
|
|
"qt_loadedmetada", "qt_canplay", "qt_ended", "qt_timedmetadataupdated"
|
|
];
|
|
embed = div.firstChild;
|
|
for (i = 0; i < events.length; ++i)
|
|
embed.addEventListener(events[i], logEvent, true);
|
|
embed.addEventListener("qt_canplaythrough", testElement, true);
|
|
embed.addEventListener("qt_play", playing, true);
|
|
embed.addEventListener("qt_pause", paused, true);
|
|
embed.addEventListener("qt_error", error, true);
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body onload="setup()">
|
|
<div id=parent></div>
|
|
<p>
|
|
<div id=console></div>
|
|
</body>
|
|
</html>
|