blob: 6015bb7bb2de669dec54c3b25605964f4b16e8a5 [file] [log] [blame]
<!DOCTYPE html>
<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
<title>Test that the HTMLMediaElement preload 'none' attribute value is ignored for MediaStream used as srcObject and MediaStream object URLs used as src.</title>>
<link rel="author" title="Matthew Wolenetz" href="mailto:wolenetz@chromium.org"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<p class="instructions">When prompted, accept to share your audio and video streams.</p>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that the HTMLMediaElement preload 'none' attribute value is ignored for MediaStream used as srcObject and MediaStream object URLs used as src.</p>
<audio preload="none"></audio>
<video preload="none"></video>
<script>
function testPreloadNone(t, mediaElement, setSourceStreamFunc)
{
// The optional deferred load steps (for preload none) for MediaStream resources should be skipped.
mediaElement.addEventListener("suspend", t.unreached_func("'suspend' should not be fired."));
mediaElement.addEventListener("error", t.step_func(function() {
assert_unreached("'error' should not be fired, code=" + mediaElement.error.code);
}));
mediaElement.addEventListener("loadeddata", t.step_func(function()
{
assert_equals(mediaElement.networkState, mediaElement.NETWORK_LOADING);
t.done();
}));
setSourceStreamFunc();
assert_equals(mediaElement.networkState, mediaElement.NETWORK_NO_SOURCE); // Resource selection is active.
}
async_test(function(t)
{
var aud = document.querySelector("audio");
navigator.mediaDevices.getUserMedia({audio:true})
.then(t.step_func(function(stream)
{
testPreloadNone(t, aud, t.step_func(function()
{
aud.src = URL.createObjectURL(stream);
t.add_cleanup(function() { URL.revokeObjectURL(aud.src); });
}));
}),
t.unreached_func("getUserMedia error callback was invoked."));
}, "Test that preload 'none' is ignored for MediaStream object URL used as src");
async_test(function(t)
{
var vid = document.querySelector("video");
navigator.mediaDevices.getUserMedia({video:true})
.then(t.step_func(function(stream)
{
testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; }));
}), t.unreached_func("getUserMedia error callback was invoked."));
}, "Test that preload 'none' is ignored for MediaStream used as srcObject");
</script>
</body>
</html>