Conversation
domenic
left a comment
There was a problem hiding this comment.
Generally looks good with one small suggestion.
Tests are written and can be reviewed and commented upon at:
Let's be sure to at least have a tracking bug (Chromium is fine, if you intend to do it soon) to test the changes made in the process of getting this merged. So far I note:
-
Duplicate handling, wherever we land on that
-
Removal of not-a-child-of-shadow-host check
Glad it looks ok! I've filed a Chromium bug, with your suggestions plus a few of my own. Other suggestions for test blind spots to close are appreciated. |
mfreed7
left a comment
There was a problem hiding this comment.
Ok, edits made. See this comment for details.
|
(@rniwa if you find specifications using the older style to reference dictionary members, please file an issue. It should all migrate to the ordered maps syntax.) |
|
Thanks everyone! I'm in the process of implementing on Chromium, and I think I found one small thing that needs to be modified. I'll open a fresh PR. |
Explainer: https://github.com/WICG/webcomponents/blob/gh-pages/proposals/Imperative-Shadow-DOM-Distribution-API.md. Corresponding HTML PR: whatwg/html#6561. Closes #860 by superseding it. Co-authored-by: Yu Han <yuzhehan@yuzhehan-macbookpro.roam.corp.google.com>
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2824763
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#874413}
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2824763
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#874413}
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2824763
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#874413}
|
So did we get any tests and does any implementation pass them? |
…s, a=testonly
Automatic update from web-platform-tests
Implement imperative slotting API changes
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2824763
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#874413}
--
wpt-commits: db1be04691e1b5fe58e186d682d26c69d282cbe0
wpt-pr: 28521
|
The initial proposal did use a sequence but that got changed during review, but I guess the implementation was never aligned? I filed https://bugs.chromium.org/p/chromium/issues/detail?id=1202591. |
|
Oops, thanks! I guess the change from sequence to variadic was made before I started editing the spec PR. Thanks for bringing this up and filing that bug. I'll get the Chromium implementation changed, and as part of that, I'll update the WPTs. |
…s, a=testonly
Automatic update from web-platform-tests
Implement imperative slotting API changes
The original implementation of the imperative slot distribution
API was done before the final spec PRs landed. In the process of
landing those PRs, several changes were made to the way the API
works. Primarily, there are two changes:
1. The "auto" slotAssignment mode was renamed to "named".
2. The "linkage" that is created by HTMLSlotElement.assign() was
made more permanent. Previously, moving either the <slot> or
the assigned node around in the tree (or across documents)
would "break" the linkage. Now, the linkage is more permanent,
and the only way to break it is through another call to .assign().
See [1] for the chromestatus entry, [2] for the intent to ship,
[3], [4], and [5] for the spec PRs, and [6]/[7] for the landed spec.
[1] https://chromestatus.com/feature/4979822998585344
[2] https://groups.google.com/a/chromium.org/g/blink-dev/c/6U78F3KWJ78
[3] whatwg/html#6561
[4] whatwg/html#6585
[5] whatwg/dom#966
[6] https://dom.spec.whatwg.org/#find-slotables
[7] https://html.spec.whatwg.org/#dom-slot-assign
Fixed: 1196842
Fixed: 1067153
Bug: 1067157
Change-Id: I0ee71043c23f3b49a1461296d722045f06eca540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2824763
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Cr-Commit-Position: refs/heads/master@{#874413}
--
wpt-commits: db1be04691e1b5fe58e186d682d26c69d282cbe0
wpt-pr: 28521
This is a fresh PR, with updates from #5483. I don't have permissions to update that PR.
The explainer for this feature is here: https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Imperative-Shadow-DOM-Distribution-API.md
The issue discussion is here: 3534
There is a corresponding Pull Request for the DOM spec that goes along with this PR.
At least two implementers are interested (and none opposed):
Tests are written and can be reviewed and commented upon at:
Implementation bugs are filed:
/acknowledgements.html ( diff )
/infrastructure.html ( diff )
/scripting.html ( diff )
/acknowledgements.html ( diff )
/dom.html ( diff )
/images.html ( diff )
/infrastructure.html ( diff )
/scripting.html ( diff )