blob: cb797b1881177860fdba2addb3fbefc06113ae9c [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
span {
background-color: #eef;
border: solid;
color: #fee;
display: boxed-inline;
font-size: 24px;
margin: 2px;
outline-color: #f00;
padding-left: 5px;
text-align: start;
text-decoration: underline;
}
input[type="file"] {
text-align: end;
}
</style>
<script src="resources/polyfill.js"></script>
</head>
<body>
<div id="apply-author-style"></div>
<div id="no-apply-author-style"></div>
<div id="with-inline-style-declaration"></div>
<div id="try-to-override-important"></div>
<div id="change-apply-author-style-from-true-to-false"></div>
<div id="change-apply-author-style-from-false-to-true"></div>
<script>
function shouldBe(a, b)
{
if (a != b) {
throw "failure:" + a + ": should be " + b;
}
}
function shouldNotBe(a, b)
{
if (a == b) {
throw "failure:" + a + ": should not be " + b;
}
}
function assertTrue(id, actual) {
if (!actual) {
throw "failure:" + id + ": assertTrue failed";
}
}
function assertFalse(id, actual) {
if (actual) {
throw "failure:" + id + ": assertFalse failed";
}
}
function renderApplyAuthorStyleCase() {
var div = document.createElement('div');
document.getElementById('apply-author-style').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
assertFalse('default applyAuthorStyles', shadowRoot.applyAuthorStyles);
shadowRoot.applyAuthorStyles = true;
assertTrue('applyAuthorStyles should be true', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<span></span>';
}
function renderNoApplyAuthorStyleCase() {
var div = document.createElement('div');
document.getElementById('no-apply-author-style').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
assertFalse('default applyAuthorStyles', shadowRoot.applyAuthorStyles);
shadowRoot.applyAuthorStyles = false;
assertFalse('applyAuthorStyles should be false', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<span></span>';
}
function renderApplyAuthorStyleWithInlineStyleDeclarationCase() {
var div = document.createElement('div');
document.getElementById('with-inline-style-declaration').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
assertFalse('default applyAuthorStyles', shadowRoot.applyAuthorStyles);
shadowRoot.applyAuthorStyles = true;
assertTrue('applyAuthorStyles should be true', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<span style="border:none; color:#daa; font-size:18px; text-decoration:none"></span>';
}
function renderApplyAuthorStyleWithOverridingImportantPropertyCase() {
var div = document.createElement('div');
document.getElementById('try-to-override-important').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
assertFalse('default applyAuthorStyles', shadowRoot.applyAuthorStyles);
shadowRoot.applyAuthorStyles = true;
assertTrue('applyAuthorStyles should be true', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<input type="file" />';
}
function testChangingApplyAuthorStyleFromTrueToFalse() {
var div = document.createElement('div');
document.getElementById('change-apply-author-style-from-true-to-false').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
assertFalse('default applyAuthorStyles', shadowRoot.applyAuthorStyles);
shadowRoot.applyAuthorStyles = true;
assertTrue('applyAuthorStyles should be true', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<div><span id="test1"></span></div>';
div.offsetLeft;
var target = shadowRoot.getElementById('test1');
shouldBe(window.getComputedStyle(target).getPropertyValue('font-size'), "24px");
shouldBe(window.getComputedStyle(target).getPropertyValue('text-decoration'), "underline");
shadowRoot.applyAuthorStyles = false;
assertFalse('applyAuthorStyles should be false', shadowRoot.applyAuthorStyles);
div.offsetLeft;
shouldNotBe(window.getComputedStyle(target).getPropertyValue('font-size'), "24px");
shouldNotBe(window.getComputedStyle(target).getPropertyValue('text-decoration'), "underline");
}
function testChangingApplyAuthorStyleFromFalseToTrue() {
var div = document.createElement('div');
document.getElementById('change-apply-author-style-from-false-to-true').appendChild(div);
var shadowRoot = div.webkitCreateShadowRoot();
shadowRoot.applyAuthorStyles = false;
assertFalse('applyAuthorStyles should be false', shadowRoot.applyAuthorStyles);
shadowRoot.innerHTML = '<div><span id="test2"></span></div>';
div.offsetLeft;
var target = shadowRoot.getElementById('test2');
shouldNotBe(window.getComputedStyle(target).getPropertyValue('font-size'), "24px");
shouldNotBe(window.getComputedStyle(target).getPropertyValue('text-decoration'), "underline");
shadowRoot.applyAuthorStyles = true;
assertTrue('applyAuthorStyles should be true', shadowRoot.applyAuthorStyles);
div.offsetLeft;
shouldBe(window.getComputedStyle(target).getPropertyValue('font-size'), "24px");
shouldBe(window.getComputedStyle(target).getPropertyValue('text-decoration'), "underline");
}
renderApplyAuthorStyleCase();
renderNoApplyAuthorStyleCase();
renderApplyAuthorStyleWithInlineStyleDeclarationCase();
renderApplyAuthorStyleWithOverridingImportantPropertyCase();
testChangingApplyAuthorStyleFromTrueToFalse();
testChangingApplyAuthorStyleFromFalseToTrue();
</script>
</body>
</html>