diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/customelementregistry.rs | 11 | ||||
-rw-r--r-- | components/script/dom/webidls/CustomElementRegistry.webidl | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/components/script/dom/customelementregistry.rs b/components/script/dom/customelementregistry.rs index dbeacdc7ebb..392cf49cce5 100644 --- a/components/script/dom/customelementregistry.rs +++ b/components/script/dom/customelementregistry.rs @@ -448,6 +448,17 @@ impl CustomElementRegistryMethods for CustomElementRegistry { // Step 6 promise } + /// https://html.spec.whatwg.org/multipage/#dom-customelementregistry-upgrade + fn Upgrade(&self, node: &Node) { + // Spec says to make a list first and then iterate the list, but + // try-to-upgrade only queues upgrade reactions and doesn't itself + // modify the tree, so that's not an observable distinction. + node.traverse_preorder(ShadowIncluding::Yes).for_each(|n| { + if let Some(element) = n.downcast::<Element>() { + try_upgrade_element(element); + } + }); + } } #[derive(Clone, JSTraceable, MallocSizeOf)] diff --git a/components/script/dom/webidls/CustomElementRegistry.webidl b/components/script/dom/webidls/CustomElementRegistry.webidl index 6d3a7b436de..3ba49a2082c 100644 --- a/components/script/dom/webidls/CustomElementRegistry.webidl +++ b/components/script/dom/webidls/CustomElementRegistry.webidl @@ -11,6 +11,8 @@ interface CustomElementRegistry { any get(DOMString name); Promise<void> whenDefined(DOMString name); + + [CEReactions] void upgrade(Node root); }; callback CustomElementConstructor = HTMLElement(); |