mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Track custom element state
This commit is contained in:
parent
e700006fb2
commit
9f51c7df21
6 changed files with 59 additions and 21 deletions
|
@ -7,7 +7,7 @@ use dom::bindings::js::Root;
|
|||
use dom::bindings::reflector::DomObject;
|
||||
use dom::customelementregistry::{is_valid_custom_element_name, upgrade_element};
|
||||
use dom::document::Document;
|
||||
use dom::element::{CustomElementCreationMode, Element, ElementCreator};
|
||||
use dom::element::{CustomElementCreationMode, CustomElementState, Element, ElementCreator};
|
||||
use dom::globalscope::GlobalScope;
|
||||
use dom::htmlanchorelement::HTMLAnchorElement;
|
||||
use dom::htmlappletelement::HTMLAppletElement;
|
||||
|
@ -129,7 +129,9 @@ fn create_html_element(name: QualName,
|
|||
if definition.is_autonomous() {
|
||||
match mode {
|
||||
CustomElementCreationMode::Asynchronous => {
|
||||
let result = Root::upcast(HTMLElement::new(name.local.clone(), prefix.clone(), document));
|
||||
let result = Root::upcast::<Element>(
|
||||
HTMLElement::new(name.local.clone(), prefix.clone(), document));
|
||||
result.set_custom_element_state(CustomElementState::Undefined);
|
||||
ScriptThread::enqueue_upgrade_reaction(&*result, definition);
|
||||
return result;
|
||||
},
|
||||
|
@ -153,7 +155,10 @@ fn create_html_element(name: QualName,
|
|||
}
|
||||
|
||||
// Step 6.1.2
|
||||
Root::upcast(HTMLUnknownElement::new(local_name, prefix, document))
|
||||
let element = Root::upcast::<Element>(
|
||||
HTMLUnknownElement::new(local_name, prefix, document));
|
||||
element.set_custom_element_state(CustomElementState::Failed);
|
||||
element
|
||||
},
|
||||
};
|
||||
},
|
||||
|
@ -162,6 +167,7 @@ fn create_html_element(name: QualName,
|
|||
// Steps 5.1-5.2
|
||||
let element = create_native_html_element(name, prefix, document, creator);
|
||||
element.set_is(definition.name.clone());
|
||||
element.set_custom_element_state(CustomElementState::Undefined);
|
||||
match mode {
|
||||
// Step 5.3
|
||||
CustomElementCreationMode::Synchronous =>
|
||||
|
@ -174,7 +180,15 @@ fn create_html_element(name: QualName,
|
|||
}
|
||||
}
|
||||
|
||||
create_native_html_element(name, prefix, document, creator)
|
||||
// Steps 7.1-7.2
|
||||
let result = create_native_html_element(name.clone(), prefix, document, creator);
|
||||
|
||||
// Step 7.3
|
||||
if is_valid_custom_element_name(&*name.local) || is.is_some() {
|
||||
result.set_custom_element_state(CustomElementState::Undefined);
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
pub fn create_native_html_element(name: QualName,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue