blob: 934a9e54eea7eda4122394b8884db196aad5c84e [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<script>
description('This tests multiple shadow roots creation with createShadowRoot and mode parameter.');
function shouldBeV0ShadowRoot(root) {
shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'V0ShadowRoot');
}
function shouldBeOpenShadowRoot(root) {
shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'OpenShadowRoot');
}
function shouldBeClosedShadowRoot(root) {
shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'ClosedShadowRoot');
}
function shouldBeUserAgentShadowRoot(root) {
shouldBeEqualToString('internals.shadowRootType(' + root + ')', 'UserAgentShadowRoot');
}
function youngestShadowRootShouldBe(host, root) {
shouldBe('internals.youngestShadowRoot(' + host + ')', root);
}
debug('createShadowRoot() can still create multiple shadow roots.');
var div = document.createElement('div');
var shadow1 = div.createShadowRoot();
shouldBeV0ShadowRoot('shadow1');
var shadow2 = div.createShadowRoot();
shouldBeV0ShadowRoot('shadow2');
youngestShadowRootShouldBe('div', 'shadow2');
shouldBe('shadow2.olderShadowRoot', 'shadow1');
debug('Other attempts to create multiple shadow roots should fail');
div = document.createElement('div');
shadow1 = div.createShadowRoot();
shouldBeV0ShadowRoot('shadow1');
shouldThrow('div.attachShadow({mode: "open"})');
shouldThrow('div.attachShadow({mode: "closed"})');
youngestShadowRootShouldBe('div', 'shadow1');
div = document.createElement('div');
shadow1 = div.attachShadow({mode: "open"});
shouldBeOpenShadowRoot('shadow1');
shouldThrow('div.createShadowRoot()');
shouldThrow('div.attachShadow({mode: "open"})');
shouldThrow('div.attachShadow({mode: "closed"})');
youngestShadowRootShouldBe('div', 'shadow1');
div = document.createElement('div');
shadow1 = div.attachShadow({mode: "closed"});
shouldBeClosedShadowRoot('shadow1');
shouldThrow('div.createShadowRoot()');
shouldThrow('div.attachShadow({mode: "open"})');
shouldThrow('div.attachShadow({mode: "closed"})');
youngestShadowRootShouldBe('div', 'shadow1');
debug('V0 shadow root cannot be created on UA shadow root');
var input = document.createElement('input');
shouldBeUserAgentShadowRoot('internals.shadowRoot(input)');
shouldThrow('input.createShadowRoot()');
input = document.createElement('input');
shouldThrow('input.attachShadow({mode: "open"})');
input = document.createElement('input');
shouldThrow('input.attachShadow({mode: "closed"})');
</script>