@@ -237,7 +237,8 @@ fn create_html_element(
237
237
// custom element state set to "uncustomized", custom element definition set to null,
238
238
// is value set to is, and node document set to document.
239
239
let is_builtin = is. is_none ( ) && !is_valid_custom_element_name ( & name. local ) ;
240
- let result = create_native_html_element ( name. clone ( ) , prefix, document, creator, proto, is_builtin) ;
240
+ let result =
241
+ create_native_html_element ( name. clone ( ) , prefix, document, creator, proto, is_builtin) ;
241
242
// Step 5.3. If namespace is the HTML namespace, and either localName is a valid custom element name or
242
243
// is is non-null, then set result’s custom element state to "undefined".
243
244
match is {
@@ -280,7 +281,7 @@ pub(crate) fn create_native_html_element(
280
281
// This is a big match, and the IDs for inline-interned atoms are not very structured.
281
282
// Perhaps we should build a perfect hash from those IDs instead.
282
283
// https://html.spec.whatwg.org/multipage/#elements-in-the-dom
283
- match name. local {
284
+ let element : DomRoot < Element > = match name. local {
284
285
local_name ! ( "a" ) => make ! ( HTMLAnchorElement ) ,
285
286
local_name ! ( "abbr" ) => make ! ( HTMLElement ) ,
286
287
local_name ! ( "acronym" ) => make ! ( HTMLElement ) ,
@@ -318,14 +319,7 @@ pub(crate) fn create_native_html_element(
318
319
local_name ! ( "dfn" ) => make ! ( HTMLElement ) ,
319
320
local_name ! ( "dialog" ) => make ! ( HTMLDialogElement ) ,
320
321
local_name ! ( "dir" ) => make ! ( HTMLDirectoryElement ) ,
321
- local_name ! ( "div" ) => {
322
- let obj = if defined {
323
- HTMLDivElement :: new_defined ( name. local , prefix, document, proto, CanGc :: note ( ) )
324
- } else {
325
- HTMLDivElement :: new ( name. local , prefix, document, proto, CanGc :: note ( ) )
326
- } ;
327
- DomRoot :: upcast ( obj)
328
- } ,
322
+ local_name ! ( "div" ) => make ! ( HTMLDivElement ) ,
329
323
local_name ! ( "dl" ) => make ! ( HTMLDListElement ) ,
330
324
local_name ! ( "dt" ) => make ! ( HTMLElement ) ,
331
325
local_name ! ( "em" ) => make ! ( HTMLElement ) ,
@@ -435,7 +429,13 @@ pub(crate) fn create_native_html_element(
435
429
local_name ! ( "xmp" ) => make ! ( HTMLPreElement ) ,
436
430
_ if is_valid_custom_element_name ( & name. local ) => make ! ( HTMLElement ) ,
437
431
_ => make ! ( HTMLUnknownElement ) ,
432
+ } ;
433
+
434
+ if defined {
435
+ element. force_defined ( ) ;
438
436
}
437
+
438
+ element
439
439
}
440
440
441
441
pub ( crate ) fn create_element (
0 commit comments