Remove use of RootedVec in DOMRectList

This commit is contained in:
Anthony Ramine 2015-05-19 03:00:59 +02:00
parent 81cacdf820
commit 22931145ab
2 changed files with 11 additions and 17 deletions

View file

@ -6,7 +6,6 @@ use dom::bindings::codegen::Bindings::DOMRectListBinding;
use dom::bindings::codegen::Bindings::DOMRectListBinding::DOMRectListMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, JSRef, Temporary};
use dom::bindings::trace::RootedVec;
use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::domrect::DOMRect;
use dom::window::Window;
@ -19,17 +18,17 @@ pub struct DOMRectList {
}
impl DOMRectList {
fn new_inherited(window: JSRef<Window>,
rects: &RootedVec<JS<DOMRect>>) -> DOMRectList {
fn new_inherited<T>(window: JSRef<Window>, rects: T) -> DOMRectList
where T: Iterator<Item=Temporary<DOMRect>> {
DOMRectList {
reflector_: Reflector::new(),
rects: (**rects).clone(),
rects: rects.map(JS::from_rooted).collect(),
window: JS::from_rooted(window),
}
}
pub fn new(window: JSRef<Window>,
rects: &RootedVec<JS<DOMRect>>) -> Temporary<DOMRectList> {
pub fn new<T>(window: JSRef<Window>, rects: T) -> Temporary<DOMRectList>
where T: Iterator<Item=Temporary<DOMRect>> {
reflect_dom_object(box DOMRectList::new_inherited(window, rects),
GlobalRef::Window(window), DOMRectListBinding::Wrap)
}

View file

@ -1243,17 +1243,12 @@ impl<'a> ElementMethods for JSRef<'a, Element> {
let win = window_from_node(self).root();
let node: JSRef<Node> = NodeCast::from_ref(self);
let raw_rects = node.get_content_boxes();
let mut rects = RootedVec::new();
for rect in raw_rects.iter() {
let rect = DOMRect::new(win.r(),
rect.origin.y,
rect.origin.y + rect.size.height,
rect.origin.x,
rect.origin.x + rect.size.width);
rects.push(JS::from_rooted(rect));
}
DOMRectList::new(win.r(), &rects)
let rects = raw_rects.iter().map(|rect| {
DOMRect::new(win.r(),
rect.origin.y, rect.origin.y + rect.size.height,
rect.origin.x, rect.origin.x + rect.size.width)
});
DOMRectList::new(win.r(), rects)
}
// http://dev.w3.org/csswg/cssom-view/#dom-element-getboundingclientrect