diff --git a/components/plugins/lints/unrooted_must_root.rs b/components/plugins/lints/unrooted_must_root.rs index 25bae996f34..cc2ce5d8220 100644 --- a/components/plugins/lints/unrooted_must_root.rs +++ b/components/plugins/lints/unrooted_must_root.rs @@ -126,8 +126,7 @@ impl LateLintPass for UnrootedPass { match kind { visit::FnKind::ItemFn(n, _, _, _, _, _) | visit::FnKind::Method(n, _, _) if n.as_str() == "new" - || n.as_str() == "new_inherited" - || n.as_str() == "new_initialized" => { + || n.as_str().starts_with("new_") => { self.in_new_function = true; return; }, diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 3378700ca99..1d054d03f14 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5885,6 +5885,20 @@ impl %(name)sCast { hierarchy[descriptor.getParentName()].append(name) # Define a `FooDerived` trait for superclasses to implement, # as well as the `FooCast::to_*` methods that use it. + baseName = descriptor.prototypeChain[0] + typeIdPat = descriptor.prototypeChain[-1] + if upcast: + typeIdPat += "(_)" + for base in reversed(descriptor.prototypeChain[1:-1]): + typeIdPat = "%s(%sTypeId::%s)" % (base, base, typeIdPat) + typeIdPat = "%sTypeId::%s" % (baseName, typeIdPat) + args = { + 'baseName': baseName, + 'derivedTrait': name + 'Derived', + 'methodName': 'is_' + name.lower(), + 'name': name, + 'typeIdPat': typeIdPat, + } allprotos.append(CGGeneric("""\ /// Types which `%(name)s` derives from pub trait %(derivedTrait)s: Sized { @@ -5922,7 +5936,16 @@ impl %(name)sCast { } } -""" % {'derivedTrait': name + 'Derived', 'name': name, 'methodName': 'is_' + name.lower()})) +impl %(derivedTrait)s for %(baseName)s { + fn %(methodName)s(&self) -> bool { + match *self.type_id() { + %(typeIdPat)s => true, + _ => false, + } + } +} + +""" % args)) # Implement the `FooDerived` trait for non-root superclasses by deferring to # the direct superclass. This leaves the implementation of the `FooDerived` diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index a8a5f56f02e..efbf1abbc15 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -4,7 +4,6 @@ use dom::bindings::codegen::Bindings::BlobBinding; use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; -use dom::bindings::codegen::InheritTypes::{BlobTypeId, FileDerived}; use dom::bindings::error::Fallible; use dom::bindings::global::{GlobalField, GlobalRef}; use dom::bindings::js::Root; @@ -157,9 +156,3 @@ impl BlobMethods for Blob { } } - -impl FileDerived for Blob { - fn is_file(&self) -> bool { - *self.type_id() == BlobTypeId::File - } -} diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index dbb2356d8a0..fce14f68c3d 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -6,15 +6,12 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataDerived, CharacterDataTypeId}; -use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast}; use dom::bindings::codegen::UnionTypes::NodeOrString; use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::js::{LayoutJS, Root}; use dom::document::Document; use dom::element::Element; -use dom::eventtarget::EventTarget; use dom::node::{Node, NodeDamage}; use std::borrow::ToOwned; use std::cell::Ref; @@ -27,19 +24,10 @@ pub struct CharacterData { data: DOMRefCell, } -impl CharacterDataDerived for EventTarget { - fn is_characterdata(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node(NodeTypeId::CharacterData(_)) => true, - _ => false - } - } -} - impl CharacterData { - pub fn new_inherited(id: CharacterDataTypeId, data: DOMString, document: &Document) -> CharacterData { + pub fn new_inherited(data: DOMString, document: &Document) -> CharacterData { CharacterData { - node: Node::new_inherited(NodeTypeId::CharacterData(id), document), + node: Node::new_inherited(document), data: DOMRefCell::new(data), } } diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs index 269a8350b0c..3bed2a647dd 100644 --- a/components/script/dom/comment.rs +++ b/components/script/dom/comment.rs @@ -4,14 +4,11 @@ use dom::bindings::codegen::Bindings::CommentBinding; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataTypeId, CommentDerived}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, NodeTypeId}; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; use dom::characterdata::CharacterData; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::node::Node; use util::str::DOMString; @@ -21,16 +18,10 @@ pub struct Comment { characterdata: CharacterData, } -impl CommentDerived for EventTarget { - fn is_comment(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::Comment)) - } -} - impl Comment { fn new_inherited(text: DOMString, document: &Document) -> Comment { Comment { - characterdata: CharacterData::new_inherited(CharacterDataTypeId::Comment, text, document) + characterdata: CharacterData::new_inherited(text, document) } } diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs index 05c905056ab..4b6a9d5855b 100644 --- a/components/script/dom/customevent.rs +++ b/components/script/dom/customevent.rs @@ -5,7 +5,7 @@ use dom::bindings::codegen::Bindings::CustomEventBinding; use dom::bindings::codegen::Bindings::CustomEventBinding::CustomEventMethods; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; -use dom::bindings::codegen::InheritTypes::{CustomEventDerived, EventCast, EventTypeId}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{MutHeapJSVal, Root}; @@ -23,12 +23,6 @@ pub struct CustomEvent { detail: MutHeapJSVal, } -impl CustomEventDerived for Event { - fn is_customevent(&self) -> bool { - *self.type_id() == EventTypeId::CustomEvent - } -} - impl CustomEvent { fn new_inherited() -> CustomEvent { CustomEvent { diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 93c66071cb0..1ef9b8d956d 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -8,16 +8,13 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::DedicatedWorkerGlobalScopeBinding; use dom::bindings::codegen::Bindings::DedicatedWorkerGlobalScopeBinding::DedicatedWorkerGlobalScopeMethods; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; -use dom::bindings::codegen::InheritTypes::DedicatedWorkerGlobalScopeDerived; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{WorkerGlobalScopeCast, WorkerGlobalScopeTypeId}; +use dom::bindings::codegen::InheritTypes::{EventTargetCast, WorkerGlobalScopeCast}; use dom::bindings::error::ErrorResult; use dom::bindings::global::GlobalRef; use dom::bindings::js::{Root, RootCollection}; use dom::bindings::refcounted::LiveDOMReferences; use dom::bindings::structuredclone::StructuredCloneData; use dom::bindings::utils::Reflectable; -use dom::eventtarget::EventTarget; use dom::messageevent::MessageEvent; use dom::worker::{SimpleWorkerErrorHandler, TrustedWorkerAddress, WorkerMessageHandler}; use dom::workerglobalscope::WorkerGlobalScope; @@ -357,12 +354,3 @@ impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope { // https://html.spec.whatwg.org/multipage/#handler-dedicatedworkerglobalscope-onmessage event_handler!(message, GetOnmessage, SetOnmessage); } - -impl DedicatedWorkerGlobalScopeDerived for EventTarget { - fn is_dedicatedworkerglobalscope(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::WorkerGlobalScope(WorkerGlobalScopeTypeId::DedicatedWorkerGlobalScope) => true, - _ => false - } - } -} diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 8b6b5d7ea12..0419895233b 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -16,7 +16,7 @@ use dom::bindings::codegen::Bindings::PerformanceBinding::PerformanceMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::InheritTypes::{DocumentDerived, DocumentTypeCast, ElementCast}; use dom::bindings::codegen::InheritTypes::{ElementDerived, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast, EventTargetTypeId}; +use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast}; use dom::bindings::codegen::InheritTypes::{HTMLAnchorElementCast, HTMLAnchorElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLAppletElementDerived, HTMLAreaElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLBaseElementCast, HTMLBodyElementCast}; @@ -163,12 +163,6 @@ impl PartialEq for Document { } } -impl DocumentDerived for EventTarget { - fn is_document(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Document) - } -} - #[derive(JSTraceable, HeapSizeOf)] struct ImagesFilter; impl CollectionFilter for ImagesFilter { @@ -1025,7 +1019,7 @@ impl Document { }; Document { - node: Node::new_without_doc(NodeTypeId::Document), + node: Node::new_document_node(), window: JS::from_ref(window), idmap: DOMRefCell::new(HashMap::new()), implementation: Default::default(), diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs index 379fe16b066..fd6716802ec 100644 --- a/components/script/dom/documentfragment.rs +++ b/components/script/dom/documentfragment.rs @@ -5,15 +5,13 @@ use dom::bindings::codegen::Bindings::DocumentFragmentBinding; use dom::bindings::codegen::Bindings::DocumentFragmentBinding::DocumentFragmentMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{DocumentFragmentDerived, ElementCast}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, NodeCast}; use dom::bindings::codegen::UnionTypes::NodeOrString; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; use dom::document::Document; use dom::element::Element; -use dom::eventtarget::EventTarget; use dom::htmlcollection::HTMLCollection; use dom::node::{Node, window_from_node}; use dom::nodelist::NodeList; @@ -26,17 +24,11 @@ pub struct DocumentFragment { node: Node, } -impl DocumentFragmentDerived for EventTarget { - fn is_documentfragment(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::DocumentFragment) - } -} - impl DocumentFragment { /// Creates a new DocumentFragment. fn new_inherited(document: &Document) -> DocumentFragment { DocumentFragment { - node: Node::new_inherited(NodeTypeId::DocumentFragment, document), + node: Node::new_inherited(document), } } diff --git a/components/script/dom/documenttype.rs b/components/script/dom/documenttype.rs index e04922ad629..4372ac1abfb 100644 --- a/components/script/dom/documenttype.rs +++ b/components/script/dom/documenttype.rs @@ -4,13 +4,11 @@ use dom::bindings::codegen::Bindings::DocumentTypeBinding; use dom::bindings::codegen::Bindings::DocumentTypeBinding::DocumentTypeMethods; -use dom::bindings::codegen::InheritTypes::{DocumentTypeDerived, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::NodeCast; use dom::bindings::codegen::UnionTypes::NodeOrString; use dom::bindings::error::ErrorResult; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::node::Node; use std::borrow::ToOwned; use util::str::DOMString; @@ -25,12 +23,6 @@ pub struct DocumentType { system_id: DOMString, } -impl DocumentTypeDerived for EventTarget { - fn is_documenttype(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::DocumentType) - } -} - impl DocumentType { fn new_inherited(name: DOMString, public_id: Option, @@ -38,7 +30,7 @@ impl DocumentType { document: &Document) -> DocumentType { DocumentType { - node: Node::new_inherited(NodeTypeId::DocumentType, document), + node: Node::new_inherited(document), name: name, public_id: public_id.unwrap_or("".to_owned()), system_id: system_id.unwrap_or("".to_owned()) diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 5ce83d933de..651142df713 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -20,8 +20,7 @@ use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateEl use dom::bindings::codegen::Bindings::NamedNodeMapBinding::NamedNodeMapMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::codegen::InheritTypes::{CharacterDataCast, DocumentDerived, ElementCast}; -use dom::bindings::codegen::InheritTypes::{ElementDerived, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementDerived, ElementTypeId, EventTargetCast}; use dom::bindings::codegen::InheritTypes::{HTMLAnchorElementCast, HTMLBodyElementCast}; use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFontElementCast}; use dom::bindings::codegen::InheritTypes::{HTMLIFrameElementCast, HTMLInputElementCast}; @@ -41,16 +40,15 @@ use dom::domrect::DOMRect; use dom::domrectlist::DOMRectList; use dom::domtokenlist::DOMTokenList; use dom::event::Event; -use dom::eventtarget::EventTarget; use dom::htmlcollection::HTMLCollection; use dom::htmlinputelement::{HTMLInputElement, RawLayoutHTMLInputElementHelpers}; use dom::htmltablecellelement::HTMLTableCellElementLayoutHelpers; use dom::htmltableelement::HTMLTableElement; use dom::htmltextareaelement::RawLayoutHTMLTextAreaElementHelpers; use dom::namednodemap::NamedNodeMap; -use dom::node::{CLICK_IN_PROGRESS, LayoutNodeHelpers, Node, SEQUENTIALLY_FOCUSABLE}; -use dom::node::{NodeDamage, document_from_node}; -use dom::node::{window_from_node}; +use dom::node::{CLICK_IN_PROGRESS, LayoutNodeHelpers, Node}; +use dom::node::{NodeDamage, NodeFlags, SEQUENTIALLY_FOCUSABLE}; +use dom::node::{document_from_node, window_from_node}; use dom::nodelist::NodeList; use dom::virtualmethods::{VirtualMethods, vtable_for}; use html5ever::serialize; @@ -91,16 +89,6 @@ pub struct Element { class_list: MutNullableHeap>, } -impl ElementDerived for EventTarget { - #[inline] - fn is_element(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node(NodeTypeId::Element(_)) => true, - _ => false - } - } -} - impl PartialEq for Element { fn eq(&self, other: &Element) -> bool { self as *const Element == &*other @@ -123,11 +111,20 @@ impl Element { create_element(name, prefix, document, creator) } - pub fn new_inherited(type_id: ElementTypeId, local_name: DOMString, + + pub fn new_inherited(local_name: DOMString, namespace: Namespace, prefix: Option, document: &Document) -> Element { + Element::new_inherited_with_flags(NodeFlags::new(), local_name, + namespace, prefix, document) + } + + pub fn new_inherited_with_flags(flags: NodeFlags, local_name: DOMString, + namespace: Namespace, prefix: Option, + document: &Document) + -> Element { Element { - node: Node::new_inherited(NodeTypeId::Element(type_id), document), + node: Node::new_inherited_with_flags(flags, document), local_name: Atom::from_slice(&local_name), namespace: namespace, prefix: prefix, @@ -144,7 +141,7 @@ impl Element { prefix: Option, document: &Document) -> Root { Node::reflect_node( - box Element::new_inherited(ElementTypeId::Element, local_name, namespace, prefix, document), + box Element::new_inherited(local_name, namespace, prefix, document), document, ElementBinding::Wrap) } diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs index 2d95586c350..b408b2f8525 100644 --- a/components/script/dom/errorevent.rs +++ b/components/script/dom/errorevent.rs @@ -6,7 +6,7 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::ErrorEventBinding; use dom::bindings::codegen::Bindings::ErrorEventBinding::ErrorEventMethods; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; -use dom::bindings::codegen::InheritTypes::{ErrorEventDerived, EventCast, EventTypeId}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{MutHeapJSVal, Root}; @@ -30,12 +30,6 @@ pub struct ErrorEvent { error: MutHeapJSVal, } -impl ErrorEventDerived for Event { - fn is_errorevent(&self) -> bool { - *self.type_id() == EventTypeId::ErrorEvent - } -} - impl ErrorEvent { fn new_inherited() -> ErrorEvent { ErrorEvent { diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index 36459c06bb3..ca775b45672 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -10,10 +10,8 @@ use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding; use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding::HTMLAnchorElementMethods; use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLAnchorElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLImageElementDerived}; -use dom::bindings::codegen::InheritTypes::{MouseEventCast, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLImageElementDerived, MouseEventCast, NodeCast}; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::document::Document; use dom::domtokenlist::DOMTokenList; @@ -35,21 +33,13 @@ pub struct HTMLAnchorElement { rel_list: MutNullableHeap>, } -impl HTMLAnchorElementDerived for EventTarget { - fn is_htmlanchorelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement))) - } -} - impl HTMLAnchorElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLAnchorElement { HTMLAnchorElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLAnchorElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), rel_list: Default::default(), } } diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs index 21a9ed8c2e1..e01a03b5e47 100644 --- a/components/script/dom/htmlappletelement.rs +++ b/components/script/dom/htmlappletelement.rs @@ -5,12 +5,9 @@ use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLAppletElementBinding; use dom::bindings::codegen::Bindings::HTMLAppletElementBinding::HTMLAppletElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLAppletElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::HTMLElementCast; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; @@ -22,21 +19,13 @@ pub struct HTMLAppletElement { htmlelement: HTMLElement } -impl HTMLAppletElementDerived for EventTarget { - fn is_htmlappletelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAppletElement))) - } -} - impl HTMLAppletElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLAppletElement { HTMLAppletElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLAppletElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index 167171d23ae..bb17cdb0ad3 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -5,14 +5,11 @@ use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLAreaElementBinding; use dom::bindings::codegen::Bindings::HTMLAreaElementBinding::HTMLAreaElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLAreaElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::utils::Reflectable; use dom::document::Document; use dom::domtokenlist::DOMTokenList; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; @@ -26,18 +23,10 @@ pub struct HTMLAreaElement { rel_list: MutNullableHeap>, } -impl HTMLAreaElementDerived for EventTarget { - fn is_htmlareaelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement))) - } -} - impl HTMLAreaElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLAreaElement { HTMLAreaElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLAreaElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), rel_list: Default::default(), } } diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs index d942d5a20d5..ed0b89cca27 100644 --- a/components/script/dom/htmlaudioelement.rs +++ b/components/script/dom/htmlaudioelement.rs @@ -3,12 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLAudioElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLAudioElementDerived, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLMediaElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlmediaelement::HTMLMediaElement; use dom::node::Node; use util::str::DOMString; @@ -18,22 +14,13 @@ pub struct HTMLAudioElement { htmlmediaelement: HTMLMediaElement } -impl HTMLAudioElementDerived for EventTarget { - fn is_htmlaudioelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element( - ElementTypeId::HTMLElement( - HTMLElementTypeId::HTMLMediaElement( - HTMLMediaElementTypeId::HTMLAudioElement)))) - } -} - impl HTMLAudioElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLAudioElement { HTMLAudioElement { htmlmediaelement: - HTMLMediaElement::new_inherited(HTMLMediaElementTypeId::HTMLAudioElement, localName, prefix, document) + HTMLMediaElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index e751b3c4a8f..9fb36ae44d5 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -4,13 +4,10 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLBaseElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLBaseElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node}; use dom::virtualmethods::VirtualMethods; @@ -22,18 +19,10 @@ pub struct HTMLBaseElement { htmlelement: HTMLElement } -impl HTMLBaseElementDerived for EventTarget { - fn is_htmlbaseelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBaseElement))) - } -} - impl HTMLBaseElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLBaseElement { HTMLBaseElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLBaseElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 3ce0f1889f9..806086a6b03 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -8,15 +8,11 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLBodyElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, HTMLElementCast}; use dom::bindings::js::Root; use dom::bindings::utils::Reflectable; use dom::document::Document; use dom::element::{AttributeMutation, RawLayoutElementHelpers}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -41,21 +37,11 @@ pub struct HTMLBodyElement { background: DOMRefCell> } -impl HTMLBodyElementDerived for EventTarget { - fn is_htmlbodyelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement( - HTMLElementTypeId::HTMLBodyElement))) - } -} - impl HTMLBodyElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLBodyElement { HTMLBodyElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLBodyElement, - localName, - prefix, - document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), background_color: Cell::new(None), background: DOMRefCell::new(None) } diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs index 38ca77226fe..3007e772515 100644 --- a/components/script/dom/htmlbrelement.rs +++ b/components/script/dom/htmlbrelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLBRElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLBRElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLBRElement { htmlelement: HTMLElement, } -impl HTMLBRElementDerived for EventTarget { - fn is_htmlbrelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBRElement))) - } -} - impl HTMLBRElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLBRElement { HTMLBRElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLBRElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 3e66645e756..104619aecbb 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -6,10 +6,8 @@ use dom::activation::Activatable; use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLButtonElementBinding; use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLButtonElementCast, HTMLButtonElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLButtonElementCast, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, NodeCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::{AttributeMutation, Element}; @@ -18,7 +16,8 @@ use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, FormSubmitter}; use dom::htmlformelement::{SubmittedFrom, HTMLFormElement}; -use dom::node::{Node, document_from_node, window_from_node}; +use dom::node::{IN_ENABLED_STATE, Node, NodeFlags}; +use dom::node::{document_from_node, window_from_node}; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use std::ascii::AsciiExt; @@ -42,21 +41,14 @@ pub struct HTMLButtonElement { button_type: Cell } -impl HTMLButtonElementDerived for EventTarget { - fn is_htmlbuttonelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLButtonElement))) - } -} - impl HTMLButtonElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLButtonElement { HTMLButtonElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLButtonElement, localName, prefix, document), + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document), //TODO: implement button_type in attribute_mutated button_type: Cell::new(ButtonType::ButtonSubmit) } diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 7397970b4f1..f698f42fe26 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -7,9 +7,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding; use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding::HTMLCanvasElementMethods; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLContextAttributes; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLCanvasElementDerived, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::codegen::UnionTypes::CanvasRenderingContext2DOrWebGLRenderingContext; use dom::bindings::global::GlobalRef; use dom::bindings::js::{HeapGCValue, JS, LayoutJS, MutNullableHeap, Root}; @@ -17,7 +15,6 @@ use dom::bindings::utils::{Reflectable}; use dom::canvasrenderingcontext2d::{CanvasRenderingContext2D, LayoutCanvasRenderingContext2DHelpers}; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -57,21 +54,13 @@ impl PartialEq for HTMLCanvasElement { } } -impl HTMLCanvasElementDerived for EventTarget { - fn is_htmlcanvaselement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLCanvasElement))) - } -} - impl HTMLCanvasElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLCanvasElement { HTMLCanvasElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLCanvasElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), context: Default::default(), width: Cell::new(DEFAULT_WIDTH), height: Cell::new(DEFAULT_HEIGHT), diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs index 14e02a53c81..dbbd1c5cdcf 100644 --- a/components/script/dom/htmldataelement.rs +++ b/components/script/dom/htmldataelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLDataElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDataElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,20 +14,12 @@ pub struct HTMLDataElement { htmlelement: HTMLElement } -impl HTMLDataElementDerived for EventTarget { - fn is_htmldataelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDataElement))) - } -} - impl HTMLDataElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDataElement { HTMLDataElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLDataElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs index c9529d82096..66d625437b6 100644 --- a/components/script/dom/htmldatalistelement.rs +++ b/components/script/dom/htmldatalistelement.rs @@ -4,13 +4,10 @@ use dom::bindings::codegen::Bindings::HTMLDataListElementBinding; use dom::bindings::codegen::Bindings::HTMLDataListElementBinding::HTMLDataListElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDataListElementDerived, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLOptionElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLOptionElementDerived, NodeCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::Element; -use dom::eventtarget::EventTarget; use dom::htmlcollection::{CollectionFilter, HTMLCollection}; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; @@ -21,21 +18,13 @@ pub struct HTMLDataListElement { htmlelement: HTMLElement } -impl HTMLDataListElementDerived for EventTarget { - fn is_htmldatalistelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDataListElement))) - } -} - impl HTMLDataListElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDataListElement { HTMLDataListElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLDataListElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs index f5c6047d93d..0d9e534f85c 100644 --- a/components/script/dom/htmldialogelement.rs +++ b/components/script/dom/htmldialogelement.rs @@ -5,11 +5,8 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLDialogElementBinding; use dom::bindings::codegen::Bindings::HTMLDialogElementBinding::HTMLDialogElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDialogElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use std::borrow::ToOwned; @@ -21,21 +18,13 @@ pub struct HTMLDialogElement { return_value: DOMRefCell, } -impl HTMLDialogElementDerived for EventTarget { - fn is_htmldialogelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDialogElement))) - } -} - impl HTMLDialogElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDialogElement { HTMLDialogElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLDialogElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), return_value: DOMRefCell::new("".to_owned()), } } diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs index cd5e4c891ce..231fb3a711d 100644 --- a/components/script/dom/htmldirectoryelement.rs +++ b/components/script/dom/htmldirectoryelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLDirectoryElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDirectoryElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLDirectoryElement { htmlelement: HTMLElement } -impl HTMLDirectoryElementDerived for EventTarget { - fn is_htmldirectoryelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDirectoryElement))) - } -} - impl HTMLDirectoryElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDirectoryElement { HTMLDirectoryElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLDirectoryElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs index 7aa617d91fe..22ebca4b893 100644 --- a/components/script/dom/htmldivelement.rs +++ b/components/script/dom/htmldivelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLDivElementBinding::{self, HTMLDivElementMethods}; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDivElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,20 +14,12 @@ pub struct HTMLDivElement { htmlelement: HTMLElement } -impl HTMLDivElementDerived for EventTarget { - fn is_htmldivelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDivElement))) - } -} - impl HTMLDivElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDivElement { HTMLDivElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLDivElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs index 5aec0c2129f..5c42844a717 100644 --- a/components/script/dom/htmldlistelement.rs +++ b/components/script/dom/htmldlistelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLDListElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLDListElementDerived, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,19 +14,11 @@ pub struct HTMLDListElement { htmlelement: HTMLElement } -impl HTMLDListElementDerived for EventTarget { - fn is_htmldlistelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLDListElement))) - } -} - impl HTMLDListElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLDListElement { HTMLDListElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLDListElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index f055a51b719..48154d25042 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -10,8 +10,7 @@ use dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods; use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLBodyElementDerived, HTMLElementDerived}; +use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLBodyElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFrameSetElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLHtmlElementDerived, HTMLInputElementCast}; use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; @@ -22,9 +21,9 @@ use dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration}; use dom::document::Document; use dom::domstringmap::DOMStringMap; use dom::element::{AttributeMutation, Element}; -use dom::eventtarget::EventTarget; use dom::htmlinputelement::HTMLInputElement; -use dom::node::{Node, SEQUENTIALLY_FOCUSABLE, document_from_node, window_from_node}; +use dom::node::{Node, NodeFlags, SEQUENTIALLY_FOCUSABLE}; +use dom::node::{document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use msg::constellation_msg::FocusType; use std::borrow::ToOwned; @@ -47,23 +46,18 @@ impl PartialEq for HTMLElement { } } -impl HTMLElementDerived for EventTarget { - fn is_htmlelement(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(_))) => true, - _ => false - } - } -} - impl HTMLElement { - pub fn new_inherited(type_id: HTMLElementTypeId, - tag_name: DOMString, - prefix: Option, + pub fn new_inherited(tag_name: DOMString, prefix: Option, document: &Document) -> HTMLElement { + HTMLElement::new_inherited_with_flags(NodeFlags::new(), tag_name, prefix, document) + } + + pub fn new_inherited_with_flags(flags: NodeFlags, tag_name: DOMString, + prefix: Option, document: &Document) + -> HTMLElement { HTMLElement { element: - Element::new_inherited(ElementTypeId::HTMLElement(type_id), tag_name, ns!(HTML), prefix, document), + Element::new_inherited_with_flags(flags, tag_name, ns!(HTML), prefix, document), style_decl: Default::default(), dataset: Default::default(), } @@ -71,7 +65,7 @@ impl HTMLElement { #[allow(unrooted_must_root)] pub fn new(localName: DOMString, prefix: Option, document: &Document) -> Root { - let element = HTMLElement::new_inherited(HTMLElementTypeId::HTMLElement, localName, prefix, document); + let element = HTMLElement::new_inherited(localName, prefix, document); Node::reflect_node(box element, document, HTMLElementBinding::Wrap) } diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs index 0ec0e0c5810..7af4dac4da7 100644 --- a/components/script/dom/htmlembedelement.rs +++ b/components/script/dom/htmlembedelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLEmbedElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLEmbedElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLEmbedElement { htmlelement: HTMLElement } -impl HTMLEmbedElementDerived for EventTarget { - fn is_htmlembedelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLEmbedElement))) - } -} - impl HTMLEmbedElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLEmbedElement { HTMLEmbedElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLEmbedElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs index e7cddb164cc..c50f3bf6756 100644 --- a/components/script/dom/htmlfieldsetelement.rs +++ b/components/script/dom/htmlfieldsetelement.rs @@ -5,17 +5,16 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding; use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding::HTMLFieldSetElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFieldSetElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLLegendElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementTypeId, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLLegendElementDerived}; +use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; use dom::bindings::js::{Root, RootedReference}; use dom::document::Document; use dom::element::{AttributeMutation, Element}; -use dom::eventtarget::EventTarget; use dom::htmlcollection::{CollectionFilter, HTMLCollection}; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; -use dom::node::{Node, window_from_node}; +use dom::node::{IN_ENABLED_STATE, Node, NodeFlags, window_from_node}; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use util::str::{DOMString, StaticStringVec}; @@ -25,21 +24,14 @@ pub struct HTMLFieldSetElement { htmlelement: HTMLElement } -impl HTMLFieldSetElementDerived for EventTarget { - fn is_htmlfieldsetelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFieldSetElement))) - } -} - impl HTMLFieldSetElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLFieldSetElement { HTMLFieldSetElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLFieldSetElement, localName, prefix, document) + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document) } } diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index 8be5342bd61..1ab84f4b4d8 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -7,13 +7,10 @@ use dom::attr::{Attr, AttrValue}; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLFontElementBinding; use dom::bindings::codegen::Bindings::HTMLFontElementBinding::HTMLFontElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLFontElementDerived, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::{AttributeMutation, RawLayoutElementHelpers}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; @@ -29,18 +26,11 @@ pub struct HTMLFontElement { face: DOMRefCell>, } -impl HTMLFontElementDerived for EventTarget { - fn is_htmlfontelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFontElement))) - } -} impl HTMLFontElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLFontElement { HTMLFontElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLFontElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), color: Cell::new(None), face: DOMRefCell::new(None), } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index c0edc91ea69..46caced7d45 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -9,19 +9,18 @@ use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElemen use dom::bindings::codegen::Bindings::HTMLFormElementBinding; use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMethods; use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementBase, ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementBase, ElementCast}; +use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetCast}; use dom::bindings::codegen::InheritTypes::{HTMLDataListElementCast, HTMLElementCast}; use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFormElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLFormElementDerived, HTMLInputElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLTextAreaElementCast, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLInputElementCast, HTMLTextAreaElementCast}; +use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; use dom::bindings::global::GlobalRef; use dom::bindings::js::{Root}; use dom::bindings::utils::Reflectable; use dom::document::Document; use dom::element::Element; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::htmlbuttonelement::{HTMLButtonElement}; use dom::htmlelement::HTMLElement; use dom::htmlinputelement::HTMLInputElement; @@ -51,20 +50,12 @@ impl PartialEq for HTMLFormElement { } } -impl HTMLFormElementDerived for EventTarget { - fn is_htmlformelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFormElement))) - } -} - impl HTMLFormElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLFormElement { HTMLFormElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLFormElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), marked_for_reset: Cell::new(false), } } diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs index c057b854cce..72b6307096a 100644 --- a/components/script/dom/htmlframeelement.rs +++ b/components/script/dom/htmlframeelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLFrameElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFrameElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLFrameElement { htmlelement: HTMLElement } -impl HTMLFrameElementDerived for EventTarget { - fn is_htmlframeelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFrameElement))) - } -} - impl HTMLFrameElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLFrameElement { HTMLFrameElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLFrameElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs index 39a474d13d1..9db91262264 100644 --- a/components/script/dom/htmlframesetelement.rs +++ b/components/script/dom/htmlframesetelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLFrameSetElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFrameSetElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLFrameSetElement { htmlelement: HTMLElement } -impl HTMLFrameSetElementDerived for EventTarget { - fn is_htmlframesetelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFrameSetElement))) - } -} - impl HTMLFrameSetElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLFrameSetElement { HTMLFrameSetElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLFrameSetElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs index e19b9fb6508..cc5d3d70562 100644 --- a/components/script/dom/htmlheadelement.rs +++ b/components/script/dom/htmlheadelement.rs @@ -3,12 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLHeadElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLHeadElementDerived, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::HTMLElementCast; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::userscripts::load_script; @@ -20,20 +17,12 @@ pub struct HTMLHeadElement { htmlelement: HTMLElement } -impl HTMLHeadElementDerived for EventTarget { - fn is_htmlheadelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHeadElement))) - } -} - impl HTMLHeadElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLHeadElement { HTMLHeadElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLHeadElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs index 18dd24dc9a5..f0aa4c046c7 100644 --- a/components/script/dom/htmlheadingelement.rs +++ b/components/script/dom/htmlheadingelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLHeadingElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLHeadingElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -28,14 +25,6 @@ pub struct HTMLHeadingElement { level: HeadingLevel, } -impl HTMLHeadingElementDerived for EventTarget { - fn is_htmlheadingelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHeadingElement))) - } -} - impl HTMLHeadingElement { fn new_inherited(localName: DOMString, prefix: Option, @@ -43,7 +32,7 @@ impl HTMLHeadingElement { level: HeadingLevel) -> HTMLHeadingElement { HTMLHeadingElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLHeadingElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), level: level, } } diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index 6a7136d31f0..dc5ab695d6b 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLHRElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLHRElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLHRElement { htmlelement: HTMLElement, } -impl HTMLHRElementDerived for EventTarget { - fn is_htmlhrelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHRElement))) - } -} - impl HTMLHRElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLHRElement { HTMLHRElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLHRElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs index 4f8f54e884a..85f94051547 100644 --- a/components/script/dom/htmlhtmlelement.rs +++ b/components/script/dom/htmlhtmlelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLHtmlElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLHtmlElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLHtmlElement { htmlelement: HTMLElement } -impl HTMLHtmlElementDerived for EventTarget { - fn is_htmlhtmlelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHtmlElement))) - } -} - impl HTMLHtmlElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLHtmlElement { HTMLHtmlElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLHtmlElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index cd82760d2c5..9e09e836d85 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -6,10 +6,8 @@ use dom::attr::{Attr, AttrHelpersForLayout, AttrValue}; use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding; use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventCast}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLIFrameElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventCast, EventTargetCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::global::GlobalRef; @@ -18,7 +16,6 @@ use dom::bindings::utils::Reflectable; use dom::customevent::CustomEvent; use dom::document::Document; use dom::element::{self, AttributeMutation}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; use dom::urlhelper::UrlHelper; @@ -64,16 +61,6 @@ pub struct HTMLIFrameElement { sandbox: Cell>, } -impl HTMLIFrameElementDerived for EventTarget { - fn is_htmliframeelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLIFrameElement))) - } -} - - - impl HTMLIFrameElement { pub fn is_sandboxed(&self) -> bool { self.sandbox.get().is_some() @@ -197,8 +184,7 @@ impl HTMLIFrameElement { prefix: Option, document: &Document) -> HTMLIFrameElement { HTMLIFrameElement { - htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLIFrameElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), pipeline_id: Cell::new(None), subpage_id: Cell::new(None), containing_page_pipeline_id: Cell::new(None), diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 7e1972e54b8..c07022306d6 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -8,10 +8,8 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLImageElementBinding; use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLImageElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{LayoutJS, Root}; @@ -19,7 +17,6 @@ use dom::bindings::refcounted::Trusted; use dom::document::Document; use dom::element::AttributeMutation; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, NodeDamage, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -42,15 +39,6 @@ pub struct HTMLImageElement { image: DOMRefCell>>, } -impl HTMLImageElementDerived for EventTarget { - fn is_htmlimageelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement))) - } -} - - impl HTMLImageElement { pub fn get_url(&self) -> Option{ self.url.borrow().clone() @@ -146,7 +134,7 @@ impl HTMLImageElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLImageElement { HTMLImageElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLImageElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), url: DOMRefCell::new(None), image: DOMRefCell::new(None), } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index 647725678be..cc0aabdc9cb 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -11,12 +11,9 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::HTMLInputElementBinding; use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; use dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEventMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, HTMLElementCast}; use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, HTMLInputElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLInputElementDerived, KeyboardEventCast}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{KeyboardEventCast, NodeCast}; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, LayoutJS, Root, RootedReference}; use dom::document::Document; @@ -27,7 +24,7 @@ use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, FormDatum, FormSubmitter, HTMLFormElement}; use dom::htmlformelement::{ResetFrom, SubmittedFrom}; use dom::keyboardevent::KeyboardEvent; -use dom::node::{Node, NodeDamage}; +use dom::node::{IN_ENABLED_STATE, Node, NodeDamage, NodeFlags}; use dom::node::{document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use msg::constellation_msg::ConstellationChan; @@ -105,21 +102,15 @@ impl InputActivationState { } } -impl HTMLInputElementDerived for EventTarget { - fn is_htmlinputelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement))) - } -} - static DEFAULT_INPUT_SIZE: u32 = 20; impl HTMLInputElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLInputElement { let chan = document.window().r().constellation_chan(); HTMLInputElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLInputElement, localName, prefix, document), + htmlelement: + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document), input_type: Cell::new(InputType::InputText), checked: Cell::new(false), placeholder: DOMRefCell::new("".to_owned()), diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index a2d5653c025..3beefc3db9a 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -4,11 +4,8 @@ use dom::bindings::codegen::Bindings::HTMLLabelElementBinding; use dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLLabelElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::node::Node; @@ -19,21 +16,13 @@ pub struct HTMLLabelElement { htmlelement: HTMLElement, } -impl HTMLLabelElementDerived for EventTarget { - fn is_htmllabelelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLabelElement))) - } -} - impl HTMLLabelElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLLabelElement { HTMLLabelElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLLabelElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs index 3ff1209d42d..bc99bcec2b1 100644 --- a/components/script/dom/htmllegendelement.rs +++ b/components/script/dom/htmllegendelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLLegendElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLLegendElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLLegendElement { htmlelement: HTMLElement, } -impl HTMLLegendElementDerived for EventTarget { - fn is_htmllegendelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLegendElement))) - } -} - impl HTMLLegendElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLLegendElement { HTMLLegendElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLLegendElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index e9545ae73c9..00a99791b8f 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLLIElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLLIElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLLIElement { htmlelement: HTMLElement, } -impl HTMLLIElementDerived for EventTarget { - fn is_htmllielement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLIElement))) - } -} - impl HTMLLIElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLLIElement { HTMLLIElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLLIElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 89747b00f48..6f1dc148852 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -8,10 +8,8 @@ use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLLinkElementBinding; use dom::bindings::codegen::Bindings::HTMLLinkElementBinding::HTMLLinkElementMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLLinkElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::js::{RootedReference}; @@ -20,7 +18,6 @@ use dom::document::Document; use dom::domtokenlist::DOMTokenList; use dom::element::{AttributeMutation, Element}; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -42,18 +39,10 @@ pub struct HTMLLinkElement { rel_list: MutNullableHeap>, } -impl HTMLLinkElementDerived for EventTarget { - fn is_htmllinkelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement))) - } -} - impl HTMLLinkElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLLinkElement { HTMLLinkElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLLinkElement, localName, prefix, document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), rel_list: Default::default(), } } diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs index e8a765954cb..30816c51409 100644 --- a/components/script/dom/htmlmapelement.rs +++ b/components/script/dom/htmlmapelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLMapElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLMapElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,20 +14,12 @@ pub struct HTMLMapElement { htmlelement: HTMLElement } -impl HTMLMapElementDerived for EventTarget { - fn is_htmlmapelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMapElement))) - } -} - impl HTMLMapElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLMapElement { HTMLMapElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLMapElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 6ee08046b26..06c2f32a7a4 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -2,11 +2,7 @@ * 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::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLMediaElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLMediaElementTypeId, NodeTypeId}; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use util::str::DOMString; @@ -15,23 +11,13 @@ pub struct HTMLMediaElement { htmlelement: HTMLElement, } -impl HTMLMediaElementDerived for EventTarget { - fn is_htmlmediaelement(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMediaElement(_)))) => true, - _ => false - } - } -} - impl HTMLMediaElement { - pub fn new_inherited(type_id: HTMLMediaElementTypeId, tag_name: DOMString, + pub fn new_inherited(tag_name: DOMString, prefix: Option, document: &Document) -> HTMLMediaElement { HTMLMediaElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLMediaElement(type_id), tag_name, prefix, document) + HTMLElement::new_inherited(tag_name, prefix, document) } } diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 5b2d4c0d868..e70aee987b4 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -4,12 +4,9 @@ use dom::bindings::codegen::Bindings::HTMLMetaElementBinding; use dom::bindings::codegen::Bindings::HTMLMetaElementBinding::HTMLMetaElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLMetaElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, NodeCast}; use dom::bindings::js::{Root, RootedReference}; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -23,20 +20,12 @@ pub struct HTMLMetaElement { htmlelement: HTMLElement, } -impl HTMLMetaElementDerived for EventTarget { - fn is_htmlmetaelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMetaElement))) - } -} - impl HTMLMetaElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLMetaElement { HTMLMetaElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLMetaElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs index 88a740ed839..cfe1a4eb5d2 100644 --- a/components/script/dom/htmlmeterelement.rs +++ b/components/script/dom/htmlmeterelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLMeterElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLMeterElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,20 +14,12 @@ pub struct HTMLMeterElement { htmlelement: HTMLElement } -impl HTMLMeterElementDerived for EventTarget { - fn is_htmlmeterelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMeterElement))) - } -} - impl HTMLMeterElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLMeterElement { HTMLMeterElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLMeterElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs index 47e6e441dc6..d05971998bb 100644 --- a/components/script/dom/htmlmodelement.rs +++ b/components/script/dom/htmlmodelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLModElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLModElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLModElement { htmlelement: HTMLElement } -impl HTMLModElementDerived for EventTarget { - fn is_htmlmodelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLModElement))) - } -} - impl HTMLModElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLModElement { HTMLModElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLModElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs index 82b31f5519c..a2c435afbc1 100644 --- a/components/script/dom/htmlobjectelement.rs +++ b/components/script/dom/htmlobjectelement.rs @@ -6,13 +6,10 @@ use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLObjectElementBinding; use dom::bindings::codegen::Bindings::HTMLObjectElementBinding::HTMLObjectElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLObjectElementDerived, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::node::{Node, window_from_node}; @@ -28,21 +25,13 @@ pub struct HTMLObjectElement { image: DOMRefCell>>, } -impl HTMLObjectElementDerived for EventTarget { - fn is_htmlobjectelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement))) - } -} - impl HTMLObjectElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLObjectElement { HTMLObjectElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLObjectElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), image: DOMRefCell::new(None), } } diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs index 7f26bcdf204..4ac17a95d14 100644 --- a/components/script/dom/htmlolistelement.rs +++ b/components/script/dom/htmlolistelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLOListElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLOListElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,20 +14,12 @@ pub struct HTMLOListElement { htmlelement: HTMLElement, } -impl HTMLOListElementDerived for EventTarget { - fn is_htmlolistelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOListElement))) - } -} - impl HTMLOListElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLOListElement { HTMLOListElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLOListElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs index d476b0edaaa..b90eacff87f 100644 --- a/components/script/dom/htmloptgroupelement.rs +++ b/components/script/dom/htmloptgroupelement.rs @@ -5,16 +5,12 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding; use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding::HTMLOptGroupElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLOptGroupElementDerived, HTMLOptionElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLOptionElementDerived, NodeCast}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; -use dom::node::Node; +use dom::node::{IN_ENABLED_STATE, Node, NodeFlags}; use dom::virtualmethods::VirtualMethods; use util::str::DOMString; @@ -23,21 +19,14 @@ pub struct HTMLOptGroupElement { htmlelement: HTMLElement } -impl HTMLOptGroupElementDerived for EventTarget { - fn is_htmloptgroupelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptGroupElement))) - } -} - impl HTMLOptGroupElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLOptGroupElement { HTMLOptGroupElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLOptGroupElement, localName, prefix, document) + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document) } } diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index e8d655a2a8f..74454c14355 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -7,16 +7,14 @@ use dom::bindings::codegen::Bindings::CharacterDataBinding::CharacterDataMethods use dom::bindings::codegen::Bindings::HTMLOptionElementBinding; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataCast, ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLOptionElementDerived, HTMLScriptElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId, TextDerived}; +use dom::bindings::codegen::InheritTypes::{CharacterDataCast, ElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLScriptElementDerived}; +use dom::bindings::codegen::InheritTypes::{NodeCast, TextDerived}; use dom::bindings::js::Root; use dom::document::Document; use dom::element::{AttributeMutation, Element}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; -use dom::node::Node; +use dom::node::{IN_ENABLED_STATE, Node, NodeFlags}; use dom::virtualmethods::VirtualMethods; use std::cell::Cell; use util::str::{DOMString, split_html_space_chars, str_join}; @@ -32,21 +30,14 @@ pub struct HTMLOptionElement { dirtiness: Cell, } -impl HTMLOptionElementDerived for EventTarget { - fn is_htmloptionelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptionElement))) - } -} - impl HTMLOptionElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLOptionElement { HTMLOptionElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLOptionElement, localName, prefix, document), + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document), selectedness: Cell::new(false), dirtiness: Cell::new(false), } diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs index 1c57dea6761..26c5b9c6bae 100644 --- a/components/script/dom/htmloutputelement.rs +++ b/components/script/dom/htmloutputelement.rs @@ -4,11 +4,8 @@ use dom::bindings::codegen::Bindings::HTMLOutputElementBinding; use dom::bindings::codegen::Bindings::HTMLOutputElementBinding::HTMLOutputElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLOutputElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::node::{Node, window_from_node}; @@ -20,21 +17,13 @@ pub struct HTMLOutputElement { htmlelement: HTMLElement } -impl HTMLOutputElementDerived for EventTarget { - fn is_htmloutputelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOutputElement))) - } -} - impl HTMLOutputElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLOutputElement { HTMLOutputElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLOutputElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs index 2a383b51f5f..c6f867d9cfb 100644 --- a/components/script/dom/htmlparagraphelement.rs +++ b/components/script/dom/htmlparagraphelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLParagraphElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLParagraphElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLParagraphElement { htmlelement: HTMLElement } -impl HTMLParagraphElementDerived for EventTarget { - fn is_htmlparagraphelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLParagraphElement))) - } -} - impl HTMLParagraphElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLParagraphElement { HTMLParagraphElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLParagraphElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs index c2cc044c7f7..4cf7f1b2672 100644 --- a/components/script/dom/htmlparamelement.rs +++ b/components/script/dom/htmlparamelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLParamElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLParamElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLParamElement { htmlelement: HTMLElement } -impl HTMLParamElementDerived for EventTarget { - fn is_htmlparamelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLParamElement))) - } -} - impl HTMLParamElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLParamElement { HTMLParamElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLParamElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs index 57e4943ab5f..71ba4d8d8a1 100644 --- a/components/script/dom/htmlpreelement.rs +++ b/components/script/dom/htmlpreelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLPreElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLPreElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLPreElement { htmlelement: HTMLElement, } -impl HTMLPreElementDerived for EventTarget { - fn is_htmlpreelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLPreElement))) - } -} - impl HTMLPreElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLPreElement { HTMLPreElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLPreElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs index bc0e29cbfcf..7bee428c8f4 100644 --- a/components/script/dom/htmlprogresselement.rs +++ b/components/script/dom/htmlprogresselement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLProgressElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLProgressElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLProgressElement { htmlelement: HTMLElement, } -impl HTMLProgressElementDerived for EventTarget { - fn is_htmlprogresselement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLProgressElement))) - } -} - impl HTMLProgressElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLProgressElement { HTMLProgressElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLProgressElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs index d631ae61525..bc8df25c351 100644 --- a/components/script/dom/htmlquoteelement.rs +++ b/components/script/dom/htmlquoteelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLQuoteElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLQuoteElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLQuoteElement { htmlelement: HTMLElement, } -impl HTMLQuoteElementDerived for EventTarget { - fn is_htmlquoteelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLQuoteElement))) - } -} - impl HTMLQuoteElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLQuoteElement { HTMLQuoteElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLQuoteElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 0718b75658f..3c87e28b2be 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -10,11 +10,8 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::HTMLScriptElementBinding; use dom::bindings::codegen::Bindings::HTMLScriptElementBinding::HTMLScriptElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLScriptElementCast, HTMLScriptElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLScriptElementCast, NodeCast}; use dom::bindings::global::GlobalRef; use dom::bindings::js::RootedReference; use dom::bindings::js::{JS, Root}; @@ -23,7 +20,6 @@ use dom::bindings::trace::JSTraceable; use dom::document::Document; use dom::element::{AttributeMutation, ElementCreator}; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{ChildrenMutation, CloneChildrenFlag, Node}; use dom::node::{document_from_node, window_from_node}; @@ -76,20 +72,12 @@ pub struct HTMLScriptElement { block_character_encoding: DOMRefCell, } -impl HTMLScriptElementDerived for EventTarget { - fn is_htmlscriptelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLScriptElement))) - } -} - impl HTMLScriptElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document, creator: ElementCreator) -> HTMLScriptElement { HTMLScriptElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLScriptElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), already_started: Cell::new(false), parser_inserted: Cell::new(creator == ElementCreator::ParserCreated), non_blocking: Cell::new(creator != ElementCreator::ParserCreated), diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 57a675eb88b..33a46acace1 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -5,19 +5,15 @@ use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLFieldSetElementDerived, HTMLSelectElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLFieldSetElementDerived, NodeCast}; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong; use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement; use dom::bindings::js::Root; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; -use dom::node::{Node, window_from_node}; +use dom::node::{IN_ENABLED_STATE, Node, NodeFlags, window_from_node}; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use std::borrow::ToOwned; @@ -29,14 +25,6 @@ pub struct HTMLSelectElement { htmlelement: HTMLElement } -impl HTMLSelectElementDerived for EventTarget { - fn is_htmlselectelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSelectElement))) - } -} - static DEFAULT_SELECT_SIZE: u32 = 0; impl HTMLSelectElement { @@ -45,7 +33,8 @@ impl HTMLSelectElement { document: &Document) -> HTMLSelectElement { HTMLSelectElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLSelectElement, localName, prefix, document) + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document) } } diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs index bab0df2514a..b28d82f32ec 100644 --- a/components/script/dom/htmlsourceelement.rs +++ b/components/script/dom/htmlsourceelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLSourceElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLSourceElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLSourceElement { htmlelement: HTMLElement } -impl HTMLSourceElementDerived for EventTarget { - fn is_htmlsourceelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSourceElement))) - } -} - impl HTMLSourceElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLSourceElement { HTMLSourceElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLSourceElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs index 729ef747af5..7f5d80361cb 100644 --- a/components/script/dom/htmlspanelement.rs +++ b/components/script/dom/htmlspanelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLSpanElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLSpanElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLSpanElement { htmlelement: HTMLElement } -impl HTMLSpanElementDerived for EventTarget { - fn is_htmlspanelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSpanElement))) - } -} - impl HTMLSpanElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLSpanElement { HTMLSpanElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLSpanElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 7b41b156f99..e26a59976e0 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -5,13 +5,9 @@ use cssparser::Parser as CssParser; use dom::bindings::codegen::Bindings::HTMLStyleElementBinding; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLStyleElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, NodeCast}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{ChildrenMutation, Node, window_from_node}; use dom::virtualmethods::VirtualMethods; @@ -25,20 +21,12 @@ pub struct HTMLStyleElement { htmlelement: HTMLElement, } -impl HTMLStyleElementDerived for EventTarget { - fn is_htmlstyleelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLStyleElement))) - } -} - impl HTMLStyleElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLStyleElement { HTMLStyleElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLStyleElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs index 4db67a16b9d..7b43fe0aece 100644 --- a/components/script/dom/htmltablecaptionelement.rs +++ b/components/script/dom/htmltablecaptionelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTableCaptionElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTableCaptionElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLTableCaptionElement { htmlelement: HTMLElement } -impl HTMLTableCaptionElementDerived for EventTarget { - fn is_htmltablecaptionelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCaptionElement))) - } -} - impl HTMLTableCaptionElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableCaptionElement { HTMLTableCaptionElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableCaptionElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 98b41bde6b6..1991d3ab3e8 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -6,14 +6,11 @@ use cssparser::RGBA; use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLTableCellElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableCellElementTypeId, HTMLTableRowElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCellElementDerived}; +use dom::bindings::codegen::InheritTypes::{HTMLTableRowElementDerived, NodeCast}; use dom::bindings::js::LayoutJS; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::virtualmethods::VirtualMethods; use std::cell::Cell; @@ -31,25 +28,13 @@ pub struct HTMLTableCellElement { width: Cell, } -impl HTMLTableCellElementDerived for EventTarget { - fn is_htmltablecellelement(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_)))) => true, - _ => false - } - } -} - impl HTMLTableCellElement { - pub fn new_inherited(type_id: HTMLTableCellElementTypeId, - tag_name: DOMString, + pub fn new_inherited(tag_name: DOMString, prefix: Option, document: &Document) -> HTMLTableCellElement { HTMLTableCellElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableCellElement(type_id), - tag_name, prefix, document), + htmlelement: HTMLElement::new_inherited(tag_name, prefix, document), background_color: Cell::new(None), colspan: Cell::new(None), width: Cell::new(LengthOrPercentageOrAuto::Auto), diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs index be5bef59513..25ca4ed8111 100644 --- a/components/script/dom/htmltablecolelement.rs +++ b/components/script/dom/htmltablecolelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTableColElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTableColElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLTableColElement { htmlelement: HTMLElement, } -impl HTMLTableColElementDerived for EventTarget { - fn is_htmltablecolelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableColElement))) - } -} - impl HTMLTableColElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableColElement { HTMLTableColElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableColElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltabledatacellelement.rs b/components/script/dom/htmltabledatacellelement.rs index 46f0a4a96a3..304af9dd844 100644 --- a/components/script/dom/htmltabledatacellelement.rs +++ b/components/script/dom/htmltabledatacellelement.rs @@ -3,12 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTableDataCellElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLTableDataCellElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableCellElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmltablecellelement::HTMLTableCellElement; use dom::node::Node; use util::str::DOMString; @@ -18,23 +14,13 @@ pub struct HTMLTableDataCellElement { htmltablecellelement: HTMLTableCellElement, } -impl HTMLTableDataCellElementDerived for EventTarget { - fn is_htmltabledatacellelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element( - ElementTypeId::HTMLElement( - HTMLElementTypeId::HTMLTableCellElement( - HTMLTableCellElementTypeId::HTMLTableDataCellElement)))) - } -} - impl HTMLTableDataCellElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableDataCellElement { HTMLTableDataCellElement { htmltablecellelement: - HTMLTableCellElement::new_inherited( - HTMLTableCellElementTypeId::HTMLTableDataCellElement, localName, prefix, document) + HTMLTableCellElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 607f3a8ecc9..41568a55f10 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -7,14 +7,12 @@ use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLTableElementBinding; use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTableCaptionElementCast, HTMLTableElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableSectionElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::ElementCast; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableCaptionElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLTableSectionElementDerived, NodeCast}; use dom::bindings::js::{Root, RootedReference}; use dom::document::Document; use dom::element::AttributeMutation; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmltablecaptionelement::HTMLTableCaptionElement; use dom::htmltablesectionelement::HTMLTableSectionElement; @@ -33,22 +31,11 @@ pub struct HTMLTableElement { width: Cell, } -impl HTMLTableElementDerived for EventTarget { - fn is_htmltableelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableElement))) - } -} - impl HTMLTableElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableElement { HTMLTableElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableElement, - localName, - prefix, - document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), background_color: Cell::new(None), border: Cell::new(None), cellspacing: Cell::new(None), diff --git a/components/script/dom/htmltableheadercellelement.rs b/components/script/dom/htmltableheadercellelement.rs index ff16385d3e5..10803eadf14 100644 --- a/components/script/dom/htmltableheadercellelement.rs +++ b/components/script/dom/htmltableheadercellelement.rs @@ -3,12 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTableHeaderCellElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLTableHeaderCellElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableCellElementTypeId, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmltablecellelement::HTMLTableCellElement; use dom::node::Node; use util::str::DOMString; @@ -18,22 +14,13 @@ pub struct HTMLTableHeaderCellElement { htmltablecellelement: HTMLTableCellElement, } -impl HTMLTableHeaderCellElementDerived for EventTarget { - fn is_htmltableheadercellelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element( - ElementTypeId::HTMLElement( - HTMLElementTypeId::HTMLTableCellElement( - HTMLTableCellElementTypeId::HTMLTableHeaderCellElement)))) - } -} - impl HTMLTableHeaderCellElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableHeaderCellElement { HTMLTableHeaderCellElement { - htmltablecellelement: HTMLTableCellElement::new_inherited( - HTMLTableCellElementTypeId::HTMLTableHeaderCellElement, localName, prefix, document) + htmltablecellelement: + HTMLTableCellElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 844220f6e0e..a485048b240 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -6,14 +6,11 @@ use cssparser::RGBA; use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLTableRowElementBinding::{self, HTMLTableRowElementMethods}; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLTableDataCellElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableHeaderCellElementDerived, HTMLTableRowElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTableDataCellElementDerived}; +use dom::bindings::codegen::InheritTypes::{HTMLTableHeaderCellElementDerived, NodeCast}; use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference}; use dom::document::Document; use dom::element::{AttributeMutation, Element}; -use dom::eventtarget::EventTarget; use dom::htmlcollection::{CollectionFilter, HTMLCollection}; use dom::htmlelement::HTMLElement; use dom::node::{Node, window_from_node}; @@ -38,22 +35,11 @@ pub struct HTMLTableRowElement { background_color: Cell>, } -impl HTMLTableRowElementDerived for EventTarget { - fn is_htmltablerowelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableRowElement))) - } -} - impl HTMLTableRowElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableRowElement { HTMLTableRowElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableRowElement, - localName, - prefix, - document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), cells: Default::default(), background_color: Cell::new(None), } diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index bfe00f54000..a384afcaae7 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -7,15 +7,13 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMethods; use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::{self, HTMLTableSectionElementMethods}; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId, HTMLTableRowElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTableSectionElementDerived, NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{HTMLTableRowElementDerived, NodeCast}; use dom::bindings::error::Error; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::js::{Root, RootedReference}; use dom::document::Document; use dom::element::{AttributeMutation, Element}; -use dom::eventtarget::EventTarget; use dom::htmlcollection::{CollectionFilter, HTMLCollection}; use dom::htmlelement::HTMLElement; use dom::htmltablerowelement::HTMLTableRowElement; @@ -31,22 +29,11 @@ pub struct HTMLTableSectionElement { background_color: Cell>, } -impl HTMLTableSectionElementDerived for EventTarget { - fn is_htmltablesectionelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableSectionElement))) - } -} - impl HTMLTableSectionElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTableSectionElement { HTMLTableSectionElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableSectionElement, - localName, - prefix, - document), + htmlelement: HTMLElement::new_inherited(localName, prefix, document), background_color: Cell::new(None), } } diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs index e965d87c6fa..a7c7be5944d 100644 --- a/components/script/dom/htmltemplateelement.rs +++ b/components/script/dom/htmltemplateelement.rs @@ -6,14 +6,10 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding; use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTemplateElementCast, HTMLTemplateElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTemplateElementCast, NodeCast}; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::document::Document; use dom::documentfragment::DocumentFragment; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{CloneChildrenFlag, Node, document_from_node}; use dom::virtualmethods::VirtualMethods; @@ -27,21 +23,13 @@ pub struct HTMLTemplateElement { contents: MutNullableHeap>, } -impl HTMLTemplateElementDerived for EventTarget { - fn is_htmltemplateelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTemplateElement))) - } -} - impl HTMLTemplateElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTemplateElement { HTMLTemplateElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLTemplateElement, localName, prefix, document), + HTMLElement::new_inherited(localName, prefix, document), contents: MutNullableHeap::new(None), } } diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 522c88d3063..19cd81e6519 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -8,23 +8,20 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding; use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId, EventTargetCast}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFieldSetElementDerived}; -use dom::bindings::codegen::InheritTypes::{HTMLTextAreaElementDerived, KeyboardEventCast}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast}; +use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLFieldSetElementDerived}; +use dom::bindings::codegen::InheritTypes::{KeyboardEventCast, NodeCast}; use dom::bindings::global::GlobalRef; use dom::bindings::js::{LayoutJS, Root}; use dom::bindings::refcounted::Trusted; use dom::document::Document; use dom::element::AttributeMutation; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::keyboardevent::KeyboardEvent; -use dom::node::{ChildrenMutation, Node, NodeDamage}; -use dom::node::{document_from_node, window_from_node}; +use dom::node::{ChildrenMutation, IN_ENABLED_STATE, Node, NodeDamage}; +use dom::node::{NodeFlags, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use msg::constellation_msg::ConstellationChan; use script_task::ScriptTaskEventCategory::InputEvent; @@ -46,14 +43,6 @@ pub struct HTMLTextAreaElement { value_changed: Cell, } -impl HTMLTextAreaElementDerived for EventTarget { - fn is_htmltextareaelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement))) - } -} - pub trait LayoutHTMLTextAreaElementHelpers { #[allow(unsafe_code)] unsafe fn get_value_for_layout(self) -> String; @@ -98,7 +87,8 @@ impl HTMLTextAreaElement { let chan = document.window().r().constellation_chan(); HTMLTextAreaElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLTextAreaElement, localName, prefix, document), + HTMLElement::new_inherited_with_flags(NodeFlags::new() | IN_ENABLED_STATE, + localName, prefix, document), textinput: DOMRefCell::new(TextInput::new(Lines::Multiple, "".to_owned(), chan)), cols: Cell::new(DEFAULT_COLS), rows: Cell::new(DEFAULT_ROWS), diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs index dcc95de29f4..93434c45685 100644 --- a/components/script/dom/htmltimeelement.rs +++ b/components/script/dom/htmltimeelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTimeElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTimeElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLTimeElement { htmlelement: HTMLElement } -impl HTMLTimeElementDerived for EventTarget { - fn is_htmltimeelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTimeElement))) - } -} - impl HTMLTimeElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTimeElement { HTMLTimeElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTimeElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index 6740ff92904..06c8c356f6f 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -5,13 +5,10 @@ use dom::bindings::codegen::Bindings::HTMLTitleElementBinding; use dom::bindings::codegen::Bindings::HTMLTitleElementBinding::HTMLTitleElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataCast, ElementTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, HTMLElementCast}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLTitleElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId, TextCast}; +use dom::bindings::codegen::InheritTypes::{CharacterDataCast, HTMLElementCast}; +use dom::bindings::codegen::InheritTypes::{NodeCast, TextCast}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{ChildrenMutation, Node}; use dom::text::Text; @@ -23,18 +20,10 @@ pub struct HTMLTitleElement { htmlelement: HTMLElement, } -impl HTMLTitleElementDerived for EventTarget { - fn is_htmltitleelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTitleElement))) - } -} - impl HTMLTitleElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTitleElement { HTMLTitleElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTitleElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs index 4de20a0abed..32522c18b8e 100644 --- a/components/script/dom/htmltrackelement.rs +++ b/components/script/dom/htmltrackelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLTrackElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLTrackElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLTrackElement { htmlelement: HTMLElement, } -impl HTMLTrackElementDerived for EventTarget { - fn is_htmltrackelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node( - NodeTypeId::Element( - ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTrackElement))) - } -} - impl HTMLTrackElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLTrackElement { HTMLTrackElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTrackElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs index ea3e57d35ec..ccbeb9fe2b3 100644 --- a/components/script/dom/htmlulistelement.rs +++ b/components/script/dom/htmlulistelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLUListElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLUListElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,18 +14,10 @@ pub struct HTMLUListElement { htmlelement: HTMLElement } -impl HTMLUListElementDerived for EventTarget { - fn is_htmlulistelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLUListElement))) - } -} - impl HTMLUListElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLUListElement { HTMLUListElement { - htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLUListElement, localName, prefix, document) + htmlelement: HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs index 7e4067f3555..e402048cc58 100644 --- a/components/script/dom/htmlunknownelement.rs +++ b/components/script/dom/htmlunknownelement.rs @@ -3,11 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLUnknownElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId, HTMLElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLUnknownElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::Node; use util::str::DOMString; @@ -17,21 +14,13 @@ pub struct HTMLUnknownElement { htmlelement: HTMLElement } -impl HTMLUnknownElementDerived for EventTarget { - fn is_htmlunknownelement(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node( - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLUnknownElement))) - } -} - impl HTMLUnknownElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLUnknownElement { HTMLUnknownElement { htmlelement: - HTMLElement::new_inherited(HTMLElementTypeId::HTMLUnknownElement, localName, prefix, document) + HTMLElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index 20de1a7df35..6ca2028161a 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -3,12 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLVideoElementBinding; -use dom::bindings::codegen::InheritTypes::{ElementTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLMediaElementTypeId}; -use dom::bindings::codegen::InheritTypes::{HTMLVideoElementDerived, NodeTypeId}; use dom::bindings::js::Root; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::htmlmediaelement::HTMLMediaElement; use dom::node::Node; use util::str::DOMString; @@ -18,20 +14,11 @@ pub struct HTMLVideoElement { htmlmediaelement: HTMLMediaElement } -impl HTMLVideoElementDerived for EventTarget { - fn is_htmlvideoelement(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element( - ElementTypeId::HTMLElement( - HTMLElementTypeId::HTMLMediaElement( - HTMLMediaElementTypeId::HTMLVideoElement)))) - } -} - impl HTMLVideoElement { fn new_inherited(localName: DOMString, prefix: Option, document: &Document) -> HTMLVideoElement { HTMLVideoElement { htmlmediaelement: - HTMLMediaElement::new_inherited(HTMLMediaElementTypeId::HTMLVideoElement, localName, prefix, document) + HTMLMediaElement::new_inherited(localName, prefix, document) } } diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs index c56276ecc8a..405c3813ea2 100644 --- a/components/script/dom/keyboardevent.rs +++ b/components/script/dom/keyboardevent.rs @@ -5,13 +5,11 @@ use dom::bindings::codegen::Bindings::KeyboardEventBinding; use dom::bindings::codegen::Bindings::KeyboardEventBinding::{KeyboardEventConstants, KeyboardEventMethods}; use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, KeyboardEventDerived}; -use dom::bindings::codegen::InheritTypes::{UIEventCast, UIEventTypeId}; +use dom::bindings::codegen::InheritTypes::{EventCast, UIEventCast}; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{Root, RootedReference}; use dom::bindings::utils::{Reflectable, reflect_dom_object}; -use dom::event::Event; use dom::uievent::UIEvent; use dom::window::Window; use msg::constellation_msg; @@ -40,12 +38,6 @@ pub struct KeyboardEvent { key_code: Cell, } -impl KeyboardEventDerived for Event { - fn is_keyboardevent(&self) -> bool { - *self.type_id() == EventTypeId::UIEvent(UIEventTypeId::KeyboardEvent) - } -} - impl KeyboardEvent { fn new_inherited() -> KeyboardEvent { KeyboardEvent { diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index f9487f6431e..96a507723c8 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -5,7 +5,7 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::MessageEventBinding; use dom::bindings::codegen::Bindings::MessageEventBinding::MessageEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, MessageEventDerived}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; @@ -26,12 +26,6 @@ pub struct MessageEvent { lastEventId: DOMString, } -impl MessageEventDerived for Event { - fn is_messageevent(&self) -> bool { - *self.type_id() == EventTypeId::MessageEvent - } -} - impl MessageEvent { pub fn new_uninitialized(global: GlobalRef) -> Root { MessageEvent::new_initialized(global, HandleValue::undefined(), "".to_owned(), "".to_owned()) diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 7346482598f..5f05fc97b77 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -5,8 +5,7 @@ use dom::bindings::codegen::Bindings::MouseEventBinding; use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods; use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, UIEventCast}; -use dom::bindings::codegen::InheritTypes::{UIEventTypeId, MouseEventDerived}; +use dom::bindings::codegen::InheritTypes::{EventCast, UIEventCast}; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference}; @@ -35,12 +34,6 @@ pub struct MouseEvent { related_target: MutNullableHeap>, } -impl MouseEventDerived for Event { - fn is_mouseevent(&self) -> bool { - *self.type_id() == EventTypeId::UIEvent(UIEventTypeId::MouseEvent) - } -} - impl MouseEvent { fn new_inherited() -> MouseEvent { MouseEvent { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 19a4cdafecf..2f9762cd4de 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -24,7 +24,7 @@ use dom::bindings::codegen::InheritTypes::{ElementCast, ElementDerived, ElementT use dom::bindings::codegen::InheritTypes::{EventTargetCast, EventTargetTypeId}; use dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, HTMLFieldSetElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLLegendElementDerived, HTMLOptGroupElementDerived}; -use dom::bindings::codegen::InheritTypes::{NodeBase, NodeCast, NodeDerived, NodeTypeId}; +use dom::bindings::codegen::InheritTypes::{NodeBase, NodeCast, NodeTypeId}; use dom::bindings::codegen::InheritTypes::{ProcessingInstructionCast, TextCast, TextDerived}; use dom::bindings::codegen::UnionTypes::NodeOrString; use dom::bindings::conversions; @@ -122,15 +122,6 @@ impl PartialEq for Node { } } -impl NodeDerived for EventTarget { - fn is_node(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::Node(_) => true, - _ => false - } - } -} - bitflags! { #[doc = "Flags for node items."] #[derive(JSTraceable, HeapSizeOf)] @@ -172,22 +163,8 @@ bitflags! { } impl NodeFlags { - pub fn new(type_id: NodeTypeId) -> NodeFlags { - let dirty = HAS_CHANGED | IS_DIRTY | HAS_DIRTY_SIBLINGS | HAS_DIRTY_DESCENDANTS; - match type_id { - NodeTypeId::Document => IS_IN_DOC | dirty, - // The following elements are enabled by default. - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLButtonElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSelectElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptGroupElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptionElement)) | - //NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMenuItemElement)) | - NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFieldSetElement)) => - IN_ENABLED_STATE | dirty, - _ => dirty, - } + pub fn new() -> NodeFlags { + HAS_CHANGED | IS_DIRTY | HAS_DIRTY_SIBLINGS | HAS_DIRTY_DESCENDANTS } } @@ -1367,15 +1344,19 @@ impl Node { reflect_dom_object(node, GlobalRef::Window(window.r()), wrap_fn) } - pub fn new_inherited(type_id: NodeTypeId, doc: &Document) -> Node { - Node::new_(type_id, Some(doc.clone())) + pub fn new_inherited(doc: &Document) -> Node { + Node::new_inherited_with_flags(NodeFlags::new(), doc) } - pub fn new_without_doc(type_id: NodeTypeId) -> Node { - Node::new_(type_id, None) + pub fn new_inherited_with_flags(flags: NodeFlags, doc: &Document) -> Node { + Node::new_(flags, Some(doc)) } - fn new_(type_id: NodeTypeId, doc: Option<&Document>) -> Node { + pub fn new_document_node() -> Node { + Node::new_(NodeFlags::new() | IS_IN_DOC, None) + } + + fn new_(flags: NodeFlags, doc: Option<&Document>) -> Node { Node { eventtarget: EventTarget::new_inherited(), @@ -1387,7 +1368,7 @@ impl Node { owner_doc: MutNullableHeap::new(doc.map(JS::from_ref)), child_list: Default::default(), children_count: Cell::new(0u32), - flags: Cell::new(NodeFlags::new(type_id)), + flags: Cell::new(flags), layout_data: LayoutDataRef::new(), diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs index 6610352dda1..6f26a4ca0fa 100644 --- a/components/script/dom/processinginstruction.rs +++ b/components/script/dom/processinginstruction.rs @@ -4,12 +4,9 @@ use dom::bindings::codegen::Bindings::ProcessingInstructionBinding; use dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataTypeId, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{NodeTypeId, ProcessingInstructionDerived}; use dom::bindings::js::Root; use dom::characterdata::CharacterData; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::node::Node; use util::str::DOMString; @@ -20,17 +17,10 @@ pub struct ProcessingInstruction { target: DOMString, } -impl ProcessingInstructionDerived for EventTarget { - fn is_processinginstruction(&self) -> bool { - *self.type_id() == - EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction)) - } -} - impl ProcessingInstruction { fn new_inherited(target: DOMString, data: DOMString, document: &Document) -> ProcessingInstruction { ProcessingInstruction { - characterdata: CharacterData::new_inherited(CharacterDataTypeId::ProcessingInstruction, data, document), + characterdata: CharacterData::new_inherited(data, document), target: target } } diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs index 529fc85a26e..4a9d400f57a 100644 --- a/components/script/dom/progressevent.rs +++ b/components/script/dom/progressevent.rs @@ -5,7 +5,7 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::ProgressEventBinding; use dom::bindings::codegen::Bindings::ProgressEventBinding::ProgressEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, ProgressEventDerived}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; @@ -21,12 +21,6 @@ pub struct ProgressEvent { total: u64 } -impl ProgressEventDerived for Event { - fn is_progressevent(&self) -> bool { - *self.type_id() == EventTypeId::ProgressEvent - } -} - impl ProgressEvent { fn new_inherited(length_computable: bool, loaded: u64, total: u64) -> ProgressEvent { ProgressEvent { diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index 264eaf48816..fdc41895f39 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -7,16 +7,13 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::codegen::Bindings::TextBinding::{self, TextMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; -use dom::bindings::codegen::InheritTypes::{CharacterDataCast, CharacterDataTypeId}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, NodeCast}; -use dom::bindings::codegen::InheritTypes::{NodeTypeId, TextDerived}; +use dom::bindings::codegen::InheritTypes::{CharacterDataCast, NodeCast, TextDerived}; use dom::bindings::error::{Error, Fallible}; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; use dom::bindings::js::{RootedReference}; use dom::characterdata::CharacterData; use dom::document::Document; -use dom::eventtarget::EventTarget; use dom::node::Node; use util::str::DOMString; @@ -26,16 +23,10 @@ pub struct Text { characterdata: CharacterData, } -impl TextDerived for EventTarget { - fn is_text(&self) -> bool { - *self.type_id() == EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::Text)) - } -} - impl Text { fn new_inherited(text: DOMString, document: &Document) -> Text { Text { - characterdata: CharacterData::new_inherited(CharacterDataTypeId::Text, text, document) + characterdata: CharacterData::new_inherited(text, document) } } diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs index 7ae21211616..a28783bc6e4 100644 --- a/components/script/dom/uievent.rs +++ b/components/script/dom/uievent.rs @@ -5,7 +5,7 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::UIEventBinding; use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, UIEventDerived}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; @@ -25,15 +25,6 @@ pub struct UIEvent { detail: Cell } -impl UIEventDerived for Event { - fn is_uievent(&self) -> bool { - match *self.type_id() { - EventTypeId::UIEvent(_) => true, - _ => false - } - } -} - impl UIEvent { pub fn new_inherited() -> UIEvent { UIEvent { diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs index 52e3d4cdb3d..1bba8849eb4 100644 --- a/components/script/dom/webglcontextevent.rs +++ b/components/script/dom/webglcontextevent.rs @@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::WebGLContextEventBinding; use dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLContextEventInit; use dom::bindings::codegen::Bindings::WebGLContextEventBinding::WebGLContextEventMethods; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTypeId, WebGLContextEventDerived}; +use dom::bindings::codegen::InheritTypes::EventCast; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{Root, RootedReference}; @@ -27,12 +27,6 @@ impl WebGLContextEventMethods for WebGLContextEvent { } } -impl WebGLContextEventDerived for Event { - fn is_webglcontextevent(&self) -> bool { - *self.type_id() == EventTypeId::WebGLContextEvent - } -} - impl WebGLContextEvent { pub fn new_inherited(status_message: DOMString) -> WebGLContextEvent { WebGLContextEvent { diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 81b2900c19a..4ada66c36cc 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -11,8 +11,7 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::{EventHandlerNonNull, use dom::bindings::codegen::Bindings::FunctionBinding::Function; use dom::bindings::codegen::Bindings::WindowBinding::{ScrollBehavior, ScrollToOptions}; use dom::bindings::codegen::Bindings::WindowBinding::{self, FrameRequestCallback, WindowMethods}; -use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast}; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, NodeCast, WindowDerived}; +use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, NodeCast}; use dom::bindings::error::{Error, Fallible, report_pending_exception}; use dom::bindings::global::GlobalRef; use dom::bindings::global::global_object_for_js_object; @@ -1385,9 +1384,3 @@ fn debug_reflow_events(goal: &ReflowGoal, query_type: &ReflowQueryType, reason: println!("{}", debug_msg); } - -impl WindowDerived for EventTarget { - fn is_window(&self) -> bool { - self.type_id() == &EventTargetTypeId::Window - } -} diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index fb9a53ee5e8..a98d3a2f818 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -10,8 +10,7 @@ use dom::bindings::codegen::Bindings::XMLHttpRequestBinding; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestMethods; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType::{Json, Text, _empty}; -use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast, EventTargetTypeId}; -use dom::bindings::codegen::InheritTypes::{XMLHttpRequestDerived, XMLHttpRequestEventTargetTypeId}; +use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast}; use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams; use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLSearchParams}; use dom::bindings::conversions::ToJSValConvertible; @@ -24,7 +23,6 @@ use dom::bindings::str::ByteString; use dom::bindings::utils::{Reflectable, reflect_dom_object}; use dom::document::Document; use dom::event::{Event, EventBubbles, EventCancelable}; -use dom::eventtarget::EventTarget; use dom::progressevent::ProgressEvent; use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; use dom::xmlhttprequestupload::XMLHttpRequestUpload; @@ -728,16 +726,6 @@ impl XMLHttpRequestMethods for XMLHttpRequest { } } - -impl XMLHttpRequestDerived for EventTarget { - fn is_xmlhttprequest(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::XMLHttpRequestEventTarget(XMLHttpRequestEventTargetTypeId::XMLHttpRequest) => true, - _ => false - } - } -} - pub type TrustedXHRAddress = Trusted; diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs index 257e4392132..aa0604448cd 100644 --- a/components/script/dom/xmlhttprequesteventtarget.rs +++ b/components/script/dom/xmlhttprequesteventtarget.rs @@ -5,7 +5,6 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::XMLHttpRequestEventTargetBinding::XMLHttpRequestEventTargetMethods; use dom::bindings::codegen::InheritTypes::EventTargetCast; -use dom::bindings::codegen::InheritTypes::{EventTargetTypeId, XMLHttpRequestEventTargetDerived}; use dom::eventtarget::EventTarget; #[dom_struct] @@ -21,16 +20,6 @@ impl XMLHttpRequestEventTarget { } } -impl XMLHttpRequestEventTargetDerived for EventTarget { - fn is_xmlhttprequesteventtarget(&self) -> bool { - match *self.type_id() { - EventTargetTypeId::XMLHttpRequestEventTarget(_) => true, - _ => false - } - } - -} - impl XMLHttpRequestEventTargetMethods for XMLHttpRequestEventTarget { // https://xhr.spec.whatwg.org/#handler-xhr-onloadstart event_handler!(loadstart, GetOnloadstart, SetOnloadstart); diff --git a/components/script/dom/xmlhttprequestupload.rs b/components/script/dom/xmlhttprequestupload.rs index 2456d1079a5..e426c63c30c 100644 --- a/components/script/dom/xmlhttprequestupload.rs +++ b/components/script/dom/xmlhttprequestupload.rs @@ -3,13 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::XMLHttpRequestUploadBinding; -use dom::bindings::codegen::InheritTypes::EventTargetTypeId; -use dom::bindings::codegen::InheritTypes::XMLHttpRequestEventTargetTypeId; -use dom::bindings::codegen::InheritTypes::XMLHttpRequestUploadDerived; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; use dom::bindings::utils::reflect_dom_object; -use dom::eventtarget::EventTarget; use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; #[dom_struct] @@ -29,10 +25,3 @@ impl XMLHttpRequestUpload { XMLHttpRequestUploadBinding::Wrap) } } - -impl XMLHttpRequestUploadDerived for EventTarget { - fn is_xmlhttprequestupload(&self) -> bool { - *self.type_id() == - EventTargetTypeId::XMLHttpRequestEventTarget(XMLHttpRequestEventTargetTypeId::XMLHttpRequestUpload) - } -}