mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Implement HTMLSelectElement.{multiple, name, size} (fixes #6017)
This commit is contained in:
parent
10d8200a54
commit
656a8ee3c8
4 changed files with 34 additions and 444 deletions
|
@ -2,17 +2,16 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::attr::Attr;
|
||||
use dom::attr::AttrHelpers;
|
||||
use dom::attr::{Attr, AttrHelpers, AttrValue};
|
||||
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods;
|
||||
use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast};
|
||||
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLSelectElementDerived, HTMLFieldSetElementDerived};
|
||||
use dom::bindings::codegen::InheritTypes::{HTMLSelectElementDerived, HTMLFieldSetElementDerived};
|
||||
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
|
||||
use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement;
|
||||
use dom::bindings::js::{JSRef, Rootable, Temporary};
|
||||
use dom::document::Document;
|
||||
use dom::element::{AttributeHandlers, Element};
|
||||
use dom::element::AttributeHandlers;
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
|
||||
|
@ -36,6 +35,8 @@ impl HTMLSelectElementDerived for EventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
static DEFAULT_SELECT_SIZE: u32 = 0;
|
||||
|
||||
impl HTMLSelectElement {
|
||||
fn new_inherited(localName: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLSelectElement {
|
||||
HTMLSelectElement {
|
||||
|
@ -66,10 +67,27 @@ impl<'a> HTMLSelectElementMethods for JSRef<'a, HTMLSelectElement> {
|
|||
// https://www.whatwg.org/html/#dom-fe-disabled
|
||||
make_bool_setter!(SetDisabled, "disabled");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-select-multiple
|
||||
make_bool_getter!(Multiple);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-select-multiple
|
||||
make_bool_setter!(SetMultiple, "multiple");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-fe-name
|
||||
make_getter!(Name);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-fe-name
|
||||
make_setter!(SetName, "name");
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-select-size
|
||||
make_uint_getter!(Size, "size", DEFAULT_SELECT_SIZE);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-select-size
|
||||
make_uint_setter!(SetSize, "size", DEFAULT_SELECT_SIZE);
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-select-type
|
||||
fn Type(self) -> DOMString {
|
||||
let elem: JSRef<Element> = ElementCast::from_ref(self);
|
||||
if elem.has_attribute(&atom!("multiple")) {
|
||||
if self.Multiple() {
|
||||
"select-multiple".to_owned()
|
||||
} else {
|
||||
"select-one".to_owned()
|
||||
|
@ -135,5 +153,12 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> {
|
|||
node.check_disabled_attribute();
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
|
||||
match local_name {
|
||||
&atom!("size") => AttrValue::from_u32(value, DEFAULT_SELECT_SIZE),
|
||||
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue