Using NodeFlags ctor to set InEnabledState when needed

This commit is contained in:
Bruno de Oliveira Abinader 2014-08-06 10:53:54 -04:00
parent 6a2e3cad87
commit b0f7ad2240

View file

@ -141,6 +141,15 @@ impl NodeFlags {
pub fn new(type_id: NodeTypeId) -> NodeFlags { pub fn new(type_id: NodeTypeId) -> NodeFlags {
match type_id { match type_id {
DocumentNodeTypeId => IsInDoc, DocumentNodeTypeId => IsInDoc,
// The following elements are enabled by default.
ElementNodeTypeId(HTMLButtonElementTypeId) |
ElementNodeTypeId(HTMLInputElementTypeId) |
ElementNodeTypeId(HTMLSelectElementTypeId) |
ElementNodeTypeId(HTMLTextAreaElementTypeId) |
ElementNodeTypeId(HTMLOptGroupElementTypeId) |
ElementNodeTypeId(HTMLOptionElementTypeId) |
//ElementNodeTypeId(HTMLMenuItemElementTypeId) |
ElementNodeTypeId(HTMLFieldSetElementTypeId) => InEnabledState,
_ => NodeFlags::empty(), _ => NodeFlags::empty(),
} }
} }
@ -973,7 +982,7 @@ impl Node {
} }
fn new_(type_id: NodeTypeId, doc: Option<JSRef<Document>>) -> Node { fn new_(type_id: NodeTypeId, doc: Option<JSRef<Document>>) -> Node {
let node = Node { Node {
eventtarget: EventTarget::new_inherited(NodeTargetTypeId(type_id)), eventtarget: EventTarget::new_inherited(NodeTargetTypeId(type_id)),
type_id: type_id, type_id: type_id,
@ -988,22 +997,7 @@ impl Node {
flags: Traceable::new(RefCell::new(NodeFlags::new(type_id))), flags: Traceable::new(RefCell::new(NodeFlags::new(type_id))),
layout_data: LayoutDataRef::new(), layout_data: LayoutDataRef::new(),
};
match type_id {
// The following elements are enabled by default.
ElementNodeTypeId(HTMLButtonElementTypeId) |
ElementNodeTypeId(HTMLInputElementTypeId) |
ElementNodeTypeId(HTMLSelectElementTypeId) |
ElementNodeTypeId(HTMLTextAreaElementTypeId) |
ElementNodeTypeId(HTMLOptGroupElementTypeId) |
ElementNodeTypeId(HTMLOptionElementTypeId) |
//ElementNodeTypeId(HTMLMenuItemElementTypeId) |
ElementNodeTypeId(HTMLFieldSetElementTypeId) => {
node.flags.deref().borrow_mut().insert(InEnabledState);
},
_ => ()
} }
node
} }
// http://dom.spec.whatwg.org/#concept-node-adopt // http://dom.spec.whatwg.org/#concept-node-adopt