blob: 1fab8beaf0a1b74f2f3200201b11ac0dae0697d5 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Cross-origin CSS: Origin header should be set when fetching stylesheet in cors mode</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link id="link-id0" rel="stylesheet" type="text/css" href="/security/resources/get-css-if-origin-header.php?id=id0"></link>
<link id="link-id1" rel="stylesheet" type="text/css" href="http://localhost:8000/security/resources/get-css-if-origin-header.php?id=id1"></link>
<link id="link-id2" rel="stylesheet" type="text/css" href="/security/resources/get-css-if-origin-header.php?id=id2" crossorigin=""></link>
<link id="link-id3" rel="stylesheet" type="text/css" href="http://localhost:8000/security/resources/get-css-if-origin-header.php?id=id3" crossorigin=""></link>
<link id="link-id4" rel="stylesheet" type="text/css" href="http://localhost:8000/security/resources/get-css-if-origin-header.php?id=id4" crossorigin="anonymous"></link>
<link id="link-id5" rel="stylesheet" type="text/css" href="http://localhost:8000/security/resources/get-css-if-origin-header.php?id=id5" crossorigin="credentials"></link>
<script>
function getBackgroundColorForId(id) {
return window.getComputedStyle(document.getElementById(id), null).getPropertyValue('background-color')
}
function checkCSSLoading(id, expectToIncludeOrigin, expectVisibility)
{
expectedColor = expectToIncludeOrigin ? "rgb(255, 255, 0)" : "rgb(0, 0, 255)";
assert_equals(getBackgroundColorForId(id), expectedColor);
assert_equals(document.getElementById("link-" + id).sheet.cssRules !== null, expectVisibility);
}
var onloadTest = async_test(" Testing that link element to load stylesheets correctly handle crossorigin mode.");
window.onload = function () {
test(function () {
checkCSSLoading('id0', false, true);
}, 'Same-origin URL link without crossorigin attribute should be loaded without an Origin header');
test(function () {
checkCSSLoading('id1', false, false);
}, 'Cross-origin URL link without crossorigin attribute should be loaded without an Origin header');
test(function () {
checkCSSLoading('id2', true, true);
}, 'Same-origin URL link with crossorigin="" attribute should be loaded with an Origin header');
test(function () {
checkCSSLoading('id3', true, true);
}, 'Cross-origin URL link with crossorigin="" should be loaded with an Origin header');
test(function () {
checkCSSLoading('id4', true, true);
}, 'Cross-origin URL link with crossorigin="anonymous" should be loaded with an Origin header');
test(function () {
checkCSSLoading('id5', true, true);
}, 'Cross-origin URL link with crossorigin="credentials" should be loaded with an Origin header');
onloadTest.done();
};
</script>
</head>
<body>
<div id="id0" class="id0"></div>
<div id="id1" class="id1"></div>
<div id="id2" class="id2"></div>
<div id="id3" class="id3"></div>
<div id="id4" class="id4"></div>
<div id="id5" class="id5"></div>
</body>
</html>