aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/wrapper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout/wrapper.rs')
-rw-r--r--components/layout/wrapper.rs58
1 files changed, 28 insertions, 30 deletions
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs
index 7c13cc6d97c..17b54883fa0 100644
--- a/components/layout/wrapper.rs
+++ b/components/layout/wrapper.rs
@@ -40,20 +40,18 @@ use ipc_channel::ipc::IpcSender;
use msg::constellation_msg::PipelineId;
use opaque_node::OpaqueNodeMethods;
use script::dom::attr::AttrValue;
-use script::dom::bindings::codegen::InheritTypes::{CharacterDataCast, CharacterDataTypeId};
-use script::dom::bindings::codegen::InheritTypes::{ElementCast, ElementTypeId};
-use script::dom::bindings::codegen::InheritTypes::{HTMLCanvasElementCast, HTMLElementTypeId};
-use script::dom::bindings::codegen::InheritTypes::{HTMLIFrameElementCast, HTMLImageElementCast};
-use script::dom::bindings::codegen::InheritTypes::{HTMLInputElementCast, HTMLTextAreaElementCast};
-use script::dom::bindings::codegen::InheritTypes::{NodeCast, NodeTypeId, TextCast};
+use script::dom::bindings::codegen::InheritTypes::{CharacterDataTypeId, ElementTypeId};
+use script::dom::bindings::codegen::InheritTypes::{HTMLElementTypeId, NodeTypeId};
+use script::dom::bindings::conversions::Castable;
use script::dom::bindings::js::LayoutJS;
-use script::dom::characterdata::LayoutCharacterDataHelpers;
+use script::dom::characterdata::{CharacterData, LayoutCharacterDataHelpers};
use script::dom::element;
use script::dom::element::{Element, LayoutElementHelpers, RawLayoutElementHelpers};
-use script::dom::htmlcanvaselement::LayoutHTMLCanvasElementHelpers;
-use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers;
-use script::dom::htmlinputelement::LayoutHTMLInputElementHelpers;
-use script::dom::htmltextareaelement::LayoutHTMLTextAreaElementHelpers;
+use script::dom::htmlcanvaselement::{HTMLCanvasElement, LayoutHTMLCanvasElementHelpers};
+use script::dom::htmliframeelement::HTMLIFrameElement;
+use script::dom::htmlimageelement::{HTMLImageElement, LayoutHTMLImageElementHelpers};
+use script::dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers};
+use script::dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers};
use script::dom::node::{HAS_CHANGED, HAS_DIRTY_DESCENDANTS, HAS_DIRTY_SIBLINGS, IS_DIRTY};
use script::dom::node::{LayoutNodeHelpers, Node, SharedLayoutData};
use script::dom::text::Text;
@@ -360,14 +358,14 @@ impl<'le> LayoutElement<'le> {
pub fn as_node(&self) -> LayoutNode<'le> {
LayoutNode {
- node: NodeCast::from_layout_js(&self.element),
+ node: self.element.upcast::<Node>(),
chain: PhantomData,
}
}
}
fn as_element<'le>(node: LayoutJS<Node>) -> Option<LayoutElement<'le>> {
- ElementCast::to_layout_js(&node).map(|element| {
+ node.downcast().map(|element| {
LayoutElement {
element: element,
chain: PhantomData,
@@ -379,7 +377,7 @@ fn as_element<'le>(node: LayoutJS<Node>) -> Option<LayoutElement<'le>> {
impl<'le> ::selectors::Element for LayoutElement<'le> {
fn parent_element(&self) -> Option<LayoutElement<'le>> {
unsafe {
- NodeCast::from_layout_js(&self.element).parent_node_ref().and_then(as_element)
+ self.element.upcast::<Node>().parent_node_ref().and_then(as_element)
}
}
@@ -424,7 +422,7 @@ impl<'le> ::selectors::Element for LayoutElement<'le> {
self.as_node().children().all(|node| match node.type_id() {
NodeTypeId::Element(..) => false,
NodeTypeId::CharacterData(CharacterDataTypeId::Text) => unsafe {
- CharacterDataCast::to_layout_js(&node.node).unwrap().data_for_layout().is_empty()
+ node.node.downcast::<CharacterData>().unwrap().data_for_layout().is_empty()
},
_ => true
})
@@ -697,7 +695,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
#[inline]
pub fn as_element(&self) -> ThreadSafeLayoutElement<'ln> {
unsafe {
- let element = match ElementCast::to_layout_js(self.get_jsmanaged()) {
+ let element = match self.get_jsmanaged().downcast::<Element>() {
Some(e) => e.unsafe_get(),
None => panic!("not an element")
};
@@ -788,12 +786,12 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub fn is_ignorable_whitespace(&self) -> bool {
unsafe {
- let text: LayoutJS<Text> = match TextCast::to_layout_js(self.get_jsmanaged()) {
+ let text: LayoutJS<Text> = match self.get_jsmanaged().downcast::<Text>() {
Some(text) => text,
None => return false
};
- if !is_whitespace(CharacterDataCast::from_layout_js(&text).data_for_layout()) {
+ if !is_whitespace(text.upcast::<CharacterData>().data_for_layout()) {
return false
}
@@ -816,7 +814,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub fn get_unsigned_integer_attribute(self, attribute: UnsignedIntegerAttribute)
-> Option<u32> {
unsafe {
- let elem: Option<LayoutJS<Element>> = ElementCast::to_layout_js(self.get_jsmanaged());
+ let elem: Option<LayoutJS<Element>> = self.get_jsmanaged().downcast::<Element>();
match elem {
Some(element) => {
element.get_unsigned_integer_attribute_for_layout(attribute)
@@ -902,19 +900,19 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
}
let this = unsafe { self.get_jsmanaged() };
- let text = TextCast::to_layout_js(this);
+ let text = this.downcast::<Text>();
if let Some(text) = text {
let data = unsafe {
- CharacterDataCast::from_layout_js(&text).data_for_layout().to_owned()
+ text.upcast::<CharacterData>().data_for_layout().to_owned()
};
return TextContent::Text(data);
}
- let input = HTMLInputElementCast::to_layout_js(this);
+ let input = this.downcast::<HTMLInputElement>();
if let Some(input) = input {
let data = unsafe { input.get_value_for_layout() };
return TextContent::Text(data);
}
- let area = HTMLTextAreaElementCast::to_layout_js(this);
+ let area = this.downcast::<HTMLTextAreaElement>();
if let Some(area) = area {
let data = unsafe { area.get_value_for_layout() };
return TextContent::Text(data);
@@ -928,7 +926,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
let this = unsafe {
self.get_jsmanaged()
};
- let input = HTMLInputElementCast::to_layout_js(this);
+ let input = this.downcast::<HTMLInputElement>();
if let Some(input) = input {
let insertion_point = unsafe {
input.get_insertion_point_for_layout()
@@ -956,7 +954,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
/// FIXME(pcwalton): Don't copy URLs.
pub fn image_url(&self) -> Option<Url> {
unsafe {
- HTMLImageElementCast::to_layout_js(self.get_jsmanaged())
+ self.get_jsmanaged().downcast::<HTMLImageElement>()
.expect("not an image!")
.image_url()
}
@@ -964,28 +962,28 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub fn canvas_renderer_id(&self) -> Option<usize> {
unsafe {
- let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
+ let canvas_element = self.get_jsmanaged().downcast::<HTMLCanvasElement>();
canvas_element.and_then(|elem| elem.get_renderer_id())
}
}
pub fn canvas_ipc_renderer(&self) -> Option<IpcSender<CanvasMsg>> {
unsafe {
- let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
+ let canvas_element = self.get_jsmanaged().downcast::<HTMLCanvasElement>();
canvas_element.and_then(|elem| elem.get_ipc_renderer())
}
}
pub fn canvas_width(&self) -> u32 {
unsafe {
- let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
+ let canvas_element = self.get_jsmanaged().downcast::<HTMLCanvasElement>();
canvas_element.unwrap().get_canvas_width()
}
}
pub fn canvas_height(&self) -> u32 {
unsafe {
- let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
+ let canvas_element = self.get_jsmanaged().downcast::<HTMLCanvasElement>();
canvas_element.unwrap().get_canvas_height()
}
}
@@ -995,7 +993,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub fn iframe_pipeline_id(&self) -> PipelineId {
use script::dom::htmliframeelement::HTMLIFrameElementLayoutMethods;
unsafe {
- let iframe_element = HTMLIFrameElementCast::to_layout_js(self.get_jsmanaged())
+ let iframe_element = self.get_jsmanaged().downcast::<HTMLIFrameElement>()
.expect("not an iframe element!");
iframe_element.pipeline_id().unwrap()
}