aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/script/dom/element.rs7
-rw-r--r--src/components/script/dom/node.rs13
2 files changed, 14 insertions, 6 deletions
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs
index bd0f6bb9b81..156f49f67a3 100644
--- a/src/components/script/dom/element.rs
+++ b/src/components/script/dom/element.rs
@@ -20,8 +20,7 @@ use dom::htmlcollection::HTMLCollection;
use dom::htmlserializer::serialize;
use dom::node::{ElementNodeTypeId, Node, NodeHelpers, NodeIterator, document_from_node};
use dom::virtualmethods::{VirtualMethods, vtable_for};
-use layout_interface::{ContentBoxesQuery};
-use layout_interface::{ContentBoxesResponse, ContentChangedDocumentDamage};
+use layout_interface::ContentChangedDocumentDamage;
use layout_interface::MatchSelectorsDocumentDamage;
use style;
use servo_util::namespace;
@@ -605,9 +604,7 @@ impl Element {
let doc = self.node.owner_doc();
let win = &doc.get().window;
let node: JS<Node> = NodeCast::from(abstract_self);
- let (chan, port) = channel();
- let addr = node.to_trusted_node_address();
- let ContentBoxesResponse(rects) = win.get().page().query_layout(ContentBoxesQuery(addr, chan), port);
+ let rects = node.get_content_boxes();
let rects = rects.map(|r| {
ClientRect::new(
win,
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs
index 53c3776fab5..35a2028478e 100644
--- a/src/components/script/dom/node.rs
+++ b/src/components/script/dom/node.rs
@@ -28,7 +28,8 @@ use dom::virtualmethods::{VirtualMethods, vtable_for};
use dom::window::Window;
use geom::rect::Rect;
use html::hubbub_html_parser::build_element_from_tag;
-use layout_interface::{ContentBoxQuery, ContentBoxResponse, LayoutChan, ReapLayoutDataMsg, TrustedNodeAddress, UntrustedNodeAddress};
+use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery, ContentBoxesResponse,
+ LayoutChan, ReapLayoutDataMsg, TrustedNodeAddress, UntrustedNodeAddress};
use servo_util::geometry::Au;
use servo_util::str::{DOMString, null_str_as_empty};
@@ -286,6 +287,7 @@ pub trait NodeHelpers {
fn to_trusted_node_address(&self) -> TrustedNodeAddress;
fn get_bounding_content_box(&self) -> Rect<Au>;
+ fn get_content_boxes(&self) -> ~[Rect<Au>];
}
impl NodeHelpers for JS<Node> {
@@ -577,6 +579,15 @@ impl NodeHelpers for JS<Node> {
let ContentBoxResponse(rect) = page.query_layout(ContentBoxQuery(addr, chan), port);
rect
}
+
+ fn get_content_boxes(&self) -> ~[Rect<Au>] {
+ let window = window_from_node(self);
+ let page = window.get().page();
+ let (chan, port) = channel();
+ let addr = self.to_trusted_node_address();
+ let ContentBoxesResponse(rects) = page.query_layout(ContentBoxesQuery(addr, chan), port);
+ rects
+ }
}
//