aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/construct.rs
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-06-15 10:12:37 +0100
committerMs2ger <Ms2ger@gmail.com>2016-06-20 19:02:49 +0200
commit6b847eb93ab750b5029c54365cca64f450e9b154 (patch)
tree6eafcf31af2e3a85252f16f518fbdd0aac7ac369 /components/layout/construct.rs
parentafc7118a6706cc3af6879b7d032d5e693abd4707 (diff)
downloadservo-6b847eb93ab750b5029c54365cca64f450e9b154.tar.gz
servo-6b847eb93ab750b5029c54365cca64f450e9b154.zip
Introduce LayoutNodeType and LayoutElementType enums.
Diffstat (limited to 'components/layout/construct.rs')
-rw-r--r--components/layout/construct.rs79
1 files changed, 32 insertions, 47 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs
index 8c79618a6ed..c600b0ce8e6 100644
--- a/components/layout/construct.rs
+++ b/components/layout/construct.rs
@@ -34,9 +34,8 @@ use list_item::{ListItemFlow, ListStyleTypeContent};
use multicol::{MulticolFlow, MulticolColumnFlow};
use parallel;
use script::layout_interface::is_image_data;
-use script::layout_interface::{CharacterDataTypeId, ElementTypeId};
-use script::layout_interface::{HTMLElementTypeId, NodeTypeId};
use script_layout_interface::restyle_damage::{BUBBLE_ISIZES, RECONSTRUCT_FLOW, RestyleDamage};
+use script_layout_interface::{LayoutNodeType, LayoutElementType};
use std::borrow::ToOwned;
use std::collections::LinkedList;
use std::marker::PhantomData;
@@ -304,44 +303,35 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// Builds the fragment for the given block or subclass thereof.
fn build_fragment_for_block(&mut self, node: &ConcreteThreadSafeLayoutNode) -> Fragment {
let specific_fragment_info = match node.type_id() {
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLIFrameElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLIFrameElement)) => {
SpecificFragmentInfo::Iframe(IframeFragmentInfo::new(node))
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLImageElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLImageElement)) => {
let image_info = box ImageFragmentInfo::new(node,
node.image_url(),
&self.layout_context);
SpecificFragmentInfo::Image(image_info)
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLObjectElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLObjectElement)) => {
let image_info = box ImageFragmentInfo::new(node,
node.object_data(),
&self.layout_context);
SpecificFragmentInfo::Image(image_info)
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTableElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLTableElement)) => {
SpecificFragmentInfo::TableWrapper
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTableColElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLTableColElement)) => {
SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node))
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTableCellElement(_)))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLTableCellElement)) => {
SpecificFragmentInfo::TableCell
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTableRowElement))) |
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTableSectionElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLTableRowElement)) |
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLTableSectionElement)) => {
SpecificFragmentInfo::TableRow
}
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLCanvasElement))) => {
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLCanvasElement)) => {
let data = node.canvas_data().unwrap();
SpecificFragmentInfo::Canvas(box CanvasFragmentInfo::new(node, data, self.layout_context))
}
@@ -690,16 +680,13 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
-> ConstructionResult {
let mut initial_fragments = IntermediateInlineFragments::new();
let node_is_input_or_text_area =
- node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLInputElement))) ||
- node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTextAreaElement)));
+ node.type_id() == Some(LayoutNodeType::Element(LayoutElementType::HTMLInputElement)) ||
+ node.type_id() == Some(LayoutNodeType::Element(LayoutElementType::HTMLTextAreaElement));
if node.get_pseudo_element_type().is_replaced_content() ||
node_is_input_or_text_area {
// A TextArea's text contents are displayed through the input text
// box, so don't construct them.
- if node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLTextAreaElement))) {
+ if node.type_id() == Some(LayoutNodeType::Element(LayoutElementType::HTMLTextAreaElement)) {
for kid in node.children() {
self.set_flow_construction_result(&kid, ConstructionResult::None)
}
@@ -971,7 +958,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
// fragment that needs to be generated for this inline node.
let mut fragments = IntermediateInlineFragments::new();
match (node.get_pseudo_element_type(), node.type_id()) {
- (_, Some(NodeTypeId::CharacterData(CharacterDataTypeId::Text))) => {
+ (_, Some(LayoutNodeType::Text)) => {
self.create_fragments_for_node_text_content(&mut fragments, node, &style)
}
(PseudoElementType::Normal, _) => {
@@ -1525,7 +1512,7 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS
};
(display, style.get_box().float, style.get_box().position)
}
- Some(NodeTypeId::Element(_)) => {
+ Some(LayoutNodeType::Element(_)) => {
let style = node.style(self.style_context());
let original_display = style.get_box()._servo_display_for_hypothetical_box;
let munged_display = match original_display {
@@ -1534,13 +1521,13 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS
};
(munged_display, style.get_box().float, style.get_box().position)
}
- Some(NodeTypeId::CharacterData(CharacterDataTypeId::Text)) =>
+ Some(LayoutNodeType::Text) =>
(display::T::inline, float::T::none, position::T::static_),
- Some(NodeTypeId::CharacterData(CharacterDataTypeId::Comment)) |
- Some(NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction)) |
- Some(NodeTypeId::DocumentType) |
- Some(NodeTypeId::DocumentFragment) |
- Some(NodeTypeId::Document(_)) => {
+ Some(LayoutNodeType::Comment) |
+ Some(LayoutNodeType::ProcessingInstruction) |
+ Some(LayoutNodeType::DocumentType) |
+ Some(LayoutNodeType::DocumentFragment) |
+ Some(LayoutNodeType::Document) => {
(display::T::none, float::T::none, position::T::static_)
}
};
@@ -1679,19 +1666,17 @@ impl<ConcreteThreadSafeLayoutNode> NodeUtils for ConcreteThreadSafeLayoutNode
where ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode {
fn is_replaced_content(&self) -> bool {
match self.type_id() {
- Some(NodeTypeId::CharacterData(_)) |
- Some(NodeTypeId::DocumentType) |
- Some(NodeTypeId::DocumentFragment) |
- Some(NodeTypeId::Document(_)) |
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLImageElement))) |
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLIFrameElement))) |
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLCanvasElement))) => true,
- Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
- HTMLElementTypeId::HTMLObjectElement))) => self.has_object_data(),
- Some(NodeTypeId::Element(_)) => false,
+ Some(LayoutNodeType::Comment) |
+ Some(LayoutNodeType::ProcessingInstruction) |
+ Some(LayoutNodeType::Text) |
+ Some(LayoutNodeType::DocumentType) |
+ Some(LayoutNodeType::DocumentFragment) |
+ Some(LayoutNodeType::Document) |
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLImageElement)) |
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLIFrameElement)) |
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLCanvasElement)) => true,
+ Some(LayoutNodeType::Element(LayoutElementType::HTMLObjectElement)) => self.has_object_data(),
+ Some(LayoutNodeType::Element(_)) => false,
None => self.get_pseudo_element_type().is_replaced_content(),
}
}