mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Make NodeTypeId include CharacterData variant
NodeTypeId is supposed to reflect the WebIDL inheritance hierarchy. All of Text/ProcessingInstruction/Comment inherit from CharacterData, which inherits from Node. There should be a CharacterDataTypeId value that differentiates between those, instead.
This commit is contained in:
parent
1e150140bd
commit
f404853c99
9 changed files with 67 additions and 78 deletions
|
@ -33,18 +33,16 @@ pub struct CharacterData {
|
|||
impl CharacterDataDerived for EventTarget {
|
||||
fn is_characterdata(&self) -> bool {
|
||||
match *self.type_id() {
|
||||
EventTargetTypeId::Node(NodeTypeId::Text) |
|
||||
EventTargetTypeId::Node(NodeTypeId::Comment) |
|
||||
EventTargetTypeId::Node(NodeTypeId::ProcessingInstruction) => true,
|
||||
EventTargetTypeId::Node(NodeTypeId::CharacterData(_)) => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CharacterData {
|
||||
pub fn new_inherited(id: NodeTypeId, data: DOMString, document: JSRef<Document>) -> CharacterData {
|
||||
pub fn new_inherited(id: CharacterDataTypeId, data: DOMString, document: JSRef<Document>) -> CharacterData {
|
||||
CharacterData {
|
||||
node: Node::new_inherited(id, document),
|
||||
node: Node::new_inherited(NodeTypeId::CharacterData(id), document),
|
||||
data: DOMRefCell::new(data),
|
||||
}
|
||||
}
|
||||
|
@ -153,6 +151,15 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> {
|
|||
}
|
||||
}
|
||||
|
||||
/// The different types of CharacterData.
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
#[jstraceable]
|
||||
pub enum CharacterDataTypeId {
|
||||
Comment,
|
||||
Text,
|
||||
ProcessingInstruction,
|
||||
}
|
||||
|
||||
pub trait CharacterDataHelpers<'a> {
|
||||
fn data(self) -> Ref<'a, DOMString>;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue