blob: 191dd5442f6054b1a4ca8abd58bca63e65baa897 [file] [log] [blame]
<!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 &lt;video&gt; 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>