71 lines
3 KiB
HTML
71 lines
3 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Video element src attribute must match src list - positive test</title>
|
|
<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src http://{{domains[www2]}}:{{ports[http][0]}}/ 'self'; connect-src 'self';">
|
|
<script src='/resources/testharness.js'></script>
|
|
<script src='/resources/testharnessreport.js'></script>
|
|
</head>
|
|
<body>
|
|
<h1>Video element in media-src list - redirect test</h1>
|
|
<div id='log'></div>
|
|
|
|
<p>This test tests a buggy interaction in Chrome 46. Two hosts (self and www2) are both allowed
|
|
as media-src, but only one (self) is allowed for connect-src. If a video src starts on
|
|
an allowed host (self), and is redirected to another allowed media-src host, it should succeed. But a bug
|
|
causes the redirect to be done in a fetch context to which connect-src is being applied instead, so
|
|
the load is blocked. (This test passes in IceCat 45, modulo an event listener not firing.)</p>
|
|
|
|
<script>
|
|
var src_test = async_test("In-policy async video src");
|
|
var src_redir_test = async_test("in-policy async video src w/redir")
|
|
var source_test = async_test("In-policy async video source element");
|
|
var source_redir_test = async_test("In-policy async video source element w/redir");
|
|
|
|
var t_spv = async_test("Should not fire policy violation events");
|
|
var test_count = 4;
|
|
window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event"));
|
|
|
|
function media_loaded(t) {
|
|
t.done();
|
|
if (--test_count <= 0) {
|
|
t_spv.done();
|
|
}
|
|
}
|
|
|
|
function media_error_handler(t) {
|
|
t.step( function () {
|
|
assert_unreached("Media error handler shouldn't be triggered for allowed domain.");
|
|
});
|
|
t.done();
|
|
}
|
|
</script>
|
|
|
|
<video id="videoObject" width="320" height="240" controls
|
|
onloadeddata="media_loaded(source_test)">
|
|
<source id="videoSourceObject"
|
|
type="video/webm"
|
|
onerror="media_error_handler(source_test)"
|
|
src="http://{{domains[www2]}}:{{ports[http][0]}}/media/A4.webm">
|
|
</video>
|
|
|
|
<video id="videoObject2" width="320" height="240" controls
|
|
onerror="media_error_handler(src_test)"
|
|
onloadeddata="media_loaded(src_test)"
|
|
src="http://{{domains[www2]}}:{{ports[http][0]}}/media/A4.webm">
|
|
|
|
<video id="videoObject3" width="320" height="240" controls
|
|
onloadeddata="media_loaded(source_redir_test)">
|
|
<source id="videoSourceObject"
|
|
type="video/webm"
|
|
onerror="media_error_handler(source_test)"
|
|
src="/common/redirect.py?location=http://{{domains[www2]}}:{{ports[http][0]}}/media/A4.webm">
|
|
</video>
|
|
|
|
<video id="videoObject2" width="320" height="240" controls
|
|
onerror="media_error_handler(src_redir_test)"
|
|
onloadeddata="media_loaded(src_redir_test)"
|
|
src="/common/redirect.py?location=http://{{domains[www2]}}:{{ports[http][0]}}/media/A4.webm">
|
|
|
|
</body>
|
|
</html>
|