blob: 61a9b210cfb258956c0f576c5fcac382f8d04dcd [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<div id=host1></div>
<div id=host2 class="red"></div>
<div id=host3></div>
<div id=host4></div>
<div id=host5></div>
<template id=shadow1>
<style>
:host(.green) div {
background-color: green;
}
div {
width: 100px;
height: 20px;
background-color: red;
}
</style>
<nav><div></div></nav>
</template>
<template id=shadow2>
<style>
:host(.red) > div {
background-color: red;
}
div {
width: 100px;
height: 20px;
background-color: green;
}
</style>
<div></div>
</template>
<template id=shadow3>
<style>
:host([color=green]) div {
background-color: green;
}
div {
width: 100px;
height: 20px;
background-color: red;
}
</style>
<div></div>
</template>
<template id=shadow4>
<style>
:host(#green) div {
background-color: green;
}
div {
width: 100px;
height: 20px;
background-color: red;
}
</style>
<div></div>
</template>
<template id=shadow5>
<style>
:host div.green {
background-color: green;
}
div {
width: 100px;
height: 20px;
background-color: red;
}
</style>
<div></div>
</template>
<div id=log></div>
<script>
function checkColor(host, expected)
{
const div = host.shadowRoot.querySelector("div");
const color = getComputedStyle(div).backgroundColor;
const width = getComputedStyle(div).width;
if (color != expected)
log.innerHTML += `FAIL: unexpected background color ${color}<br>`;
if (width != "100px")
log.innerHTML += `FAIL: unexpected width ${width}<br>`;
}
function test(hostselector, shadowselector, mutation) {
const host = document.querySelector(hostselector);
const shadowTemplate = document.querySelector(shadowselector);
host.attachShadow({ mode: 'open' });
host.shadowRoot.appendChild(shadowTemplate.content.cloneNode(true));
checkColor(host, "rgb(255, 0, 0)");
mutation(host);
checkColor(host, "rgb(0, 128, 0)");
}
test("#host1", "#shadow1", (host) => {
host.classList.add('green');
});
test("#host2", "#shadow2", (host) => {
host.classList.remove('red');
});
test("#host3", "#shadow3", (host) => {
host.setAttribute('color','green');
});
test("#host4", "#shadow4", (host) => {
host.setAttribute('id','green');
});
test("#host5", "#shadow5", (host) => {
host.shadowRoot.querySelector('div').classList.add('green');
});
</script>
</body>
</html>