mirror of
https://github.com/servo/servo.git
synced 2025-08-02 04:00:32 +01:00
auto merge of #4495 : MeghaGupta/servo/typeid, r=Ms2ger
This commit is contained in:
commit
2e17cae5d0
76 changed files with 481 additions and 423 deletions
|
@ -45,8 +45,9 @@ use wrapper::{PostorderNodeMutTraversal, PseudoElementType, TLayoutNode, ThreadS
|
|||
|
||||
use gfx::display_list::OpaqueNode;
|
||||
use script::dom::element::ElementTypeId;
|
||||
use script::dom::node::NodeTypeId;
|
||||
use script::dom::htmlelement::HTMLElementTypeId;
|
||||
use script::dom::htmlobjectelement::is_image_data;
|
||||
use script::dom::node::NodeTypeId;
|
||||
use servo_util::opts;
|
||||
use std::collections::DList;
|
||||
use std::mem;
|
||||
|
@ -253,24 +254,23 @@ impl<'a> FlowConstructor<'a> {
|
|||
pub fn build_specific_fragment_info_for_node(&mut self, node: &ThreadSafeLayoutNode)
|
||||
-> SpecificFragmentInfo {
|
||||
match node.type_id() {
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLIFrameElement)) => {
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLIFrameElement))) => {
|
||||
SpecificFragmentInfo::Iframe(box IframeFragmentInfo::new(node))
|
||||
}
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLImageElement)) => {
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement))) => {
|
||||
self.build_fragment_info_for_image(node, node.image_url())
|
||||
}
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLObjectElement)) => {
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement))) => {
|
||||
let data = node.get_object_data();
|
||||
self.build_fragment_info_for_image(node, data)
|
||||
}
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableElement)) => SpecificFragmentInfo::TableWrapper,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableColElement)) => {
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableElement))) => SpecificFragmentInfo::TableWrapper,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableColElement))) => {
|
||||
SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node))
|
||||
}
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableDataCellElement)) |
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableHeaderCellElement)) => SpecificFragmentInfo::TableCell,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableRowElement)) |
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLTableSectionElement)) => SpecificFragmentInfo::TableRow,
|
||||
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)),
|
||||
_ => {
|
||||
// This includes pseudo-elements.
|
||||
|
@ -547,11 +547,11 @@ impl<'a> FlowConstructor<'a> {
|
|||
fn build_flow_for_block(&mut self, flow: FlowRef, node: &ThreadSafeLayoutNode)
|
||||
-> ConstructionResult {
|
||||
let initial_fragment = if node.get_pseudo_element_type() != PseudoElementType::Normal ||
|
||||
node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLInputElement)) ||
|
||||
node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLTextAreaElement)) {
|
||||
node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement))) ||
|
||||
node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement))) {
|
||||
// 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::HTMLTextAreaElement)) {
|
||||
if node.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement))) {
|
||||
for kid in node.children() {
|
||||
kid.set_flow_construction_result(ConstructionResult::None)
|
||||
}
|
||||
|
@ -1261,8 +1261,8 @@ impl<'ln> NodeUtils for ThreadSafeLayoutNode<'ln> {
|
|||
Some(NodeTypeId::DocumentFragment) |
|
||||
Some(NodeTypeId::Document) |
|
||||
None |
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLImageElement)) => true,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLObjectElement)) => self.has_object_data(),
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement))) => true,
|
||||
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement))) => self.has_object_data(),
|
||||
Some(NodeTypeId::Element(_)) => false,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ use log;
|
|||
use script::dom::bindings::js::JS;
|
||||
use script::dom::node::{LayoutDataRef, Node, NodeTypeId};
|
||||
use script::dom::element::ElementTypeId;
|
||||
use script::dom::htmlelement::HTMLElementTypeId;
|
||||
use script::layout_interface::{ContentBoxResponse, ContentBoxesResponse};
|
||||
use script::layout_interface::{ContentBoxesQuery, ContentBoxQuery};
|
||||
use script::layout_interface::{HitTestResponse, LayoutChan, LayoutRPC};
|
||||
|
@ -659,8 +660,8 @@ impl LayoutTask {
|
|||
// it with extreme prejudice.
|
||||
let mut color = color::rgba(1.0, 1.0, 1.0, 1.0);
|
||||
for child in node.traverse_preorder() {
|
||||
if child.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLHtmlElement)) ||
|
||||
child.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLBodyElement)) {
|
||||
if child.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHtmlElement))) ||
|
||||
child.type_id() == Some(NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBodyElement))) {
|
||||
let element_bg_color = {
|
||||
let thread_safe_child = ThreadSafeLayoutNode::new(&child);
|
||||
thread_safe_child.style()
|
||||
|
|
|
@ -44,6 +44,7 @@ use script::dom::bindings::codegen::InheritTypes::{HTMLTextAreaElementCast, Node
|
|||
use script::dom::bindings::js::JS;
|
||||
use script::dom::element::{Element, ElementTypeId};
|
||||
use script::dom::element::{LayoutElementHelpers, RawLayoutElementHelpers};
|
||||
use script::dom::htmlelement::HTMLElementTypeId;
|
||||
use script::dom::htmliframeelement::HTMLIFrameElement;
|
||||
use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers;
|
||||
use script::dom::htmlinputelement::LayoutHTMLInputElementHelpers;
|
||||
|
@ -516,9 +517,9 @@ impl<'le> TElement<'le> for LayoutElement<'le> {
|
|||
match NodeCast::from_actual(self.element).type_id_for_layout() {
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/selectors.html#
|
||||
// selector-link
|
||||
NodeTypeId::Element(ElementTypeId::HTMLAnchorElement) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLAreaElement) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLLinkElement) => {
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement)) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement)) |
|
||||
NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) => {
|
||||
unsafe {
|
||||
self.element.get_attr_val_for_layout(&ns!(""), &atom!("href"))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue