aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/characterdata.rs17
-rw-r--r--components/script/dom/comment.rs6
-rw-r--r--components/script/dom/node.rs80
-rw-r--r--components/script/dom/processinginstruction.rs6
-rw-r--r--components/script/dom/text.rs6
-rw-r--r--components/script/parse/html.rs8
6 files changed, 56 insertions, 67 deletions
diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs
index 677541045d8..3ea3609c7d7 100644
--- a/components/script/dom/characterdata.rs
+++ b/components/script/dom/characterdata.rs
@@ -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>;
}
diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs
index 9f95d318890..b65384e9ddf 100644
--- a/components/script/dom/comment.rs
+++ b/components/script/dom/comment.rs
@@ -8,7 +8,7 @@ use dom::bindings::codegen::InheritTypes::CommentDerived;
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JSRef, Rootable, Temporary};
-use dom::characterdata::CharacterData;
+use dom::characterdata::{CharacterData, CharacterDataTypeId};
use dom::document::Document;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::node::{Node, NodeTypeId};
@@ -22,14 +22,14 @@ pub struct Comment {
impl CommentDerived for EventTarget {
fn is_comment(&self) -> bool {
- *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Comment)
+ *self.type_id() == EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::Comment))
}
}
impl Comment {
fn new_inherited(text: DOMString, document: JSRef<Document>) -> Comment {
Comment {
- characterdata: CharacterData::new_inherited(NodeTypeId::Comment, text, document)
+ characterdata: CharacterData::new_inherited(CharacterDataTypeId::Comment, text, document)
}
}
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index d5e3482a10e..23914d3f407 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -31,7 +31,7 @@ use dom::bindings::js::Unrooted;
use dom::bindings::trace::JSTraceable;
use dom::bindings::trace::RootedVec;
use dom::bindings::utils::{Reflectable, reflect_dom_object};
-use dom::characterdata::{CharacterData, CharacterDataHelpers};
+use dom::characterdata::{CharacterData, CharacterDataHelpers, CharacterDataTypeId};
use dom::comment::Comment;
use dom::document::{Document, DocumentHelpers, IsHTMLDocument, DocumentSource};
use dom::documentfragment::DocumentFragment;
@@ -269,13 +269,11 @@ impl LayoutDataRef {
#[derive(Copy, Clone, PartialEq, Debug)]
#[jstraceable]
pub enum NodeTypeId {
+ CharacterData(CharacterDataTypeId),
DocumentType,
DocumentFragment,
- Comment,
Document,
Element(ElementTypeId),
- Text,
- ProcessingInstruction,
}
trait PrivateNodeHelpers {
@@ -616,7 +614,7 @@ impl<'a> NodeHelpers for JSRef<'a, Node> {
#[inline]
fn is_text(self) -> bool {
- self.type_id == NodeTypeId::Text
+ self.type_id == NodeTypeId::CharacterData(CharacterDataTypeId::Text)
}
fn get_flag(self, flag: NodeFlags) -> bool {
@@ -1420,7 +1418,7 @@ impl Node {
// Step 4-5.
match node.type_id() {
- NodeTypeId::Text => {
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) => {
if parent.is_document() {
return Err(HierarchyRequest);
}
@@ -1432,8 +1430,8 @@ impl Node {
},
NodeTypeId::DocumentFragment |
NodeTypeId::Element(_) |
- NodeTypeId::ProcessingInstruction |
- NodeTypeId::Comment => (),
+ NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) |
+ NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => (),
NodeTypeId::Document => return Err(HierarchyRequest)
}
@@ -1507,9 +1505,7 @@ impl Node {
},
}
},
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction |
- NodeTypeId::Comment => (),
+ NodeTypeId::CharacterData(_) => (),
NodeTypeId::Document => unreachable!(),
}
},
@@ -1711,7 +1707,7 @@ impl Node {
let doc_fragment = DocumentFragment::new(document.r());
NodeCast::from_temporary(doc_fragment)
},
- NodeTypeId::Comment => {
+ NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => {
let cdata = CharacterDataCast::to_ref(node).unwrap();
let comment = Comment::new(cdata.Data(), document.r());
NodeCast::from_temporary(comment)
@@ -1739,12 +1735,12 @@ impl Node {
document.r(), ElementCreator::ScriptCreated);
NodeCast::from_temporary(element)
},
- NodeTypeId::Text => {
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) => {
let cdata = CharacterDataCast::to_ref(node).unwrap();
let text = Text::new(cdata.Data(), document.r());
NodeCast::from_temporary(text)
},
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) => {
let pi: JSRef<ProcessingInstruction> = ProcessingInstructionCast::to_ref(node).unwrap();
let pi = ProcessingInstruction::new(pi.Target(),
CharacterDataCast::from_ref(pi).Data(), document.r());
@@ -1819,13 +1815,13 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// https://dom.spec.whatwg.org/#dom-node-nodetype
fn NodeType(self) -> u16 {
match self.type_id {
- NodeTypeId::Element(_) => NodeConstants::ELEMENT_NODE,
- NodeTypeId::Text => NodeConstants::TEXT_NODE,
- NodeTypeId::ProcessingInstruction => NodeConstants::PROCESSING_INSTRUCTION_NODE,
- NodeTypeId::Comment => NodeConstants::COMMENT_NODE,
- NodeTypeId::Document => NodeConstants::DOCUMENT_NODE,
- NodeTypeId::DocumentType => NodeConstants::DOCUMENT_TYPE_NODE,
- NodeTypeId::DocumentFragment => NodeConstants::DOCUMENT_FRAGMENT_NODE,
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) => NodeConstants::TEXT_NODE,
+ NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) => NodeConstants::PROCESSING_INSTRUCTION_NODE,
+ NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => NodeConstants::COMMENT_NODE,
+ NodeTypeId::Document => NodeConstants::DOCUMENT_NODE,
+ NodeTypeId::DocumentType => NodeConstants::DOCUMENT_TYPE_NODE,
+ NodeTypeId::DocumentFragment => NodeConstants::DOCUMENT_FRAGMENT_NODE,
+ NodeTypeId::Element(_) => NodeConstants::ELEMENT_NODE,
}
}
@@ -1836,13 +1832,13 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
let elem: JSRef<Element> = ElementCast::to_ref(self).unwrap();
elem.TagName()
}
- NodeTypeId::Text => "#text".to_owned(),
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) => "#text".to_owned(),
+ NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) => {
let processing_instruction: JSRef<ProcessingInstruction> =
ProcessingInstructionCast::to_ref(self).unwrap();
processing_instruction.Target()
}
- NodeTypeId::Comment => "#comment".to_owned(),
+ NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => "#comment".to_owned(),
NodeTypeId::DocumentType => {
let doctype: JSRef<DocumentType> = DocumentTypeCast::to_ref(self).unwrap();
doctype.name().clone()
@@ -1861,10 +1857,8 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// https://dom.spec.whatwg.org/#dom-node-ownerdocument
fn GetOwnerDocument(self) -> Option<Temporary<Document>> {
match self.type_id {
+ NodeTypeId::CharacterData(..) |
NodeTypeId::Element(..) |
- NodeTypeId::Comment |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction |
NodeTypeId::DocumentType |
NodeTypeId::DocumentFragment => Some(self.owner_doc()),
NodeTypeId::Document => None
@@ -1924,9 +1918,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// https://dom.spec.whatwg.org/#dom-node-nodevalue
fn GetNodeValue(self) -> Option<DOMString> {
match self.type_id {
- NodeTypeId::Comment |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(..) => {
let chardata: JSRef<CharacterData> = CharacterDataCast::to_ref(self).unwrap();
Some(chardata.Data())
}
@@ -1939,9 +1931,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// https://dom.spec.whatwg.org/#dom-node-nodevalue
fn SetNodeValue(self, val: Option<DOMString>) {
match self.type_id {
- NodeTypeId::Comment |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(..) => {
self.SetTextContent(val)
}
_ => {}
@@ -1956,9 +1946,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
let content = Node::collect_text_contents(self.traverse_preorder());
Some(content)
}
- NodeTypeId::Comment |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(..) => {
let characterdata: JSRef<CharacterData> = CharacterDataCast::to_ref(self).unwrap();
Some(characterdata.Data())
}
@@ -1986,9 +1974,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// Step 3.
Node::replace_all(node.r(), self);
}
- NodeTypeId::Comment |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction => {
+ NodeTypeId::CharacterData(..) => {
let characterdata: JSRef<CharacterData> = CharacterDataCast::to_ref(self).unwrap();
characterdata.SetData(value);
@@ -2034,14 +2020,12 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// Step 4-5.
match node.type_id() {
- NodeTypeId::Text if self.is_document() => return Err(HierarchyRequest),
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) if self.is_document() => return Err(HierarchyRequest),
NodeTypeId::DocumentType if !self.is_document() => return Err(HierarchyRequest),
NodeTypeId::DocumentFragment |
NodeTypeId::DocumentType |
NodeTypeId::Element(..) |
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction |
- NodeTypeId::Comment => (),
+ NodeTypeId::CharacterData(..) => (),
NodeTypeId::Document => return Err(HierarchyRequest)
}
@@ -2107,9 +2091,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
return Err(HierarchyRequest);
}
},
- NodeTypeId::Text |
- NodeTypeId::ProcessingInstruction |
- NodeTypeId::Comment => (),
+ NodeTypeId::CharacterData(..) => (),
NodeTypeId::Document => unreachable!()
}
},
@@ -2269,9 +2251,9 @@ impl<'a> NodeMethods for JSRef<'a, Node> {
// Step 3.
NodeTypeId::DocumentType if !is_equal_doctype(this, node) => return false,
NodeTypeId::Element(..) if !is_equal_element(this, node) => return false,
- NodeTypeId::ProcessingInstruction if !is_equal_processinginstruction(this, node) => return false,
- NodeTypeId::Text |
- NodeTypeId::Comment if !is_equal_characterdata(this, node) => return false,
+ NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) if !is_equal_processinginstruction(this, node) => return false,
+ NodeTypeId::CharacterData(CharacterDataTypeId::Text) |
+ NodeTypeId::CharacterData(CharacterDataTypeId::Comment) if !is_equal_characterdata(this, node) => return false,
// Step 4.
NodeTypeId::Element(..) if !is_equal_element_attrs(this, node) => return false,
_ => ()
diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs
index 7eeb1a7e460..d288b33c0f5 100644
--- a/components/script/dom/processinginstruction.rs
+++ b/components/script/dom/processinginstruction.rs
@@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::ProcessingInstructionBinding;
use dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
use dom::bindings::codegen::InheritTypes::ProcessingInstructionDerived;
use dom::bindings::js::{JSRef, Temporary};
-use dom::characterdata::CharacterData;
+use dom::characterdata::{CharacterData, CharacterDataTypeId};
use dom::document::Document;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::node::{Node, NodeTypeId};
@@ -21,14 +21,14 @@ pub struct ProcessingInstruction {
impl ProcessingInstructionDerived for EventTarget {
fn is_processinginstruction(&self) -> bool {
- *self.type_id() == EventTargetTypeId::Node(NodeTypeId::ProcessingInstruction)
+ *self.type_id() == EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction))
}
}
impl ProcessingInstruction {
fn new_inherited(target: DOMString, data: DOMString, document: JSRef<Document>) -> ProcessingInstruction {
ProcessingInstruction {
- characterdata: CharacterData::new_inherited(NodeTypeId::ProcessingInstruction, data, document),
+ characterdata: CharacterData::new_inherited(CharacterDataTypeId::ProcessingInstruction, data, document),
target: target
}
}
diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs
index c8430c48809..9cd321bf9ae 100644
--- a/components/script/dom/text.rs
+++ b/components/script/dom/text.rs
@@ -13,7 +13,7 @@ use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JSRef, OptionalRootable, Rootable, RootedReference};
use dom::bindings::js::Temporary;
-use dom::characterdata::{CharacterData, CharacterDataHelpers};
+use dom::characterdata::{CharacterData, CharacterDataHelpers, CharacterDataTypeId};
use dom::document::Document;
use dom::eventtarget::{EventTarget, EventTargetTypeId};
use dom::node::{Node, NodeHelpers, NodeTypeId};
@@ -27,14 +27,14 @@ pub struct Text {
impl TextDerived for EventTarget {
fn is_text(&self) -> bool {
- *self.type_id() == EventTargetTypeId::Node(NodeTypeId::Text)
+ *self.type_id() == EventTargetTypeId::Node(NodeTypeId::CharacterData(CharacterDataTypeId::Text))
}
}
impl Text {
fn new_inherited(text: DOMString, document: JSRef<Document>) -> Text {
Text {
- characterdata: CharacterData::new_inherited(NodeTypeId::Text, text, document)
+ characterdata: CharacterData::new_inherited(CharacterDataTypeId::Text, text, document)
}
}
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index 70880ef34e3..d16177e3a07 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -14,7 +14,7 @@ use dom::bindings::codegen::InheritTypes::ProcessingInstructionCast;
use dom::bindings::js::{JS, JSRef, OptionalRootable, Root, Rootable};
use dom::bindings::js::{RootedReference, Temporary};
use dom::bindings::trace::RootedVec;
-use dom::characterdata::CharacterDataHelpers;
+use dom::characterdata::{CharacterDataHelpers, CharacterDataTypeId};
use dom::comment::Comment;
use dom::document::{Document, DocumentHelpers};
use dom::document::{DocumentSource, IsHTMLDocument};
@@ -247,17 +247,17 @@ impl<'a> Serializable for JSRef<'a, Node> {
serializer.write_doctype(&doctype.name())
},
- (IncludeNode, NodeTypeId::Text) => {
+ (IncludeNode, NodeTypeId::CharacterData(CharacterDataTypeId::Text)) => {
let cdata = CharacterDataCast::to_ref(node).unwrap();
serializer.write_text(&cdata.data())
},
- (IncludeNode, NodeTypeId::Comment) => {
+ (IncludeNode, NodeTypeId::CharacterData(CharacterDataTypeId::Comment)) => {
let cdata = CharacterDataCast::to_ref(node).unwrap();
serializer.write_comment(&cdata.data())
},
- (IncludeNode, NodeTypeId::ProcessingInstruction) => {
+ (IncludeNode, NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction)) => {
let pi: JSRef<ProcessingInstruction> = ProcessingInstructionCast::to_ref(node).unwrap();
let data = CharacterDataCast::from_ref(pi).data();
serializer.write_processing_instruction(&pi.target(), &data)