mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Fix inheritance enums for htmlmediaelement and htmltablecellelement
This commit is contained in:
parent
f85b9e37cc
commit
5031096853
9 changed files with 60 additions and 32 deletions
|
@ -46,8 +46,8 @@ use wrapper::{PostorderNodeMutTraversal, PseudoElementType, TLayoutNode, ThreadS
|
|||
use gfx::display_list::OpaqueNode;
|
||||
use script::dom::element::ElementTypeId;
|
||||
use script::dom::htmlelement::HTMLElementTypeId;
|
||||
use script::dom::node::NodeTypeId;
|
||||
use script::dom::htmlobjectelement::is_image_data;
|
||||
use script::dom::node::NodeTypeId;
|
||||
use servo_util::opts;
|
||||
use std::collections::DList;
|
||||
use std::mem;
|
||||
|
@ -268,8 +268,7 @@ impl<'a> FlowConstructor<'a> {
|
|||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableColElement))) => {
|
||||
SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node))
|
||||
}
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableDataCellElement))) |
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableHeaderCellElement))) => SpecificFragmentInfo::TableCell,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_)))) => SpecificFragmentInfo::TableCell,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableRowElement))) |
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableSectionElement))) => SpecificFragmentInfo::TableRow,
|
||||
Some(NodeTypeId::Text) => SpecificFragmentInfo::UnscannedText(UnscannedTextFragmentInfo::new(node)),
|
||||
|
|
|
@ -8,8 +8,8 @@ use dom::bindings::js::{JSRef, Temporary};
|
|||
use dom::document::Document;
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::htmlmediaelement::HTMLMediaElement;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
use dom::htmlmediaelement::{HTMLMediaElement, HTMLMediaElementTypeId};
|
||||
use dom::node::{Node, NodeTypeId};
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
|
@ -20,14 +20,17 @@ pub struct HTMLAudioElement {
|
|||
|
||||
impl HTMLAudioElementDerived for EventTarget {
|
||||
fn is_htmlaudioelement(&self) -> bool {
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAudioElement)))
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(
|
||||
ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLMediaElement(
|
||||
HTMLMediaElementTypeId::HTMLAudioElement))))
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLAudioElement {
|
||||
fn new_inherited(localName: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLAudioElement {
|
||||
HTMLAudioElement {
|
||||
htmlmediaelement: HTMLMediaElement::new_inherited(HTMLElementTypeId::HTMLAudioElement, localName, prefix, document)
|
||||
htmlmediaelement: HTMLMediaElement::new_inherited(HTMLMediaElementTypeId::HTMLAudioElement, localName, prefix, document)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@ use dom::document::Document;
|
|||
use dom::domstringmap::DOMStringMap;
|
||||
use dom::element::{Element, ElementTypeId, ActivationElementHelpers, AttributeHandlers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
|
||||
use dom::htmlmediaelement::HTMLMediaElementTypeId;
|
||||
use dom::htmltablecellelement::HTMLTableCellElementTypeId;
|
||||
use dom::node::{Node, NodeTypeId, window_from_node};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
|
||||
|
@ -210,7 +212,6 @@ pub enum HTMLElementTypeId {
|
|||
HTMLAnchorElement,
|
||||
HTMLAppletElement,
|
||||
HTMLAreaElement,
|
||||
HTMLAudioElement,
|
||||
HTMLBaseElement,
|
||||
HTMLBRElement,
|
||||
HTMLBodyElement,
|
||||
|
@ -239,7 +240,7 @@ pub enum HTMLElementTypeId {
|
|||
HTMLLinkElement,
|
||||
HTMLLIElement,
|
||||
HTMLMapElement,
|
||||
HTMLMediaElement,
|
||||
HTMLMediaElement(HTMLMediaElementTypeId),
|
||||
HTMLMetaElement,
|
||||
HTMLMeterElement,
|
||||
HTMLModElement,
|
||||
|
@ -260,8 +261,7 @@ pub enum HTMLElementTypeId {
|
|||
HTMLStyleElement,
|
||||
HTMLTableElement,
|
||||
HTMLTableCaptionElement,
|
||||
HTMLTableDataCellElement,
|
||||
HTMLTableHeaderCellElement,
|
||||
HTMLTableCellElement(HTMLTableCellElementTypeId),
|
||||
HTMLTableColElement,
|
||||
HTMLTableRowElement,
|
||||
HTMLTableSectionElement,
|
||||
|
@ -271,7 +271,6 @@ pub enum HTMLElementTypeId {
|
|||
HTMLTitleElement,
|
||||
HTMLTrackElement,
|
||||
HTMLUListElement,
|
||||
HTMLVideoElement,
|
||||
HTMLUnknownElement,
|
||||
}
|
||||
|
||||
|
|
|
@ -19,17 +19,16 @@ pub struct HTMLMediaElement {
|
|||
impl HTMLMediaElementDerived for EventTarget {
|
||||
fn is_htmlmediaelement(&self) -> bool {
|
||||
match *self.type_id() {
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLVideoElement))) |
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAudioElement))) => true,
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMediaElement(_)))) => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLMediaElement {
|
||||
pub fn new_inherited(type_id: HTMLElementTypeId, tag_name: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLMediaElement {
|
||||
pub fn new_inherited(type_id: HTMLMediaElementTypeId, tag_name: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLMediaElement {
|
||||
HTMLMediaElement {
|
||||
htmlelement: HTMLElement::new_inherited(type_id, tag_name, prefix, document)
|
||||
htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLMediaElement(type_id), tag_name, prefix, document)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,3 +38,10 @@ impl HTMLMediaElement {
|
|||
}
|
||||
}
|
||||
|
||||
#[deriving(PartialEq, Show)]
|
||||
#[jstraceable]
|
||||
pub enum HTMLMediaElementTypeId {
|
||||
HTMLAudioElement,
|
||||
HTMLVideoElement,
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,13 @@ use cssparser::RGBA;
|
|||
use servo_util::str::{mod, DOMString, LengthOrPercentageOrAuto};
|
||||
use std::cell::Cell;
|
||||
|
||||
#[deriving(PartialEq, Show)]
|
||||
#[jstraceable]
|
||||
pub enum HTMLTableCellElementTypeId {
|
||||
HTMLTableDataCellElement,
|
||||
HTMLTableHeaderCellElement,
|
||||
}
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLTableCellElement {
|
||||
htmlelement: HTMLElement,
|
||||
|
@ -27,21 +34,20 @@ pub struct HTMLTableCellElement {
|
|||
impl HTMLTableCellElementDerived for EventTarget {
|
||||
fn is_htmltablecellelement(&self) -> bool {
|
||||
match *self.type_id() {
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableDataCellElement))) |
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableHeaderCellElement))) => true,
|
||||
EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_)))) => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLTableCellElement {
|
||||
pub fn new_inherited(type_id: HTMLElementTypeId,
|
||||
pub fn new_inherited(type_id: HTMLTableCellElementTypeId,
|
||||
tag_name: DOMString,
|
||||
prefix: Option<DOMString>,
|
||||
document: JSRef<Document>)
|
||||
-> HTMLTableCellElement {
|
||||
HTMLTableCellElement {
|
||||
htmlelement: HTMLElement::new_inherited(type_id, tag_name, prefix, document),
|
||||
htmlelement: HTMLElement::new_inherited(HTMLElementTypeId::HTMLTableCellElement(type_id), tag_name, prefix, document),
|
||||
background_color: Cell::new(None),
|
||||
colspan: Cell::new(None),
|
||||
width: Cell::new(LengthOrPercentageOrAuto::Auto),
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::document::Document;
|
|||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||
use dom::htmltablecellelement::{HTMLTableCellElement, HTMLTableCellElementTypeId};
|
||||
use dom::node::{Node, NodeTypeId};
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
|
@ -20,14 +20,18 @@ pub struct HTMLTableDataCellElement {
|
|||
|
||||
impl HTMLTableDataCellElementDerived for EventTarget {
|
||||
fn is_htmltabledatacellelement(&self) -> bool {
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableDataCellElement)))
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(
|
||||
ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLTableCellElement(
|
||||
HTMLTableCellElementTypeId::HTMLTableDataCellElement))))
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLTableDataCellElement {
|
||||
fn new_inherited(localName: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLTableDataCellElement {
|
||||
HTMLTableDataCellElement {
|
||||
htmltablecellelement: HTMLTableCellElement::new_inherited(HTMLElementTypeId::HTMLTableDataCellElement, localName, prefix, document)
|
||||
htmltablecellelement: HTMLTableCellElement::new_inherited(HTMLTableCellElementTypeId::HTMLTableDataCellElement,
|
||||
localName, prefix, document)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::document::Document;
|
|||
use dom::element::ElementTypeId;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||
use dom::htmltablecellelement::{HTMLTableCellElement, HTMLTableCellElementTypeId};
|
||||
use dom::node::{Node, NodeTypeId};
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
|
@ -20,14 +20,18 @@ pub struct HTMLTableHeaderCellElement {
|
|||
|
||||
impl HTMLTableHeaderCellElementDerived for EventTarget {
|
||||
fn is_htmltableheadercellelement(&self) -> bool {
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableHeaderCellElement)))
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(
|
||||
ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLTableCellElement(
|
||||
HTMLTableCellElementTypeId::HTMLTableHeaderCellElement))))
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLTableHeaderCellElement {
|
||||
fn new_inherited(localName: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLTableHeaderCellElement {
|
||||
HTMLTableHeaderCellElement {
|
||||
htmltablecellelement: HTMLTableCellElement::new_inherited(HTMLElementTypeId::HTMLTableHeaderCellElement, localName, prefix, document)
|
||||
htmltablecellelement: HTMLTableCellElement::new_inherited(HTMLTableCellElementTypeId::HTMLTableHeaderCellElement,
|
||||
localName, prefix, document)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ use dom::bindings::codegen::Bindings::HTMLVideoElementBinding;
|
|||
use dom::bindings::codegen::InheritTypes::HTMLVideoElementDerived;
|
||||
use dom::bindings::js::{JSRef, Temporary};
|
||||
use dom::document::Document;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::htmlmediaelement::HTMLMediaElement;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
use dom::htmlmediaelement::{HTMLMediaElement, HTMLMediaElementTypeId};
|
||||
use dom::node::{Node, NodeTypeId};
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
|
@ -20,14 +20,17 @@ pub struct HTMLVideoElement {
|
|||
|
||||
impl HTMLVideoElementDerived for EventTarget {
|
||||
fn is_htmlvideoelement(&self) -> bool {
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLVideoElement)))
|
||||
*self.type_id() == EventTargetTypeId::Node(NodeTypeId::Element(
|
||||
ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLMediaElement(
|
||||
HTMLMediaElementTypeId::HTMLVideoElement))))
|
||||
}
|
||||
}
|
||||
|
||||
impl HTMLVideoElement {
|
||||
fn new_inherited(localName: DOMString, prefix: Option<DOMString>, document: JSRef<Document>) -> HTMLVideoElement {
|
||||
HTMLVideoElement {
|
||||
htmlmediaelement: HTMLMediaElement::new_inherited(HTMLElementTypeId::HTMLVideoElement, localName, prefix, document)
|
||||
htmlmediaelement: HTMLMediaElement::new_inherited(HTMLMediaElementTypeId::HTMLVideoElement, localName, prefix, document)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ use dom::htmlscriptelement::HTMLScriptElement;
|
|||
use dom::htmlselectelement::HTMLSelectElement;
|
||||
use dom::htmlstyleelement::HTMLStyleElement;
|
||||
use dom::htmltableelement::HTMLTableElement;
|
||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||
use dom::htmltablecellelement::{HTMLTableCellElement, HTMLTableCellElementTypeId};
|
||||
use dom::htmltablerowelement::HTMLTableRowElement;
|
||||
use dom::htmltablesectionelement::HTMLTableSectionElement;
|
||||
use dom::htmltextareaelement::HTMLTextAreaElement;
|
||||
|
@ -216,8 +216,12 @@ pub fn vtable_for<'a>(node: &'a JSRef<'a, Node>) -> &'a VirtualMethods + 'a {
|
|||
HTMLTableElementCast::to_borrowed_ref(node).unwrap();
|
||||
element as &'a VirtualMethods + 'a
|
||||
}
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableDataCellElement)) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableHeaderCellElement)) => {
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLTableCellElement(
|
||||
HTMLTableCellElementTypeId::HTMLTableDataCellElement))) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(
|
||||
HTMLElementTypeId::HTMLTableCellElement(
|
||||
HTMLTableCellElementTypeId::HTMLTableHeaderCellElement))) => {
|
||||
let element: &'a JSRef<'a, HTMLTableCellElement> =
|
||||
HTMLTableCellElementCast::to_borrowed_ref(node).unwrap();
|
||||
element as &'a VirtualMethods + 'a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue