blob: daef93d265e76da2d33c675fd059127520ee5b80 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<div id="container"></div>
<script>
var container = document.getElementById('container');
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<span id="foo"></span>';
container.appendChild(header);
assert_equals(window.foo, undefined);
}, "Window's named property getter should not return elements in shadow DOMs by id");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<span id="foo1"></span>';
container.appendChild(header);
var span = document.createElement("span");
span.id = 'foo1';
container.appendChild(span);
assert_equals(window.foo1, span);
assert_equals(shadowRoot.firstChild.id, 'foo1');
shadowRoot.removeChild(shadowRoot.firstChild);
assert_equals(window.foo1, span);
}, "Window's named property getter should not return elements in shadow DOMs by id (duplicate id)");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<span></span>';
container.appendChild(header);
assert_equals(window.foo2, undefined);
shadowRoot.firstChild.id = 'foo2';
assert_equals(window.foo2, undefined);
}, "Window's named property getter should not return elements in shadow DOMs by id (id attribute update)");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<span></span>';
container.appendChild(header);
var span = document.createElement("span");
span.id = 'foo3';
container.appendChild(span);
assert_equals(window.foo3, span);
shadowRoot.firstChild.id = 'foo3';
assert_equals(window.foo3, span);
shadowRoot.firstChild.id = 'other';
assert_equals(window.foo3, span);
}, "Window's named property getter should not return elements in shadow DOMs by id (duplicate id attribute update)");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<form name="bar"></form>';
document.body.appendChild(header);
assert_equals(window.bar, undefined);
}, "Window's named property getter should not return elements in shadow DOMs by name");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<form name="bar1"></form>';
document.body.appendChild(header);
var form = document.createElement("form");
form.setAttribute('name', 'bar1');
container.appendChild(form);
assert_equals(window.bar1, form);
assert_equals(shadowRoot.firstChild.getAttribute('name'), 'bar1');
shadowRoot.removeChild(shadowRoot.firstChild);
assert_equals(window.bar1, form);
}, "Window's named property getter should not return elements in shadow DOMs by name (duplicate name)");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<form></form>';
document.body.appendChild(header);
assert_equals(window.bar2, undefined);
shadowRoot.firstChild.setAttribute('name', 'bar2');
assert_equals(window.bar2, undefined);
}, "Window's named property getter should not return elements in shadow DOMs by name (name attribute update)");
test(function () {
var header = document.createElement('header');
var shadowRoot = header.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '<form></form>';
document.body.appendChild(header);
var form = document.createElement("form");
form.setAttribute('name', 'bar3');
container.appendChild(form);
assert_equals(window.bar3, form);
shadowRoot.firstChild.setAttribute('name', 'bar3');
assert_equals(window.bar3, form);
shadowRoot.firstChild.setAttribute('name', 'other');
assert_equals(window.bar3, form);
}, "Window's named property getter should not return elements in shadow DOMs by name (duplicate name attribute update)");
</script>
</body>
</html>