| <!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.userAgentPart(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> |