blob: 3e24be27ff1378fdadba82dad80d99414b3e9bf9 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<link id="sheet" rel="stylesheet" href="data:tex/css,%23test-element{text-decoration:line-through}">
<link id="notsheet" rel="author" href="mailto:nosuch@webkit.org">
<link id="alt" rel="alternate stylesheet" title="altset" href="resources/green.css">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<span id="test-element"></span>
<script>
description("Series of tests to validate behavior of getting/setting link.disabled and link.sheet.disabled.<br>" +
'Test for bug <a href="https://bugs.webkit.org/show_bug.cgi?id=61400">61400</a>: REGRESSION(84329): Stylesheets on some pages do not load');
window.jsTestIsAsync = true;
function onSheetLoaded(f, elem, maxtime) {
if (elem.sheet || maxtime <= 0)
f(elem);
else
setTimeout(function () { onSheetLoaded(f, elem, maxtime - 25);}, 25);
}
// With a non-stylesheet <link>, 'disabled' is always false.
var testElement = document.getElementById("test-element");
var originalBG = getComputedStyle(testElement).backgroundColor;
var link;
debug("notsheet");
link = document.getElementById("notsheet");
shouldBeNull("link.sheet");
link.disabled = true;
shouldBeFalse("link.disabled");
// With a stylesheet <link>, 'disabled' and 'link.style.disabled' should both
// work, and be consistent with each other.
debug("sheet");
link = document.getElementById("sheet");
shouldBeNonNull("link.sheet");
link.sheet.disabled = true;
shouldBeTrue("link.disabled");
shouldBeTrue("link.sheet.disabled");
shouldBeEqualToString("getComputedStyle(testElement).textDecoration", "none solid rgb(0, 0, 0)");
link.disabled = false;
shouldBeFalse("link.disabled");
shouldBeFalse("link.sheet.disabled");
shouldBeEqualToString("getComputedStyle(testElement).textDecoration", "line-through");
link.sheet.disabled = false;
// An alternate stylesheet defaults to disabled when its title does not
// match the preferred set.
debug("altsheet");
link = document.getElementById("alt");
shouldBeTrue("link.disabled");
// Toggling link.disabled activates the stylesheet.
function altSheetLoaded(e) {
link = e;
shouldBeNonNull("link.sheet");
shouldBe("getComputedStyle(testElement).backgroundColor", "'rgb(0, 128, 0)'");
// Enabling a stylsheet set modifies disabled status of style sheets.
document.selectedStyleSheetSet = "nosuchset";
shouldBeTrue("link.disabled");
shouldBe("getComputedStyle(testElement).backgroundColor", "originalBG");
document.selectedStyleSheetSet = "altset";
shouldBeFalse("link.disabled");
shouldBe("getComputedStyle(testElement).backgroundColor", "'rgb(0, 128, 0)'");
// Disabling a stylesheet *after* its stylesheet set has been selected
// de-activates it.
link.disabled = true;
shouldBe("getComputedStyle(testElement).backgroundColor", "originalBG");
finishJSTest();
}
link.disabled = false;
onSheetLoaded(altSheetLoaded, link, 500);
</script>
</body></html>