Skip to content

Commit

Permalink
Bug 1658656 [wpt PR 24969] - Add ElementInternals.shadowRoot which re…
Browse files Browse the repository at this point in the history
…turns both open and closed roots, a=testonly

Automatic update from web-platform-tests
Add ElementInternals.shadowRoot which returns both open and closed roots

See [1] for context. This CL adds the shadowRoot attribute to ElementInternals,
which allows custom elements to access their own shadow roots, including in
the case that the shadowRoot is closed. Without this capability, custom
elements that use closed declarative shadow roots would have no ability to
retrieve the contents of their own shadow root.

Bug: 1042130

[1] WICG/webcomponents#871 (comment)

Change-Id: I33606144bec3c27600d2e67f108d0344f7696dd2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2350739
Commit-Queue: Mason Freed <masonfreed@chromium.org>
Auto-Submit: Mason Freed <masonfreed@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#797729}

--

wpt-commits: 9734707a86c1a14cba63bb80d8c391dd7dea004f
wpt-pr: 24969
  • Loading branch information
mfreed7 authored and moz-wptsync-bot committed Aug 25, 2020
1 parent dd5d6d7 commit c199989
Showing 1 changed file with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>ElementInternals.shadowRoot</title>
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
<link rel="help" href="https://github.com/w3c/webcomponents/issues/871">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>

test(() => {
let constructed = false;
customElements.define('custom-open', class extends HTMLElement {
constructor() {
super();
const elementInternals = this.attachInternals();
assert_equals(elementInternals.shadowRoot, null);
const shadow = this.attachShadow({mode: 'open'});
assert_equals(elementInternals.shadowRoot, shadow);
constructed = true;
}
});
const element = document.createElement('custom-open');
assert_true(constructed);
}, 'ElementInternals.shadowRoot allows access to open shadow root');

test(() => {
let constructed = false;
customElements.define('custom-closed', class extends HTMLElement {
constructor() {
super();
const elementInternals = this.attachInternals();
assert_equals(elementInternals.shadowRoot, null);
const shadow = this.attachShadow({mode: 'closed'});
assert_equals(elementInternals.shadowRoot, shadow);
assert_equals(this.shadowRoot, null);
constructed = true;
}
});
const element = document.createElement('custom-closed');
assert_true(constructed);
}, 'ElementInternals.shadowRoot allows access to closed shadow root');

</script>

0 comments on commit c199989

Please sign in to comment.