mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Use BarCast::to_layout_js() instead of LayoutJS.to_script().
This commit is contained in:
parent
80a4911f9c
commit
8889041c19
2 changed files with 25 additions and 33 deletions
|
@ -43,7 +43,7 @@ use script::dom::bindings::codegen::InheritTypes::{ElementCast, HTMLIFrameElemen
|
||||||
use script::dom::bindings::codegen::InheritTypes::{HTMLCanvasElementCast, HTMLImageElementCast};
|
use script::dom::bindings::codegen::InheritTypes::{HTMLCanvasElementCast, HTMLImageElementCast};
|
||||||
use script::dom::bindings::codegen::InheritTypes::{HTMLInputElementCast, HTMLTextAreaElementCast};
|
use script::dom::bindings::codegen::InheritTypes::{HTMLInputElementCast, HTMLTextAreaElementCast};
|
||||||
use script::dom::bindings::codegen::InheritTypes::{NodeCast, TextCast};
|
use script::dom::bindings::codegen::InheritTypes::{NodeCast, TextCast};
|
||||||
use script::dom::bindings::js::{JS, LayoutJS};
|
use script::dom::bindings::js::LayoutJS;
|
||||||
use script::dom::element::{Element, ElementTypeId};
|
use script::dom::element::{Element, ElementTypeId};
|
||||||
use script::dom::element::{LayoutElementHelpers, RawLayoutElementHelpers};
|
use script::dom::element::{LayoutElementHelpers, RawLayoutElementHelpers};
|
||||||
use script::dom::htmlelement::HTMLElementTypeId;
|
use script::dom::htmlelement::HTMLElementTypeId;
|
||||||
|
@ -110,8 +110,8 @@ pub trait TLayoutNode {
|
||||||
/// FIXME(pcwalton): Don't copy URLs.
|
/// FIXME(pcwalton): Don't copy URLs.
|
||||||
fn image_url(&self) -> Option<Url> {
|
fn image_url(&self) -> Option<Url> {
|
||||||
unsafe {
|
unsafe {
|
||||||
match HTMLImageElementCast::to_js(&self.get_jsmanaged().to_script()) {
|
match HTMLImageElementCast::to_layout_js(self.get_jsmanaged()) {
|
||||||
Some(elem) => elem.to_layout().image().as_ref().map(|url| (*url).clone()),
|
Some(elem) => elem.image().as_ref().map(|url| (*url).clone()),
|
||||||
None => panic!("not an image!")
|
None => panic!("not an image!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,22 +119,22 @@ pub trait TLayoutNode {
|
||||||
|
|
||||||
fn get_renderer(&self) -> Option<Sender<CanvasMsg>> {
|
fn get_renderer(&self) -> Option<Sender<CanvasMsg>> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let canvas_element: Option<JS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_js(&self.get_jsmanaged().to_script());
|
let canvas_element: Option<LayoutJS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
canvas_element.and_then(|elem| elem.to_layout().get_renderer())
|
canvas_element.and_then(|elem| elem.get_renderer())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_canvas_width(&self) -> u32 {
|
fn get_canvas_width(&self) -> u32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
let canvas_element: Option<JS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_js(&self.get_jsmanaged().to_script());
|
let canvas_element: Option<LayoutJS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
canvas_element.unwrap().to_layout().get_canvas_width()
|
canvas_element.unwrap().get_canvas_width()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_canvas_height(&self) -> u32 {
|
fn get_canvas_height(&self) -> u32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
let canvas_element: Option<JS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_js(&self.get_jsmanaged().to_script());
|
let canvas_element: Option<LayoutJS<HTMLCanvasElement>> = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
canvas_element.unwrap().to_layout().get_canvas_height()
|
canvas_element.unwrap().get_canvas_height()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +142,8 @@ pub trait TLayoutNode {
|
||||||
/// not an iframe element, fails.
|
/// not an iframe element, fails.
|
||||||
fn iframe_pipeline_and_subpage_ids(&self) -> (PipelineId, SubpageId) {
|
fn iframe_pipeline_and_subpage_ids(&self) -> (PipelineId, SubpageId) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let iframe_element: JS<HTMLIFrameElement> =
|
let iframe_element: LayoutJS<HTMLIFrameElement> =
|
||||||
match HTMLIFrameElementCast::to_js(&self.get_jsmanaged().to_script()) {
|
match HTMLIFrameElementCast::to_layout_js(self.get_jsmanaged()) {
|
||||||
Some(elem) => elem,
|
Some(elem) => elem,
|
||||||
None => panic!("not an iframe element!")
|
None => panic!("not an iframe element!")
|
||||||
};
|
};
|
||||||
|
@ -214,15 +214,15 @@ impl<'ln> TLayoutNode for LayoutNode<'ln> {
|
||||||
|
|
||||||
fn text(&self) -> String {
|
fn text(&self) -> String {
|
||||||
unsafe {
|
unsafe {
|
||||||
let text: Option<JS<Text>> = TextCast::to_js(&self.get_jsmanaged().to_script());
|
let text: Option<LayoutJS<Text>> = TextCast::to_layout_js(self.get_jsmanaged());
|
||||||
if let Some(text) = text {
|
if let Some(text) = text {
|
||||||
return (*text.unsafe_get()).characterdata().data_for_layout().to_owned();
|
return (*text.unsafe_get()).characterdata().data_for_layout().to_owned();
|
||||||
}
|
}
|
||||||
let input: Option<JS<HTMLInputElement>> = HTMLInputElementCast::to_js(&self.get_jsmanaged().to_script());
|
let input: Option<LayoutJS<HTMLInputElement>> = HTMLInputElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
if let Some(input) = input {
|
if let Some(input) = input {
|
||||||
return input.get_value_for_layout();
|
return input.get_value_for_layout();
|
||||||
}
|
}
|
||||||
let area: Option<JS<HTMLTextAreaElement>> = HTMLTextAreaElementCast::to_js(&self.get_jsmanaged().to_script());
|
let area: Option<LayoutJS<HTMLTextAreaElement>> = HTMLTextAreaElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
if let Some(area) = area {
|
if let Some(area) = area {
|
||||||
return area.get_value_for_layout();
|
return area.get_value_for_layout();
|
||||||
}
|
}
|
||||||
|
@ -371,8 +371,8 @@ impl<'ln> TNode<'ln, LayoutElement<'ln>> for LayoutNode<'ln> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_element(self) -> LayoutElement<'ln> {
|
fn as_element(self) -> LayoutElement<'ln> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let elem: LayoutJS<Element> = match ElementCast::to_js(&self.node.to_script()) {
|
let elem: LayoutJS<Element> = match ElementCast::to_layout_js(&self.node) {
|
||||||
Some(elem) => elem.to_layout(),
|
Some(elem) => elem,
|
||||||
None => panic!("not an element")
|
None => panic!("not an element")
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -411,8 +411,8 @@ impl<'ln> TNode<'ln, LayoutElement<'ln>> for LayoutNode<'ln> {
|
||||||
|
|
||||||
fn is_html_element_in_html_document(self) -> bool {
|
fn is_html_element_in_html_document(self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
match ElementCast::to_js(&self.node.to_script()) {
|
match ElementCast::to_layout_js(&self.node) {
|
||||||
Some(elem) => elem.to_layout().html_element_in_html_document_for_layout(),
|
Some(elem) => elem.html_element_in_html_document_for_layout(),
|
||||||
None => false
|
None => false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -824,7 +824,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn as_element(&self) -> ThreadSafeLayoutElement<'ln> {
|
pub fn as_element(&self) -> ThreadSafeLayoutElement<'ln> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let element = match ElementCast::to_js(&self.get_jsmanaged().to_script()) {
|
let element = match ElementCast::to_layout_js(self.get_jsmanaged()) {
|
||||||
Some(e) => e.unsafe_get(),
|
Some(e) => e.unsafe_get(),
|
||||||
None => panic!("not an element")
|
None => panic!("not an element")
|
||||||
};
|
};
|
||||||
|
@ -936,7 +936,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
|
||||||
|
|
||||||
pub fn is_ignorable_whitespace(&self) -> bool {
|
pub fn is_ignorable_whitespace(&self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
let text: JS<Text> = match TextCast::to_js(&self.get_jsmanaged().to_script()) {
|
let text: LayoutJS<Text> = match TextCast::to_layout_js(self.get_jsmanaged()) {
|
||||||
Some(text) => text,
|
Some(text) => text,
|
||||||
None => return false
|
None => return false
|
||||||
};
|
};
|
||||||
|
@ -960,9 +960,9 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
|
||||||
|
|
||||||
pub fn get_input_value(&self) -> String {
|
pub fn get_input_value(&self) -> String {
|
||||||
unsafe {
|
unsafe {
|
||||||
let input: Option<JS<HTMLInputElement>> = HTMLInputElementCast::to_js(&self.get_jsmanaged().to_script());
|
let input: Option<LayoutJS<HTMLInputElement>> = HTMLInputElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
match input {
|
match input {
|
||||||
Some(input) => input.to_layout().get_value_for_layout(),
|
Some(input) => input.get_value_for_layout(),
|
||||||
None => panic!("not an input element!")
|
None => panic!("not an input element!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -970,8 +970,8 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
|
||||||
|
|
||||||
pub fn get_input_size(&self) -> u32 {
|
pub fn get_input_size(&self) -> u32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
match HTMLInputElementCast::to_js(&self.get_jsmanaged().to_script()) {
|
match HTMLInputElementCast::to_layout_js(self.get_jsmanaged()) {
|
||||||
Some(input) => input.to_layout().get_size_for_layout(),
|
Some(input) => input.get_size_for_layout(),
|
||||||
None => panic!("not an input element!")
|
None => panic!("not an input element!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -980,7 +980,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
|
||||||
pub fn get_unsigned_integer_attribute(self, attribute: UnsignedIntegerAttribute)
|
pub fn get_unsigned_integer_attribute(self, attribute: UnsignedIntegerAttribute)
|
||||||
-> Option<u32> {
|
-> Option<u32> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let elem: Option<JS<Element>> = ElementCast::to_js(&self.get_jsmanaged().to_script());
|
let elem: Option<LayoutJS<Element>> = ElementCast::to_layout_js(self.get_jsmanaged());
|
||||||
match elem {
|
match elem {
|
||||||
Some(element) => {
|
Some(element) => {
|
||||||
(*element.unsafe_get()).get_unsigned_integer_attribute_for_layout(attribute)
|
(*element.unsafe_get()).get_unsigned_integer_attribute_for_layout(attribute)
|
||||||
|
|
|
@ -144,14 +144,6 @@ pub struct LayoutJS<T> {
|
||||||
ptr: NonZero<*const T>
|
ptr: NonZero<*const T>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> LayoutJS<T> {
|
|
||||||
pub fn to_script(self) -> JS<T> {
|
|
||||||
JS {
|
|
||||||
ptr: self.ptr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T> Copy for JS<T> {}
|
impl<T> Copy for JS<T> {}
|
||||||
|
|
||||||
impl<T> Copy for LayoutJS<T> {}
|
impl<T> Copy for LayoutJS<T> {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue