summaryrefslogtreecommitdiffstats
path: root/layout/style/test/test_css_cross_domain.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/test/test_css_cross_domain.html')
-rw-r--r--layout/style/test/test_css_cross_domain.html158
1 files changed, 158 insertions, 0 deletions
diff --git a/layout/style/test/test_css_cross_domain.html b/layout/style/test/test_css_cross_domain.html
new file mode 100644
index 0000000000..8541c9c5ce
--- /dev/null
+++ b/layout/style/test/test_css_cross_domain.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML>
+<html>
+<!-- https://bugzilla.mozilla.org/show_bug.cgi?id=524223 -->
+<head>
+ <title>Test cross-domain CSS loading</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css"
+ href="/tests/SimpleTest/test.css"/>
+ <style type="text/css">
+ hr { border: none; clear: both }
+ .column {
+ margin: 10px;
+ float: left;
+ }
+ iframe {
+ width: 40px;
+ height: 680px;
+ border: none;
+ margin: 0;
+ padding: 0;
+ }
+ h2 { font-weight: normal; padding: 0 }
+ ol, h2 { font-size: 13px; line-height: 20px; }
+ ol { padding-left: 1em;
+ list-style-type: upper-roman }
+ ol ol { list-style-type: upper-alpha }
+ ol ol ol { list-style-type: decimal }
+ </style>
+</head>
+<body>
+<a target="_blank"
+ href="https://bugzilla.mozilla.org/show_bug.cgi?id=524223">Mozilla
+ Bug 524223</a>
+
+<hr/>
+
+<div class="column">
+<h2>&nbsp;</h2>
+<ol><li>text/css<ol><li>same origin<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>cross origin<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>same to cross<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>cross to same<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li></ol></li>
+ <li>text/html<ol><li>same origin<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>cross origin<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>same to cross<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li>
+ <li>cross to same<ol><li>valid</li>
+ <li>malformed</li>
+ <li>http error</li></ol></li></ol></li>
+</ol>
+</div>
+
+<div class="column">
+<h2>Quirks</h2>
+<div id="quirks-placeholder"></div>
+</div>
+
+<div class="column">
+<h2>Standards</h2>
+<div id="standards-placeholder"></div>
+</div>
+
+<script type="application/javascript">
+
+const COLOR = {red: "rgb(255, 0, 0)", lime: "rgb(0, 255, 0)"};
+
+// Cross origin requests with text/html as the contentType.
+// These requests will be blocked by ORB (when ORB is enabled),
+// thus the color of the element is not going to be changed.
+const BLOCKED_BY_ORB = ["JD1i", "JD1l", "JD2i", "JD2l"];
+
+/** Test for Bug 524223 **/
+function check_iframe(ifr) {
+ var doc = ifr.contentDocument;
+ var cases = doc.getElementsByTagName("p");
+
+ for (var i = 0; i < cases.length; i++) {
+ var color = doc.defaultView.getComputedStyle(cases[i])
+ .getPropertyValue("background-color");
+
+ var id = cases[i].id;
+ // only 'quirks' can have requests that are blocked by ORB.
+ if (BLOCKED_BY_ORB.includes(id) && ifr.id === "quirks") {
+ is(color, COLOR.red, ifr.id + " " + id);
+ } else {
+ is(color, COLOR.lime, ifr.id + " " + id);
+ }
+ }
+}
+
+SimpleTest.waitForExplicitFinish();
+
+function insertIFrames(src, id) {
+ const quirks = document.createElement("iframe");
+ quirks.src = "ccd-quirks.html";
+ quirks.id = "quirks";
+ document.getElementById("quirks-placeholder").replaceWith(quirks);
+
+ const standards = document.createElement("iframe");
+ standards.src = "ccd-standards.html";
+ standards.id = "standards";
+ document.getElementById("standards-placeholder").replaceWith(standards);
+}
+
+var hasQuirksLoaded = false;
+var hasStandardsLoaded = false;
+
+function quirksLoaded() {
+ hasQuirksLoaded = true;
+ MaybeRunTest();
+}
+
+function standardsLoaded() {
+ hasStandardsLoaded = true;
+ MaybeRunTest();
+}
+
+function runTest() {
+ check_iframe(document.getElementById("quirks"));
+ check_iframe(document.getElementById("standards"));
+}
+
+function MaybeRunTest() {
+ if (!hasQuirksLoaded || !hasStandardsLoaded) {
+ return;
+ }
+
+ runTest();
+ SimpleTest.finish();
+}
+
+window.onload = async function() {
+ await SpecialPowers.pushPrefEnv(
+ {
+ set: [
+ ['browser.opaqueResponseBlocking', true],
+ ['browser.opaqueResponseBlocking.javascriptValidator', true],
+ ],
+ }
+ );
+ insertIFrames();
+};
+</script>
+</body>
+</html>