mirror of
https://github.com/servo/servo.git
synced 2025-07-13 02:13:40 +01:00
83 lines
3.8 KiB
HTML
83 lines
3.8 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>CSSOM - CSSStylesheet should support origins</title>
|
|
<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstylesheet-interface">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<link id="crossorigin" href="http://www1.{{host}}:{{ports[http][1]}}/css/cssom/stylesheet-same-origin.css" rel="stylesheet">
|
|
<link id="sameorigin" href="stylesheet-same-origin.css" rel="stylesheet">
|
|
<link id="sameorigindata" href="data:text/css,.green-text{color:rgb(0, 255, 0)}" rel="stylesheet">
|
|
<link id="redirect-sameorigin-to-crossorigin"
|
|
href="/common/redirect.py?location=http://www1.{{host}}:{{ports[http][1]}}/css/cssom/stylesheet-same-origin.css"
|
|
rel="stylesheet">
|
|
<link id="redirect-crossorigin-to-sameorigin"
|
|
href="http://www1.{{host}}:{{ports[http][1]}}/common/redirect.py?location=http://{{host}}:{{ports[http][0]}}/css/cssom/stylesheet-same-origin.css"
|
|
rel="stylesheet">
|
|
<link id="loaderror" href="support/malformed-http-response.asis" rel="stylesheet">
|
|
|
|
<script>
|
|
var crossorigin = document.getElementById("crossorigin").sheet;
|
|
var redirectSameOriginToCrossOrigin = document.getElementById("redirect-sameorigin-to-crossorigin").sheet;
|
|
var redirectCrossOriginToSameOrigin = document.getElementById("redirect-crossorigin-to-sameorigin").sheet;
|
|
var loadError = document.getElementById("loaderror").sheet;
|
|
var sameorigin = document.getElementById("sameorigin").sheet;
|
|
var sameorigindata = document.getElementById("sameorigindata").sheet;
|
|
|
|
function doOriginCleanCheck(sheet, name) {
|
|
assert_equals(sheet.cssRules.length, 1, name + " stylesheet.cssRules should be accessible.");
|
|
sheet.insertRule("#test { margin: 10px; }", 1);
|
|
assert_equals(sheet.cssRules.length, 2, name + " stylesheet.insertRule should be accessible.");
|
|
sheet.deleteRule(0);
|
|
assert_equals(sheet.cssRules.length, 1, name + " stylesheet.deleteRule should be accessible.");
|
|
}
|
|
|
|
function doOriginDirtyCheck(sheet) {
|
|
assert_throws("SecurityError",
|
|
function () {
|
|
sheet.cssRules;
|
|
},
|
|
'stylesheet.cssRules should throw SecurityError.');
|
|
assert_throws("SecurityError",
|
|
function () {
|
|
sheet.insertRule("#test { margin: 10px; }", 1);
|
|
},
|
|
'stylesheet.insertRule should throw SecurityError.');
|
|
|
|
assert_throws("SecurityError",
|
|
function () {
|
|
sheet.deleteRule(0);
|
|
},
|
|
'stylesheet.deleteRule should throw SecurityError.');
|
|
}
|
|
|
|
test(function() {
|
|
doOriginDirtyCheck(crossorigin);
|
|
}, "Origin-clean check in cross-origin CSSOM Stylesheets");
|
|
|
|
test(function() {
|
|
doOriginDirtyCheck(redirectSameOriginToCrossOrigin);
|
|
}, "Origin-clean check in cross-origin CSSOM Stylesheets (redirect from same-origin to cross-origin)");
|
|
|
|
test(function() {
|
|
doOriginDirtyCheck(redirectCrossOriginToSameOrigin);
|
|
}, "Origin-clean check in cross-origin CSSOM Stylesheets (redirect from cross-origin to same-origin)");
|
|
|
|
test(function() {
|
|
doOriginDirtyCheck(loadError);
|
|
}, "Origin-clean check in loading error CSSOM Stylesheets");
|
|
|
|
test(function() {
|
|
doOriginCleanCheck(sameorigin, "Same-origin");
|
|
}, "Origin-clean check in same-origin CSSOM Stylesheets");
|
|
|
|
test(function() {
|
|
doOriginCleanCheck(sameorigindata, "data:css");
|
|
}, "Origin-clean check in data:css CSSOM Stylesheets");
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
</html>
|