blob: 758a273bb192bea67776d432125d548bfebd5ff8 [file] [log] [blame]
<!DOCTYPE html>
<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>
<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>
<div id=log></div>
<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.srcObject = stream; }));
}),
t.unreached_func("getUserMedia error callback was invoked."));
}, "Test that preload 'none' is ignored for MediaStream object URL used as srcObject for audio");
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 for video");
</script>
</body>
</html>