TPE DOM/Custom elements
Contents
- 1 Introduction
- 2 Taipei Main Members
- 3 Meeting Minutes
- 4 Roadmap
- 5 Project Dashboard
Introduction
This project is to enable web authors to define and use new types of DOM elements in a document.
References:
- Custom Elements spec
- whatwg html wiki
- whatwg dom wiki
- blink-dev intent-to-implement
- Blink bugs
- Safari bugs
Taipei Main Members
Engineers: Edgar Chen (main contact), John Dai
Meeting Minutes
Roadmap
Summary
We are now at Stage 4, working on performance work, especially on the critical blocker from enabling this feature on Nightly.
- Estimated nightly version: 59
- Firefox dev-platform intent-to-implement
Details
[Stage 1] (completed)
- Remove support of SVG-based custom element.
- Bug: 1274505
- Window interface
- HTMLElement constructor
- Support using ES6 classes
- Construction stack
- Bug: 1274159
- Document interface
- createElement, createElementNS
- Bug: 1276579
- window.customElements.define
- Bug: 1275835
[Stage 2] (completed)
- custom element upgrade reactions stack/queue
- Upgrade reaction
- Algorithm of creating an element
- Spec: https://dom.spec.whatwg.org/#concept-create-element
- Revise consumers (createElement[NS] and HTML parser accordingly
[Stage 3] (completed)
- Callback reaction queue
- Lifecycle callbacks
- sProcessingStack
- EnqueueLifecycleCallback
- connectedCallback
- disconnectedCallback
- attributeChangedCallback
[Stage 4] (WE'RE HERE)
- Performance work
- Enable on Nightly (estimated target 59)
[Stage 5]
- Ride to train
[Stage 6 - Backlog]
- Mutation algorithms (Shadow dom)
- CSS :define
- Performance
- Web-platform-tests
Project Dashboard
Meta Bugs
ID | Summary | Priority | Status |
---|---|---|---|
889230 | [meta] Implement Custom Elements (from Web Components) | P3 | RESOLVED |
1 Total; 0 Open (0%); 1 Resolved (100%); 0 Verified (0%);
1st Impl. Shipping Blocker: Performance issues (INPROGRESS)
12 Total; 0 Open (0%); 12 Resolved (100%); 0 Verified (0%);
Post 1st Ship: Stage_4 Bugs & Progress (BACKLOG)
ID | Summary | Status | Target milestone | Resolution | Assigned to | Depends on | Blocks |
---|---|---|---|---|---|---|---|
1326028 | customElements.define must upgrade custom element in shadow-including tree order | RESOLVED | mozilla61 | FIXED | Blake Kaplan (:mrbkap) (inactive) | 889230, 1419323 | |
1331334 | Implement :defined pseudo-class for custom elements | RESOLVED | mozilla63 | FIXED | Olli Pettay [:smaug][bugs@pettay.fi] | 1299363, 1301024, 1417829 | 889230, 1471871 |
1331341 | Enqueue custom element upgrade/callbacks reactions in shadow-including tree order when inserting/removing a node | RESOLVED | --- | DUPLICATE | 889230 |
3 Total; 0 Open (0%); 3 Resolved (100%); 0 Verified (0%);
What Have Been DONE
1st Impl. Shipping Blocker: Stage_1 Bugs & Progress (DONE)
ID | Summary | Status | Target milestone | Resolution | Assigned to | Depends on | Blocks |
---|---|---|---|---|---|---|---|
1274159 | Add [HTMLConstructor] to support custom element feature | RESOLVED | mozilla53 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 1275835 | 889230, 1287348, 1301024, 1317658 |
1274505 | Remove support of SVG-based custom element | RESOLVED | mozilla50 | FIXED | John Dai[:jdai] | 889230, 1276579, 1396765 | |
1275832 | Implement custom element name validation for custom element | RESOLVED | mozilla52 | FIXED | John Dai[:jdai] | 889230, 1275835, 1275839 | |
1275833 | Add CustomElementsRegistry interface for custom element | RESOLVED | mozilla50 | FIXED | John Dai[:jdai] | 1289872 | 889230, 1275835, 1275838, 1275839 |
1275835 | Implement CustomElementsRegistry define function | RESOLVED | mozilla51 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 1275832, 1275833 | 889230, 1274159, 1275838, 1275839 |
1275838 | Implement CustomElementsRegistry get function | RESOLVED | mozilla52 | FIXED | John Dai[:jdai] | 1275833, 1275835 | 889230 |
1275839 | Implement CustomElementsRegistry whenDefined function | RESOLVED | mozilla52 | FIXED | John Dai[:jdai] | 1275832, 1275833, 1275835 | 889230 |
1276579 | Revise document.createElement[NS] for custom elements | RESOLVED | mozilla50 | FIXED | Jocelyn Liu [:jocelyn] [:joliu] | 1274505, 1294100, 1318630, 1338889 | 889230, 1276240 |
1288306 | Disable custom elements web-platform v0 tests | RESOLVED | mozilla50 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 889230, 1396765 | |
1294100 | TypeError: Argument 2 of Document.createElement can't be converted to a dictionary. | VERIFIED | mozilla51 | FIXED | John Dai[:jdai] | 889230, 1276579 | |
1309140 | Rename CustomElementsRegistry to CustomElementRegistry | RESOLVED | mozilla52 | FIXED | John Dai[:jdai] | 889230 | |
1341693 | Crash [@mozilla::dom::WindowBinding::get_customElements] | RESOLVED | mozilla54 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 1340565, 889230 |
12 Total; 0 Open (0%); 11 Resolved (91.67%); 1 Verified (8.33%);
1st Impl. Shipping Blocker: Stage_2 Bugs & Progress (IN PROGRESS)
ID | Summary | Status | Target milestone | Resolution | Assigned to | Depends on | Blocks |
---|---|---|---|---|---|---|---|
1287348 | Implement construction stack for upgrading an element | RESOLVED | --- | DUPLICATE | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 1274159 | 889230 |
1299363 | Implement custom element v1 upgrade algorithm | RESOLVED | mozilla57 | FIXED | John Dai[:jdai] | 1325279, 1353647, 1359346 | 889230, 1301024, 1319342, 1331334, 1378079 |
1301024 | Creating an custom element via createElement/createElementNS should call constructor or run upgrade steps | RESOLVED | mozilla58 | FIXED | John Dai[:jdai] | 1274159, 1299363, 1354013, 1407669, 1411088 | 889230, 1331334, 1396761 |
1309147 | Add [CEReactions] to support custom element reactions | RESOLVED | mozilla55 | FIXED | John Dai[:jdai] | 1347446 | 889230, 1315885, 1340027 |
1309176 | Add stack-of-queues system for custom element reaction | RESOLVED | --- | DUPLICATE | John Dai[:jdai] | 889230 | |
1309184 | Implement upgrade reaction for custom element reactions | RESOLVED | mozilla53 | FIXED | John Dai[:jdai] | 889230, 1319342, 1325279 | |
1319342 | Cloning a node runs concept-create-element steps with synchronous-custom-elements-flag unset which enqueues an upgrade reaction | RESOLVED | mozilla58 | FIXED | John Dai[:jdai] | 1299363, 1309184 | 889230 |
1325279 | Put the reaction queue in CustomElementData structure instead of using a map | RESOLVED | mozilla55 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 1309184, 1359346 | 889230, 1299363, 1315885 |
1347446 | Move custom element reactions stack to DocGroup | RESOLVED | mozilla55 | FIXED | John Dai[:jdai] | 1350960 | 889230, 1309147, 1315885 |
1354013 | Creating customized built-in elements without relevant definitions registered first shouldn't throw NotFoundError | RESOLVED | mozilla55 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 889230, 1301024 | |
1357002 | Calling document.createElement() with a second arg that includes "is" should not have noticeable slowdown when custom elements feature is pref-ed off | RESOLVED | mozilla55 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 889230 | |
1359346 | Implement custom element state | RESOLVED | mozilla55 | FIXED | Edgar Chen [:edgar] (Parental leave until Oct. 09.) | 889230, 1299363, 1325279 | |
1378079 | Creating an custom element from parser will synchronously call constructor | RESOLVED | mozilla58 | FIXED | Jessica Jong [:jessica] (inactive) | 1299363, 1411088, 1510114 | 889230, 1418002 |
1406297 | Document.createElement must report an exception which is user defined thrown by a custom element constructor | RESOLVED | mozilla58 | FIXED | John Dai[:jdai] | 889230 | |
1406325 | Custom element clone node without definition should put into candidate map in order to upgrade later | RESOLVED | mozilla59 | FIXED | John Dai[:jdai] | 889230 |
15 Total; 0 Open (0%); 15 Resolved (100%); 0 Verified (0%);
1st Impl. Shipping Blocker: Stage_3 Bugs & Progress (DONE)
ID | Summary | Status | Target milestone | Resolution | Assigned to | Depends on | Blocks |
---|---|---|---|---|---|---|---|
1121994 | Implement adopted callback for custom elements | RESOLVED | mozilla58 | FIXED | John Dai[:jdai] | 889230, 1293921 | |
1315885 | Implement callback reaction for custom element reactions | RESOLVED | mozilla56 | FIXED | John Dai[:jdai] | 1309147, 1325279, 1347446 | 889230, 1293921, 1379573 |
1334043 | Implement connected lifecycle callbacks for custom elements | RESOLVED | mozilla58 | FIXED | Jessica Jong [:jessica] (inactive) | 889230, 1293921, 1387125 | |
1334044 | Implement disconnected lifecycle callbacks for custom elements | RESOLVED | mozilla58 | FIXED | Jessica Jong [:jessica] (inactive) | 889230, 1293921 | |
1334051 | Implement list of observed attributes for custom elements' attributeChanged callbacks | RESOLVED | mozilla57 | FIXED | Jessica Jong [:jessica] (inactive) | 889230, 1293921 | |
1340027 | Add annotation with the [CEReactions] attribute | RESOLVED | mozilla56 | FIXED | John Dai[:jdai] | 1293921, 1309147 | 889230 |
1392970 | Consider having a reference of the CustomElementDefinition in the custom element itself | RESOLVED | mozilla58 | FIXED | Jessica Jong [:jessica] (inactive) | 889230, 1396567, 1408828, 1410790 |
7 Total; 0 Open (0%); 7 Resolved (100%); 0 Verified (0%);