Skip to content

Commit

Permalink
Bug 1665215 [wpt PR 25554] - Deny ElementInternals.shadowRoot for pre…
Browse files Browse the repository at this point in the history
…-created shadow roots, a=testonly

Automatic update from web-platform-tests
Deny ElementInternals.shadowRoot for pre-created shadow roots

Per the spec issue [1], this change disallows the use of
ElementInternals.shadowRoot for shadow roots created prior
to the custom element constructor being run. This protects
potentially-closed shadow roots, created outside of the
custom element, from being revealed to the custom element
itself. (Use case unclear, but this was the request.)

[1] WICG/webcomponents#871

Bug: 1042130
Change-Id: I25192256e8b1334d09ea587f29d64f35d4f5f949
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2412470
Commit-Queue: Kouhei Ueno <kouheichromium.org>
Auto-Submit: Mason Freed <masonfreedchromium.org>
Reviewed-by: Kouhei Ueno <kouheichromium.org>
Cr-Commit-Position: refs/heads/master{#807311}

--

wpt-commits: 8e3392df536283e843589c176ffbc7e00e94e64e
wpt-pr: 25554

UltraBlame original commit: 11691695d1b65041eea7dd2470183b95f4335029
  • Loading branch information
marco-c committed Sep 28, 2020
1 parent ca35b38 commit 8a10d30
Showing 1 changed file with 19 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,23 @@
assert_throws_dom('NotSupportedError', () => element.attachInternals(), 'attachInternals forbidden by disabledFeatures, post-upgrade');
}, 'ElementInternals disabled by disabledFeatures');



test(() => {
let constructed = false;
const element = document.createElement('x-6');
const sr = element.attachShadow({mode: 'closed'});
assert_true(sr instanceof ShadowRoot);
customElements.define('x-6', class extends HTMLElement {
constructor() {
super();
assert_throws_dom('NotSupportedError', () => this.attachShadow({mode:'open'}), 'attachShadow already called');
const elementInternals = this.attachInternals();
assert_equals(elementInternals.shadowRoot, null, 'ElementInternals.shadowRoot should not be available for pre-attached shadow');
constructed = true;
}
});
assert_false(constructed);
customElements.upgrade(element);
assert_true(constructed,'Failed to construct - test failed');
assert_equals(element.shadowRoot, null, 'shadow root is closed');
}, 'ElementInternals.shadowRoot doesn\'t reveal pre-attached closed shadowRoot');
</script>

0 comments on commit 8a10d30

Please sign in to comment.