Bug 1552241 [wpt PR 16795] - shadow-dom: Add testcases for attachShadow() with disabledFeatures=['shadow'], a=testonly

Automatic update from web-platform-tests
Test attachShadow() with disabledFeatures=['shadow']

Follows https://github.com/whatwg/dom/pull/760.
--

wp5At-commits: 7e939f6d8eac12d0830d8a47eb72e38097b12f9e
wpt-pr: 16795
This commit is contained in:
TAMURA, Kent 2019-06-13 10:34:14 +00:00 коммит произвёл James Graham
Родитель b88396557c
Коммит 296bb88bac
1 изменённых файлов: 72 добавлений и 0 удалений

Просмотреть файл

@ -14,6 +14,78 @@ test(() => {
assert_true(document.createElement('my-custom').attachShadow({mode: "open"}) instanceof ShadowRoot); assert_true(document.createElement('my-custom').attachShadow({mode: "open"}) instanceof ShadowRoot);
}, 'Element.attachShadow must create an instance of ShadowRoot for autonomous custom elements'); }, 'Element.attachShadow must create an instance of ShadowRoot for autonomous custom elements');
test(() => {
assert_true(document.createElement('undefined-custom').attachShadow({mode: 'open'}) instanceof ShadowRoot);
}, 'Element.attachShadow must create an instance of ShadowRoot for undefined autonomous custom elements');
test(() => {
class ShadowDisabledElement extends HTMLElement {
static disabledFeatures = ['shadow'];
}
// No definition. attachShadow() should succeed.
let element = document.createElement('shadow-disabled-element');
element.attachShadow({mode: 'closed'});
// No definition and it's already a host.
assert_throws('NotSupportedError', () => {
element.attachShadow({mode: 'closed'});
}, 'No definition, host');
// The element has a definition, and it's already a host.
customElements.define('shadow-disabled-element', ShadowDisabledElement);
assert_throws('NotSupportedError', () => {
element.attachShadow({mode: 'closed'});
}, 'Definition, host');
// The element has a definition, and it's not a host.
assert_throws('NotSupportedError', () => {
document.createElement('shadow-disabled-element').attachShadow({mode: 'closed'});
}, 'Definition, not a host');
}, 'Element.attachShadow for an autonomous custom element with ' +
'disabledFeatures=["shadow"] should throw a NotSupportedError');
test(() => {
class ShadowDisabledHeadingElement extends HTMLHeadingElement {
static disabledFeatures = ['shadow'];
}
// No definition. attachShadow() should succeed.
let element = document.createElement('h2',
{is: 'shadow-disabled-heading-element'});
element.attachShadow({mode: 'closed'});
// No definition and it's already a host.
assert_throws('NotSupportedError', () => {
element.attachShadow({mode: 'closed'});
}, 'No definition, host.');
// The element has a definition, and it's already a host.
customElements.define('shadow-disabled-heading-element',
ShadowDisabledHeadingElement, {extends: 'h2'});
assert_throws('NotSupportedError', () => {
element.attachShadow({mode: 'closed'});
}, 'Definition, host');
// The element has a definition, and it's not a host.
let h2 = document.createElement('h2', {is: 'shadow-disabled-heading-element'});
assert_throws('NotSupportedError', () => {
h2.attachShadow({mode: 'closed'});
}, 'Definition, not a host');
}, 'Element.attachShadow for a customized built-in element with ' +
'disabledFeatures=["shadow"] should throw a NotSupportedError');
test(() => {
class CapitalShadowDisabledElement extends HTMLElement {
static disabledFeatures = ['SHADOW'];
}
customElements.define('capital-shadow-disabled-element', CapitalShadowDisabledElement);
// Test fails if this throws
document.createElement('capital-shadow-disabled-element').attachShadow({mode: 'open'});
}, 'Element.attachShadow for a custom element with disabledFeatures=["SHADOW"] should not throw a NotSupportedError');
class MyCustomizedBuiltinElement extends HTMLInputElement { class MyCustomizedBuiltinElement extends HTMLInputElement {
} }