Skip to content

Commit

Permalink
Bug 1552241 [wpt PR 16795] - shadow-dom: Add testcases for attachShad…
Browse files Browse the repository at this point in the history
…ow() with disabledFeatures=['shadow'], a=testonly

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

Follows whatwg/dom#760.
--

wp5At-commits: 7e939f6d8eac12d0830d8a47eb72e38097b12f9e
wpt-pr: 16795

UltraBlame original commit: cd6ef5f5cfc4319d357c0162f28b62f3531a14b3
  • Loading branch information
marco-c committed Oct 4, 2019
1 parent 2c07610 commit 4ba5221
Showing 1 changed file with 72 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,78 @@
assert_true(document.createElement('my-custom').attachShadow({mode: "open"}) instanceof ShadowRoot);
}, '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 {
}

Expand Down

0 comments on commit 4ba5221

Please sign in to comment.