Move AbastractNode::is_element to the TreeNodeRef trait.

This commit is contained in:
Simon Sapin 2013-10-16 19:22:44 +01:00
parent 6c41be9c13
commit 6d808fbdd0
8 changed files with 17 additions and 11 deletions

View file

@ -9,6 +9,8 @@ use layout::incremental::RestyleDamage;
use newcss::complete::CompleteStyle;
use script::dom::node::{AbstractNode, LayoutView};
use servo_util::tree::TreeNodeRef;
/// Node mixin providing `style` method that returns a `NodeStyle`
pub trait StyledNode {

View file

@ -8,6 +8,8 @@ use std::cast;
use std::cell::Cell;
use newcss::complete::CompleteSelectResults;
use script::dom::node::{AbstractNode, LayoutView};
use servo_util::tree::TreeNodeRef;
pub trait NodeUtil<'self> {
fn get_css_select_results(self) -> &'self CompleteSelectResults;

View file

@ -9,7 +9,7 @@
use std::str::eq_slice;
use newcss::select::SelectHandler;
use script::dom::node::{AbstractNode, LayoutView};
use servo_util::tree::ElementLike;
use servo_util::tree::{TreeNodeRef, ElementLike};
pub struct NodeSelectHandler {
node: AbstractNode<LayoutView>,

View file

@ -38,7 +38,7 @@ use script::dom::node::{AbstractNode, LayoutView};
use servo_net::image::holder::ImageHolder;
use servo_net::local_image_cache::LocalImageCache;
use servo_util::range::*;
use servo_util::tree::ElementLike;
use servo_util::tree::{TreeNodeRef, ElementLike};
use extra::url::Url;
/// Render boxes (`struct RenderBox`) are the leaves of the layout tree. They cannot position

View file

@ -14,7 +14,7 @@ use dom::node::{ElementNodeTypeId, Node, ScriptView, AbstractNode};
use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery};
use layout_interface::{ContentBoxesResponse};
use newcss::stylesheet::Stylesheet;
use servo_util::tree::ElementLike;
use servo_util::tree::{TreeNodeRef, ElementLike};
use js::jsapi::{JSContext, JSObject};

View file

@ -154,6 +154,13 @@ impl<View> TreeNodeRef<Node<View>> for AbstractNode<View> {
fn with_mut_base<R>(&self, callback: &fn(&mut Node<View>) -> R) -> R {
self.transmute_mut(callback)
}
fn is_element(self) -> bool {
match self.type_id() {
ElementNodeTypeId(*) => true,
_ => false
}
}
}
impl<View> TreeNodeRefAsElement<Node<View>, Element> for AbstractNode<View> {
@ -317,13 +324,6 @@ impl<'self, View> AbstractNode<View> {
self.transmute_mut(f)
}
pub fn is_element(self) -> bool {
match self.type_id() {
ElementNodeTypeId(*) => true,
_ => false
}
}
// FIXME: This should be doing dynamic borrow checking for safety.
pub fn with_imm_element<R>(self, f: &fn(&Element) -> R) -> R {
if !self.is_element() {

View file

@ -11,7 +11,7 @@ use media_queries::{Device, Screen};
use properties::{PropertyDeclaration, PropertyDeclarationBlock};
use script::dom::node::{AbstractNode, ScriptView};
use script::dom::element::Element;
use servo_util::tree::ElementLike;
use servo_util::tree::{TreeNodeRef, ElementLike};
pub enum StylesheetOrigin {

View file

@ -248,6 +248,8 @@ pub trait TreeNodeRef<Node>: Clone {
gather(self, &mut nodes, true, prune);
TreeIterator::new(nodes)
}
fn is_element(self) -> bool;
}
pub trait TreeNodeRefAsElement<Node, E: ElementLike>: TreeNodeRef<Node> {