mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Implement HTMLOptionElement named constructor
This commit is contained in:
parent
8002c6bc53
commit
155f69ce48
13 changed files with 136 additions and 93 deletions
|
@ -8,12 +8,14 @@ use crate::dom::bindings::codegen::Bindings::HTMLOptionElementBinding;
|
|||
use crate::dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementBinding::HTMLSelectElementMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
||||
use crate::dom::bindings::error::Fallible;
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
use crate::dom::bindings::root::DomRoot;
|
||||
use crate::dom::bindings::str::DOMString;
|
||||
use crate::dom::characterdata::CharacterData;
|
||||
use crate::dom::document::Document;
|
||||
use crate::dom::element::{AttributeMutation, Element};
|
||||
use crate::dom::element::{AttributeMutation, CustomElementCreationMode, Element, ElementCreator};
|
||||
use crate::dom::htmlelement::HTMLElement;
|
||||
use crate::dom::htmlformelement::HTMLFormElement;
|
||||
use crate::dom::htmloptgroupelement::HTMLOptGroupElement;
|
||||
|
@ -22,8 +24,9 @@ use crate::dom::htmlselectelement::HTMLSelectElement;
|
|||
use crate::dom::node::{BindContext, Node, ShadowIncluding, UnbindContext};
|
||||
use crate::dom::text::Text;
|
||||
use crate::dom::virtualmethods::VirtualMethods;
|
||||
use crate::dom::window::Window;
|
||||
use dom_struct::dom_struct;
|
||||
use html5ever::{LocalName, Prefix};
|
||||
use html5ever::{LocalName, Prefix, QualName};
|
||||
use std::cell::Cell;
|
||||
use style::element_state::ElementState;
|
||||
use style::str::{split_html_space_chars, str_join};
|
||||
|
@ -72,6 +75,37 @@ impl HTMLOptionElement {
|
|||
)
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-option
|
||||
pub fn Option(
|
||||
window: &Window,
|
||||
text: DOMString,
|
||||
value: Option<DOMString>,
|
||||
default_selected: bool,
|
||||
selected: bool,
|
||||
) -> Fallible<DomRoot<HTMLOptionElement>> {
|
||||
let element = Element::create(
|
||||
QualName::new(None, ns!(html), local_name!("option")),
|
||||
None,
|
||||
&window.Document(),
|
||||
ElementCreator::ScriptCreated,
|
||||
CustomElementCreationMode::Synchronous,
|
||||
);
|
||||
|
||||
let option = DomRoot::downcast::<HTMLOptionElement>(element).unwrap();
|
||||
|
||||
if !text.is_empty() {
|
||||
option.upcast::<Node>().SetTextContent(Some(text))
|
||||
}
|
||||
|
||||
if let Some(val) = value {
|
||||
option.SetValue(val)
|
||||
}
|
||||
|
||||
option.SetDefaultSelected(default_selected);
|
||||
option.set_selectedness(selected);
|
||||
Ok(option)
|
||||
}
|
||||
|
||||
pub fn set_selectedness(&self, selected: bool) {
|
||||
self.selectedness.set(selected);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue