diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-05-08 23:40:15 +0200 |
---|---|---|
committer | Jack Moffitt <jack@metajack.im> | 2014-05-22 16:36:40 -0600 |
commit | eaedeb07cb0c4fdda37f35057588e4a769fbe758 (patch) | |
tree | cdeb134482f06818f7d6dbad8e008882fcc336a5 /src | |
parent | 3644d0272c89336954358eb5005f884a9c89e8bc (diff) | |
download | servo-eaedeb07cb0c4fdda37f35057588e4a769fbe758.tar.gz servo-eaedeb07cb0c4fdda37f35057588e4a769fbe758.zip |
Update Rust.
Diffstat (limited to 'src')
183 files changed, 623 insertions, 638 deletions
diff --git a/src/compiler/rust b/src/compiler/rust -Subproject 5099b8c863150675450631347436b7d220f4efd +Subproject aa6725407ae0a2cb88458e147e76adf8bcae096 diff --git a/src/compiler/rust-auto-clean-trigger b/src/compiler/rust-auto-clean-trigger index 12c67fa240a..86aa184d8bc 100644 --- a/src/compiler/rust-auto-clean-trigger +++ b/src/compiler/rust-auto-clean-trigger @@ -1,4 +1,4 @@ # If this file is modified, then rust will be forcibly cleaned and then rebuilt. # The actual contents of this file do not matter, but to trigger a change on the # build bots then the contents should be changed so git updates the mtime. -2014-04-10b +2014-05-08 diff --git a/src/components/gfx/display_list.rs b/src/components/gfx/display_list.rs index 63ea5596e3c..a05773e5f26 100644 --- a/src/components/gfx/display_list.rs +++ b/src/components/gfx/display_list.rs @@ -111,7 +111,7 @@ impl StackingContext { for item in list.move_iter() { match item { - ClipDisplayItemClass(~ClipDisplayItem { + ClipDisplayItemClass(box ClipDisplayItem { base: base, children: sublist }) => { @@ -168,7 +168,7 @@ impl StackingContext { let push = |destination: &mut DisplayList, source: DisplayList, level| { if !source.is_empty() { let base = BaseDisplayItem::new(*clip_rect, clipping_dom_node, level); - destination.push(ClipDisplayItemClass(~ClipDisplayItem::new(base, source))) + destination.push(ClipDisplayItemClass(box ClipDisplayItem::new(base, source))) } }; @@ -332,19 +332,19 @@ impl DisplayList { /// One drawing command in the list. pub enum DisplayItem { - SolidColorDisplayItemClass(~SolidColorDisplayItem), - TextDisplayItemClass(~TextDisplayItem), - ImageDisplayItemClass(~ImageDisplayItem), - BorderDisplayItemClass(~BorderDisplayItem), - LineDisplayItemClass(~LineDisplayItem), - ClipDisplayItemClass(~ClipDisplayItem), + SolidColorDisplayItemClass(Box<SolidColorDisplayItem>), + TextDisplayItemClass(Box<TextDisplayItem>), + ImageDisplayItemClass(Box<ImageDisplayItem>), + BorderDisplayItemClass(Box<BorderDisplayItem>), + LineDisplayItemClass(Box<LineDisplayItem>), + ClipDisplayItemClass(Box<ClipDisplayItem>), /// A pseudo-display item that exists only so that queries like `ContentBoxQuery` and /// `ContentBoxesQuery` can be answered. /// /// FIXME(pcwalton): This is really bogus. Those queries should not consult the display list /// but should instead consult the flow/box tree. - PseudoDisplayItemClass(~BaseDisplayItem), + PseudoDisplayItemClass(Box<BaseDisplayItem>), } /// Information common to all display items. @@ -393,7 +393,7 @@ pub struct TextDisplayItem { pub base: BaseDisplayItem, /// The text run. - pub text_run: Arc<~TextRun>, + pub text_run: Arc<Box<TextRun>>, /// The range of text within the text run. pub range: Range<CharIndex>, @@ -408,7 +408,7 @@ pub struct TextDisplayItem { /// Renders an image. pub struct ImageDisplayItem { pub base: BaseDisplayItem, - pub image: Arc<~Image>, + pub image: Arc<Box<Image>>, /// The dimensions to which the image display item should be stretched. If this is smaller than /// the bounds of this display item, then the image will be repeated in the appropriate @@ -631,7 +631,7 @@ impl DisplayItem { } pub fn debug_with_level(&self, level: uint) { - let mut indent = "".to_owned(); + let mut indent = StrBuf::new(); for _ in range(0, level) { indent.push_str("| ") } diff --git a/src/components/gfx/font.rs b/src/components/gfx/font.rs index 4470b1a372a..a1e3313d804 100644 --- a/src/components/gfx/font.rs +++ b/src/components/gfx/font.rs @@ -217,10 +217,9 @@ impl<'a> Font { backend: BackendType) -> Result<Rc<RefCell<Font>>, ()> { let handle = FontHandleMethods::new_from_buffer(&ctx.handle, buffer, style); - let handle: FontHandle = if handle.is_ok() { - handle.unwrap() - } else { - return Err(handle.unwrap_err()); + let handle: FontHandle = match handle { + Ok(handle) => handle, + Err(()) => return Err(()), }; let metrics = handle.get_metrics(); @@ -329,7 +328,7 @@ impl<'a> Font { impl Font { pub fn draw_text_into_context(&mut self, rctx: &RenderContext, - run: &~TextRun, + run: &Box<TextRun>, range: &Range<CharIndex>, baseline_origin: Point2D<Au>, color: Color) { diff --git a/src/components/gfx/render_context.rs b/src/components/gfx/render_context.rs index d5df16b45ca..f62451e1418 100644 --- a/src/components/gfx/render_context.rs +++ b/src/components/gfx/render_context.rs @@ -23,7 +23,7 @@ use sync::Arc; pub struct RenderContext<'a> { pub draw_target: &'a DrawTarget, - pub font_ctx: &'a mut ~FontContext, + pub font_ctx: &'a mut Box<FontContext>, pub opts: &'a Opts, /// The rectangle that this context encompasses in page coordinates. pub page_rect: Rect<f32>, @@ -98,7 +98,7 @@ impl<'a> RenderContext<'a> { self.draw_target.pop_clip(); } - pub fn draw_image(&self, bounds: Rect<Au>, image: Arc<~Image>) { + pub fn draw_image(&self, bounds: Rect<Au>, image: Arc<Box<Image>>) { let size = Size2D(image.width as i32, image.height as i32); let pixel_width = match image.color_type { RGBA8 => 4, diff --git a/src/components/gfx/render_task.rs b/src/components/gfx/render_task.rs index 6d38286c0f9..5f722446568 100644 --- a/src/components/gfx/render_task.rs +++ b/src/components/gfx/render_task.rs @@ -30,7 +30,7 @@ use servo_util::time; use servo_util::task::send_on_failure; use std::comm::{channel, Receiver, Sender}; -use std::task; +use std::task::TaskBuilder; use sync::Arc; /// Information about a layer that layout sends to the painting task. @@ -50,7 +50,7 @@ pub struct RenderLayer { pub enum Msg { RenderMsg(SmallVec1<RenderLayer>), ReRenderMsg(Vec<BufferRequest>, f32, LayerId, Epoch), - UnusedBufferMsg(Vec<~LayerBuffer>), + UnusedBufferMsg(Vec<Box<LayerBuffer>>), PaintPermissionGranted, PaintPermissionRevoked, ExitMsg(Option<Sender<()>>), @@ -96,11 +96,11 @@ impl RenderChan { } pub fn send(&self, msg: Msg) { - assert!(self.try_send(msg), "RenderChan.send: render port closed") + assert!(self.send_opt(msg).is_ok(), "RenderChan.send: render port closed") } - pub fn try_send(&self, msg: Msg) -> bool { - self.chan.try_send(msg) + pub fn send_opt(&self, msg: Msg) -> Result<(), Msg> { + self.chan.send_opt(msg) } } @@ -116,7 +116,7 @@ pub struct RenderTask<C> { port: Receiver<Msg>, compositor: C, constellation_chan: ConstellationChan, - font_ctx: ~FontContext, + font_ctx: Box<FontContext>, opts: Opts, /// A channel to the profiler. @@ -138,7 +138,7 @@ pub struct RenderTask<C> { epoch: Epoch, /// A data structure to store unused LayerBuffers - buffer_map: BufferMap<~LayerBuffer>, + buffer_map: BufferMap<Box<LayerBuffer>>, } // If we implement this as a function, we get borrowck errors from borrowing @@ -174,7 +174,7 @@ impl<C: RenderListener + Send> RenderTask<C> { opts: Opts, profiler_chan: ProfilerChan, shutdown_chan: Sender<()>) { - let mut builder = task::task().named("RenderTask"); + let mut builder = TaskBuilder::new().named("RenderTask"); let ConstellationChan(c) = constellation_chan.clone(); send_on_failure(&mut builder, FailureMsg(failure_msg), c); builder.spawn(proc() { @@ -190,7 +190,7 @@ impl<C: RenderListener + Send> RenderTask<C> { port: port, compositor: compositor, constellation_chan: constellation_chan, - font_ctx: ~FontContext::new(FontContextInfo { + font_ctx: box FontContext::new(FontContextInfo { backend: opts.render_backend.clone(), needs_font_list: false, profiler_chan: profiler_chan.clone(), @@ -382,7 +382,7 @@ impl<C: RenderListener + Send> RenderTask<C> { width as i32 * 4); native_surface.mark_wont_leak(); - ~LayerBuffer { + box LayerBuffer { native_surface: native_surface, rect: tile.page_rect, screen_pos: tile.screen_rect, @@ -412,7 +412,7 @@ impl<C: RenderListener + Send> RenderTask<C> { NativeSurfaceAzureMethods::from_azure_surface(native_surface); native_surface.mark_wont_leak(); - ~LayerBuffer { + box LayerBuffer { native_surface: native_surface, rect: tile.page_rect, screen_pos: tile.screen_rect, @@ -425,7 +425,7 @@ impl<C: RenderListener + Send> RenderTask<C> { new_buffers.push(buffer); } - let layer_buffer_set = ~LayerBufferSet { + let layer_buffer_set = box LayerBufferSet { buffers: new_buffers, }; diff --git a/src/components/gfx/text/glyph.rs b/src/components/gfx/text/glyph.rs index c7d2761f322..545811cfee8 100644 --- a/src/components/gfx/text/glyph.rs +++ b/src/components/gfx/text/glyph.rs @@ -11,7 +11,7 @@ use std::cmp::{Ord, Eq}; use std::num::{NumCast, Zero}; use std::mem; use std::u16; -use std::slice; +use std::vec::Vec; use geom::point::Point2D; /// GlyphEntry is a port of Gecko's CompressedGlyph scheme for storing glyph data compactly. @@ -587,13 +587,13 @@ impl<'a> GlyphStore { let entry = match first_glyph_data.is_missing { true => GlyphEntry::missing(glyph_count), false => { - let glyphs_vec = slice::from_fn(glyph_count as uint, |i| { + let glyphs_vec = Vec::from_fn(glyph_count as uint, |i| { DetailedGlyph::new(data_for_glyphs[i].id, data_for_glyphs[i].advance, data_for_glyphs[i].offset) }); - self.detail_store.add_detailed_glyphs_for_entry(i, glyphs_vec); + self.detail_store.add_detailed_glyphs_for_entry(i, glyphs_vec.as_slice()); GlyphEntry::complex(first_glyph_data.cluster_start, first_glyph_data.ligature_start, glyph_count) diff --git a/src/components/gfx/text/shaping/harfbuzz.rs b/src/components/gfx/text/shaping/harfbuzz.rs index 4a5111b9839..f29528a1b01 100644 --- a/src/components/gfx/text/shaping/harfbuzz.rs +++ b/src/components/gfx/text/shaping/harfbuzz.rs @@ -42,7 +42,6 @@ use std::cast::transmute; use std::char; use std::cmp; use std::ptr::null; -use std::slice; static NO_GLYPH: i32 = -1; static CONTINUATION_BYTE: i32 = -2; @@ -243,15 +242,15 @@ impl Shaper { } // make map of what chars have glyphs - let mut byteToGlyph: ~[i32]; + let mut byteToGlyph: Vec<i32>; // fast path: all chars are single-byte. if byte_max == char_max { - byteToGlyph = slice::from_elem(byte_max as uint, NO_GLYPH); + byteToGlyph = Vec::from_elem(byte_max as uint, NO_GLYPH); } else { - byteToGlyph = slice::from_elem(byte_max as uint, CONTINUATION_BYTE); + byteToGlyph = Vec::from_elem(byte_max as uint, CONTINUATION_BYTE); for (i, _) in text.char_indices() { - byteToGlyph[i] = NO_GLYPH; + *byteToGlyph.get_mut(i) = NO_GLYPH; } } @@ -260,8 +259,8 @@ impl Shaper { // loc refers to a *byte* offset within the utf8 string. let loc = glyph_data.byte_offset_of_glyph(i); if loc < byte_max { - assert!(byteToGlyph[loc as uint] != CONTINUATION_BYTE); - byteToGlyph[loc as uint] = i as i32; + assert!(*byteToGlyph.get(loc as uint) != CONTINUATION_BYTE); + *byteToGlyph.get_mut(loc as uint) = i as i32; } else { debug!("ERROR: tried to set out of range byteToGlyph: idx={}, glyph idx={}", loc, @@ -273,7 +272,7 @@ impl Shaper { debug!("text: {:s}", text); debug!("(char idx): char->(glyph index):"); for (i, ch) in text.char_indices() { - debug!("{}: {} --> {:d}", i, ch, byteToGlyph[i] as int); + debug!("{}: {} --> {:d}", i, ch, *byteToGlyph.get(i) as int); } // some helpers @@ -305,7 +304,7 @@ impl Shaper { char_byte_span.begin(), char_byte_span.length(), glyph_span.begin()); while char_byte_span.end() != byte_max && - byteToGlyph[char_byte_span.end() as uint] == NO_GLYPH { + *byteToGlyph.get(char_byte_span.end() as uint) == NO_GLYPH { debug!("Extending char byte span to include byte offset={} with no associated \ glyph", char_byte_span.end()); let range = text.char_range_at(char_byte_span.end() as uint); @@ -317,8 +316,8 @@ impl Shaper { // in cases where one char made several glyphs and left some unassociated chars. let mut max_glyph_idx = glyph_span.end(); for i in char_byte_span.each_index() { - if byteToGlyph[i as uint] > NO_GLYPH { - max_glyph_idx = cmp::max(byteToGlyph[i as uint] as int + 1, max_glyph_idx); + if *byteToGlyph.get(i as uint) > NO_GLYPH { + max_glyph_idx = cmp::max(*byteToGlyph.get(i as uint) as int + 1, max_glyph_idx); } } @@ -377,7 +376,7 @@ impl Shaper { let mut covered_byte_span = char_byte_span.clone(); // extend, clipping at end of text range. while covered_byte_span.end() < byte_max - && byteToGlyph[covered_byte_span.end() as uint] == NO_GLYPH { + && *byteToGlyph.get(covered_byte_span.end() as uint) == NO_GLYPH { let range = text.char_range_at(covered_byte_span.end() as uint); drop(range.ch); covered_byte_span.extend_to(range.next as int); diff --git a/src/components/gfx/text/util.rs b/src/components/gfx/text/util.rs index 5c25a007337..9bf3ba6ebf5 100644 --- a/src/components/gfx/text/util.rs +++ b/src/components/gfx/text/util.rs @@ -25,7 +25,7 @@ pub enum CompressionMode { pub fn transform_text(text: &str, mode: CompressionMode, incoming_whitespace: bool, new_line_pos: &mut Vec<CharIndex>) -> (~str, bool) { - let mut out_str: ~str = "".to_owned(); + let mut out_str = StrBuf::new(); let out_whitespace = match mode { CompressNone | DiscardNewline => { let mut new_line_index = CharIndex(0); @@ -82,7 +82,7 @@ pub fn transform_text(text: &str, mode: CompressionMode, } }; - return (out_str, out_whitespace); + return (out_str.into_owned(), out_whitespace); fn is_in_whitespace(ch: char, mode: CompressionMode) -> bool { match (ch, mode) { diff --git a/src/components/macros/macros.rs b/src/components/macros/macros.rs index 76ceb8d1515..a90be49ca9f 100644 --- a/src/components/macros/macros.rs +++ b/src/components/macros/macros.rs @@ -47,7 +47,7 @@ macro_rules! lazy_init( static mut s: *$T = 0 as *$T; static mut ONCE: ::sync::one::Once = ::sync::one::ONCE_INIT; ONCE.doit(|| { - s = ::std::cast::transmute::<~$T, *$T>(~($e)); + s = ::std::cast::transmute::<Box<$T>, *$T>(box () ($e)); }); &*s } @@ -65,8 +65,8 @@ mod tests { lazy_init! { static ref NUMBER: uint = times_two(3); - static ref VEC: [~uint, ..3] = [~1, ~2, ~3]; - static ref OWNED_STRING: ~str = ~"hello"; + static ref VEC: [Box<uint>, ..3] = [box 1, box 2, box 3]; + static ref OWNED_STRING: ~str = "hello".to_owned(); static ref HASHMAP: collections::HashMap<uint, &'static str> = { let mut m = collections::HashMap::new(); m.insert(0u, "abc"); @@ -82,11 +82,11 @@ mod tests { #[test] fn test_basic() { - assert_eq!(*OWNED_STRING, ~"hello"); + assert_eq!(*OWNED_STRING, "hello".to_owned()); assert_eq!(*NUMBER, 6); assert!(HASHMAP.find(&1).is_some()); assert!(HASHMAP.find(&3).is_none()); - assert_eq!(VEC.as_slice(), &[~1, ~2, ~3]); + assert_eq!(VEC.as_slice(), &[box 1, box 2, box 3]); } #[test] diff --git a/src/components/main/compositing/compositor.rs b/src/components/main/compositing/compositor.rs index 77fce6fd116..1422e8e51f5 100644 --- a/src/components/main/compositing/compositor.rs +++ b/src/components/main/compositing/compositor.rs @@ -34,7 +34,6 @@ use servo_msg::constellation_msg; use servo_util::opts::Opts; use servo_util::time::{profile, ProfilerChan}; use servo_util::{time, url}; -use std::comm::{Empty, Disconnected, Data, Sender, Receiver}; use std::io::timer::sleep; use std::path::Path; use std::rc::Rc; @@ -219,8 +218,8 @@ impl IOCompositor { // another task from finishing (i.e. SetIds) loop { match self.port.try_recv() { - Empty | Disconnected => break, - Data(_) => {}, + Err(_) => break, + Ok(_) => {}, } } @@ -232,11 +231,9 @@ impl IOCompositor { fn handle_message(&mut self) { loop { match (self.port.try_recv(), self.shutting_down) { - (Empty, _) => break, + (Err(_), _) => break, - (Disconnected, _) => break, - - (Data(Exit(chan)), _) => { + (Ok(Exit(chan)), _) => { debug!("shutting down the constellation"); let ConstellationChan(ref con_chan) = self.constellation_chan; con_chan.send(ExitMsg); @@ -244,38 +241,38 @@ impl IOCompositor { self.shutting_down = true; } - (Data(ShutdownComplete), _) => { + (Ok(ShutdownComplete), _) => { debug!("constellation completed shutdown"); self.done = true; } - (Data(ChangeReadyState(ready_state)), false) => { + (Ok(ChangeReadyState(ready_state)), false) => { self.window.set_ready_state(ready_state); self.ready_state = ready_state; } - (Data(ChangeRenderState(render_state)), false) => { + (Ok(ChangeRenderState(render_state)), false) => { self.change_render_state(render_state); } - (Data(SetUnRenderedColor(pipeline_id, layer_id, color)), false) => { + (Ok(SetUnRenderedColor(pipeline_id, layer_id, color)), false) => { self.set_unrendered_color(pipeline_id, layer_id, color); } - (Data(SetIds(frame_tree, response_chan, new_constellation_chan)), _) => { + (Ok(SetIds(frame_tree, response_chan, new_constellation_chan)), _) => { self.set_ids(frame_tree, response_chan, new_constellation_chan); } - (Data(GetGraphicsMetadata(chan)), false) => { + (Ok(GetGraphicsMetadata(chan)), false) => { chan.send(Some(azure_hl::current_graphics_metadata())); } - (Data(CreateRootCompositorLayerIfNecessary(pipeline_id, layer_id, size)), + (Ok(CreateRootCompositorLayerIfNecessary(pipeline_id, layer_id, size)), false) => { self.create_root_compositor_layer_if_necessary(pipeline_id, layer_id, size); } - (Data(CreateDescendantCompositorLayerIfNecessary(pipeline_id, + (Ok(CreateDescendantCompositorLayerIfNecessary(pipeline_id, layer_id, rect, scroll_behavior)), @@ -286,27 +283,27 @@ impl IOCompositor { scroll_behavior); } - (Data(SetLayerPageSize(pipeline_id, layer_id, new_size, epoch)), false) => { + (Ok(SetLayerPageSize(pipeline_id, layer_id, new_size, epoch)), false) => { self.set_layer_page_size(pipeline_id, layer_id, new_size, epoch); } - (Data(SetLayerClipRect(pipeline_id, layer_id, new_rect)), false) => { + (Ok(SetLayerClipRect(pipeline_id, layer_id, new_rect)), false) => { self.set_layer_clip_rect(pipeline_id, layer_id, new_rect); } - (Data(DeleteLayerGroup(id)), _) => { + (Ok(DeleteLayerGroup(id)), _) => { self.delete_layer(id); } - (Data(Paint(pipeline_id, layer_id, new_layer_buffer_set, epoch)), false) => { + (Ok(Paint(pipeline_id, layer_id, new_layer_buffer_set, epoch)), false) => { self.paint(pipeline_id, layer_id, new_layer_buffer_set, epoch); } - (Data(ScrollFragmentPoint(pipeline_id, layer_id, point)), false) => { + (Ok(ScrollFragmentPoint(pipeline_id, layer_id, point)), false) => { self.scroll_fragment_to_point(pipeline_id, layer_id, point); } - (Data(LoadComplete(..)), false) => { + (Ok(LoadComplete(..)), false) => { self.load_complete = true; } @@ -492,7 +489,7 @@ impl IOCompositor { fn paint(&mut self, pipeline_id: PipelineId, layer_id: LayerId, - new_layer_buffer_set: ~LayerBufferSet, + new_layer_buffer_set: Box<LayerBufferSet>, epoch: Epoch) { debug!("compositor received new frame"); diff --git a/src/components/main/compositing/compositor_layer.rs b/src/components/main/compositing/compositor_layer.rs index 160024c1815..14c11fb9eda 100644 --- a/src/components/main/compositing/compositor_layer.rs +++ b/src/components/main/compositing/compositor_layer.rs @@ -98,7 +98,7 @@ pub struct CompositorLayer { /// Helper struct for keeping CompositorLayer children organized. pub struct CompositorLayerChild { /// The child itself. - pub child: ~CompositorLayer, + pub child: Box<CompositorLayer>, /// A ContainerLayer managed by the parent node. This deals with clipping and /// positioning, and is added above the child's layer tree. pub container: Rc<ContainerLayer>, @@ -107,7 +107,7 @@ pub struct CompositorLayerChild { /// Helper enum for storing quadtrees. Either contains a quadtree, or contains /// information from which a quadtree can be built. enum MaybeQuadtree { - Tree(Quadtree<~LayerBuffer>), + Tree(Quadtree<Box<LayerBuffer>>), NoTree(uint, Option<uint>), } @@ -253,14 +253,14 @@ impl CompositorLayer { return true } - let mut kid = ~CompositorLayer::new(self.pipeline.clone(), - child_layer_id, - rect, - Some(page_size), - self.quadtree.tile_size(), - self.cpu_painting, - DoesntWantScrollEvents, - scroll_policy); + let mut kid = box CompositorLayer::new(self.pipeline.clone(), + child_layer_id, + rect, + Some(page_size), + self.quadtree.tile_size(), + self.cpu_painting, + DoesntWantScrollEvents, + scroll_policy); kid.hidden = false; @@ -406,13 +406,13 @@ impl CompositorLayer { MouseWindowMouseUpEvent(button, _) => MouseUpEvent(button, cursor), }; let ScriptChan(ref chan) = self.pipeline.script_chan; - chan.try_send(SendEventMsg(self.pipeline.id.clone(), message)); + chan.send_opt(SendEventMsg(self.pipeline.id.clone(), message)); } pub fn send_mouse_move_event(&self, cursor: Point2D<f32>) { let message = MouseMoveEvent(cursor); let ScriptChan(ref chan) = self.pipeline.script_chan; - chan.try_send(SendEventMsg(self.pipeline.id.clone(), message)); + chan.send_opt(SendEventMsg(self.pipeline.id.clone(), message)); } // Given the current window size, determine which tiles need to be (re-)rendered and sends them @@ -432,7 +432,7 @@ impl CompositorLayer { redisplay = !unused.is_empty(); if redisplay { // Send back unused tiles. - self.pipeline.render_chan.try_send(UnusedBufferMsg(unused)); + self.pipeline.render_chan.send_opt(UnusedBufferMsg(unused)); } if !request.is_empty() { // Ask for tiles. @@ -440,7 +440,7 @@ impl CompositorLayer { // FIXME(#2003, pcwalton): We may want to batch these up in the case in which // one page has multiple layers, to avoid the user seeing inconsistent states. let msg = ReRenderMsg(request, scale, self.id, self.epoch); - self.pipeline.render_chan.try_send(msg); + self.pipeline.render_chan.send_opt(msg); } } }; @@ -550,7 +550,7 @@ impl CompositorLayer { Tree(ref mut quadtree) => { self.pipeline .render_chan - .try_send(UnusedBufferMsg(quadtree.resize(new_size.width as uint, + .send_opt(UnusedBufferMsg(quadtree.resize(new_size.width as uint, new_size.height as uint))); } NoTree(tile_size, max_mem) => { @@ -655,7 +655,7 @@ impl CompositorLayer { child.page_size = Some(new_size); match child.quadtree { Tree(ref mut quadtree) => { - child.pipeline.render_chan.try_send(UnusedBufferMsg(quadtree.resize(new_size.width as uint, + child.pipeline.render_chan.send_opt(UnusedBufferMsg(quadtree.resize(new_size.width as uint, new_size.height as uint))); } NoTree(tile_size, max_mem) => { @@ -801,9 +801,9 @@ impl CompositorLayer { graphics_context: &NativeCompositingGraphicsContext, pipeline_id: PipelineId, layer_id: LayerId, - mut new_buffers: ~LayerBufferSet, + mut new_buffers: Box<LayerBufferSet>, epoch: Epoch) - -> Option<~LayerBufferSet> { + -> Option<Box<LayerBufferSet>> { debug!("compositor_layer: starting add_buffers()"); if self.pipeline.id != pipeline_id || self.id != layer_id { // ID does not match ours, so recurse on descendents (including hidden children). @@ -829,7 +829,7 @@ impl CompositorLayer { self.epoch, epoch, self.pipeline.id); - self.pipeline.render_chan.try_send(UnusedBufferMsg(new_buffers.buffers)); + self.pipeline.render_chan.send_opt(UnusedBufferMsg(new_buffers.buffers)); return None } @@ -849,7 +849,7 @@ impl CompositorLayer { buffer)); } if !unused_tiles.is_empty() { // send back unused buffers - self.pipeline.render_chan.try_send(UnusedBufferMsg(unused_tiles)); + self.pipeline.render_chan.send_opt(UnusedBufferMsg(unused_tiles)); } } @@ -926,7 +926,7 @@ impl CompositorLayer { tile.mark_wont_leak() } - self.pipeline.render_chan.try_send(UnusedBufferMsg(tiles)); + self.pipeline.render_chan.send_opt(UnusedBufferMsg(tiles)); } } } diff --git a/src/components/main/compositing/compositor_task.rs b/src/components/main/compositing/compositor_task.rs index 528cfd13b3d..8891bb2575a 100644 --- a/src/components/main/compositing/compositor_task.rs +++ b/src/components/main/compositing/compositor_task.rs @@ -58,8 +58,8 @@ impl ScriptListener for CompositorChan { port.recv(); } - fn dup(&self) -> ~ScriptListener { - ~self.clone() as ~ScriptListener + fn dup(&self) -> Box<ScriptListener> { + box self.clone() as Box<ScriptListener> } } @@ -74,7 +74,7 @@ impl RenderListener for CompositorChan { fn paint(&self, pipeline_id: PipelineId, layer_id: LayerId, - layer_buffer_set: ~LayerBufferSet, + layer_buffer_set: Box<LayerBufferSet>, epoch: Epoch) { self.chan.send(Paint(pipeline_id, layer_id, layer_buffer_set, epoch)) } @@ -179,7 +179,7 @@ pub enum Msg { /// Scroll a page in a window ScrollFragmentPoint(PipelineId, LayerId, Point2D<f32>), /// Requests that the compositor paint the given layer buffer set for the given page size. - Paint(PipelineId, LayerId, ~LayerBufferSet, Epoch), + Paint(PipelineId, LayerId, Box<LayerBufferSet>, Epoch), /// Alerts the compositor to the current status of page loading. ChangeReadyState(ReadyState), /// Alerts the compositor to the current status of rendering. diff --git a/src/components/main/compositing/headless.rs b/src/components/main/compositing/headless.rs index 2c9087d1334..1f9fef2ae0b 100644 --- a/src/components/main/compositing/headless.rs +++ b/src/components/main/compositing/headless.rs @@ -6,7 +6,6 @@ use compositing::*; use geom::size::Size2D; use servo_msg::constellation_msg::{ConstellationChan, ExitMsg, ResizedWindowMsg}; -use std::comm::{Empty, Disconnected, Data, Receiver}; use servo_util::time::ProfilerChan; use servo_util::time; @@ -42,8 +41,8 @@ impl NullCompositor { // another task from finishing (i.e. SetIds) loop { match compositor.port.try_recv() { - Empty | Disconnected => break, - Data(_) => {}, + Err(_) => break, + Ok(_) => {}, } } diff --git a/src/components/main/compositing/quadtree.rs b/src/components/main/compositing/quadtree.rs index 8e5354aff61..a26c69deaae 100644 --- a/src/components/main/compositing/quadtree.rs +++ b/src/components/main/compositing/quadtree.rs @@ -12,8 +12,6 @@ use gfx::render_task::BufferRequest; use std::cmp; use std::mem::replace; use std::num::next_power_of_two; -use std::slice; -use std::slice::build; use servo_msg::compositor_msg::Tile; #[cfg(test)] @@ -23,7 +21,7 @@ use layers::platform::surface::NativePaintingGraphicsContext; /// at this level are in pixel coordinates. pub struct Quadtree<T> { // The root node of the quadtree - pub root: ~QuadtreeNode<T>, + pub root: Box<QuadtreeNode<T>>, // The size of the layer in pixels. Tiles will be clipped to this size. // Note that the underlying quadtree has a potentailly larger size, since it is rounded // to the next highest power of two. @@ -45,7 +43,7 @@ struct QuadtreeNode<T> { /// The width and height of the node in page coordinates. pub size: f32, /// The node's children. - pub quadrants: [Option<~QuadtreeNode<T>>, ..4], + pub quadrants: [Option<Box<QuadtreeNode<T>>>, ..4], /// Combined size of self.tile and tiles of all descendants pub tile_mem: uint, /// The current status of this node. See below for details. @@ -92,7 +90,7 @@ impl<T: Tile> Quadtree<T> { let size = power_of_two * tile_size; Quadtree { - root: ~QuadtreeNode { + root: box QuadtreeNode { tile: None, origin: Point2D(0f32, 0f32), size: size as f32, @@ -165,7 +163,7 @@ impl<T: Tile> Quadtree<T> { let power_of_two = next_power_of_two(num_tiles); let size = power_of_two * self.max_tile_size; let ret = self.root.collect_tiles(); - self.root = ~QuadtreeNode { + self.root = box QuadtreeNode { tile: None, origin: Point2D(0f32, 0f32), size: size as f32, @@ -193,7 +191,7 @@ impl<T: Tile> Quadtree<T> { if difference > 0 { // doubling let difference = difference as uint; for i in range(0, difference) { - let new_root = ~QuadtreeNode { + let new_root = box QuadtreeNode { tile: None, origin: Point2D(0f32, 0f32), size: new_size as f32 / ((difference - i - 1) as f32).exp2(), @@ -210,7 +208,7 @@ impl<T: Tile> Quadtree<T> { match remove { Some(child) => self.root = child, None => { - self.root = ~QuadtreeNode { + self.root = box QuadtreeNode { tile: None, origin: Point2D(0f32, 0f32), size: new_size as f32, @@ -334,7 +332,7 @@ impl<T: Tile> QuadtreeNode<T> { TL | TR => self.origin.y, BL | BR => self.origin.y + new_size, }; - let mut c = ~QuadtreeNode::new_child(new_x, new_y, new_size); + let mut c = box QuadtreeNode::new_child(new_x, new_y, new_size); let (delta, unused) = c.add_tile(x, y, tile, tile_size); self.tile_mem = (self.tile_mem as int + delta) as uint; self.quadrants[quad as uint] = Some(c); @@ -376,7 +374,7 @@ impl<T: Tile> QuadtreeNode<T> { TL | TR => self.origin.y, BL | BR => self.origin.y + new_size, }; - let mut c = ~QuadtreeNode::new_child(new_x, new_y, new_size); + let mut c = box QuadtreeNode::new_child(new_x, new_y, new_size); let result = c.get_tile_rect(x, y, clip_x, clip_y, scale, tile_size); self.quadrants[quad as uint] = Some(c); result @@ -523,30 +521,27 @@ impl<T: Tile> QuadtreeNode<T> { let w_br_quad = self.get_quadrant(w_x + w_width, w_y + w_height); // Figure out which quadrants the window is in - let builder = |push: |Quadrant|| { - match (w_tl_quad, w_br_quad) { - (tl, br) if tl as int == br as int => { - push(tl); - } - (TL, br) => { - push(TL); - push(br); - match br { - BR => { - push(TR); - push(BL); - } - _ => {} + let mut quads_to_check = Vec::with_capacity(4); + match (w_tl_quad, w_br_quad) { + (tl, br) if tl as int == br as int => { + quads_to_check.push(tl); + } + (TL, br) => { + quads_to_check.push(TL); + quads_to_check.push(br); + match br { + BR => { + quads_to_check.push(TR); + quads_to_check.push(BL); } - } - (tl, br) => { - push(tl); - push(br); + _ => {} } } - }; - - let quads_to_check = slice::build(Some(4), builder); + (tl, br) => { + quads_to_check.push(tl); + quads_to_check.push(br); + } + } let mut request = vec!(); let mut unused = vec!(); @@ -588,7 +583,7 @@ impl<T: Tile> QuadtreeNode<T> { TL | TR => self.origin.y, BL | BR => self.origin.y + new_size, }; - let mut child = ~QuadtreeNode::new_child(new_x, new_y, new_size); + let mut child = box QuadtreeNode::new_child(new_x, new_y, new_size); let ret = child.get_tile_rects(new_window, clip, scale, tile_size, override); self.quadrants[*quad as uint] = Some(child); ret diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs index e2c63f16630..1384ad0f285 100644 --- a/src/components/main/constellation.rs +++ b/src/components/main/constellation.rs @@ -396,10 +396,10 @@ impl Constellation { fn force_pipeline_exit(old_pipeline: &Rc<Pipeline>) { let ScriptChan(ref old_script) = old_pipeline.script_chan; - old_script.try_send(ExitPipelineMsg(old_pipeline.id)); - old_pipeline.render_chan.chan.try_send(render_task::ExitMsg(None)); + old_script.send_opt(ExitPipelineMsg(old_pipeline.id)); + old_pipeline.render_chan.chan.send_opt(render_task::ExitMsg(None)); let LayoutChan(ref old_layout) = old_pipeline.layout_chan; - old_layout.try_send(layout_interface::ExitNowMsg); + old_layout.send_opt(layout_interface::ExitNowMsg); } force_pipeline_exit(&old_pipeline); self.pipelines.remove(&pipeline_id); @@ -804,7 +804,7 @@ impl Constellation { debug!("constellation sending resize message to active frame"); let pipeline = &frame_tree.pipeline; let ScriptChan(ref chan) = pipeline.script_chan; - chan.try_send(ResizeMsg(pipeline.id, new_size)); + chan.send_opt(ResizeMsg(pipeline.id, new_size)); already_seen.insert(pipeline.id); } for frame_tree in self.navigation_context.previous.iter() @@ -813,7 +813,7 @@ impl Constellation { if !already_seen.contains(&pipeline.id) { debug!("constellation sending resize message to inactive frame"); let ScriptChan(ref chan) = pipeline.script_chan; - chan.try_send(ResizeInactiveMsg(pipeline.id, new_size)); + chan.send_opt(ResizeInactiveMsg(pipeline.id, new_size)); already_seen.insert(pipeline.id); } } @@ -826,7 +826,7 @@ impl Constellation { debug!("constellation sending resize message to pending outer frame ({:?})", frame_tree.pipeline.id); let ScriptChan(ref chan) = frame_tree.pipeline.script_chan; - chan.try_send(ResizeMsg(frame_tree.pipeline.id, new_size)); + chan.send_opt(ResizeMsg(frame_tree.pipeline.id, new_size)); } } @@ -879,13 +879,13 @@ impl Constellation { debug!("Constellation sending SetIds"); self.compositor_chan.send(SetIds(frame_tree.to_sendable(), chan, self.chan.clone())); match port.recv_opt() { - Some(()) => { + Ok(()) => { let mut iter = frame_tree.iter(); for frame in iter { frame.pipeline.grant_paint_permission(); } } - None => {} // message has been discarded, probably shutting down + Err(()) => {} // message has been discarded, probably shutting down } } } diff --git a/src/components/main/css/matching.rs b/src/components/main/css/matching.rs index 205fc5c6c0a..2c3db7894a5 100644 --- a/src/components/main/css/matching.rs +++ b/src/components/main/css/matching.rs @@ -286,12 +286,12 @@ pub trait MatchMethods { fn recalc_style_for_subtree(&self, stylist: &Stylist, layout_context: &mut LayoutContext, - mut font_context: ~FontContext, + mut font_context: Box<FontContext>, applicable_declarations: &mut ApplicableDeclarations, applicable_declarations_cache: &mut ApplicableDeclarationsCache, style_sharing_candidate_cache: &mut StyleSharingCandidateCache, parent: Option<LayoutNode>) - -> ~FontContext; + -> Box<FontContext>; fn match_node(&self, stylist: &Stylist, @@ -466,12 +466,12 @@ impl<'ln> MatchMethods for LayoutNode<'ln> { fn recalc_style_for_subtree(&self, stylist: &Stylist, layout_context: &mut LayoutContext, - mut font_context: ~FontContext, + mut font_context: Box<FontContext>, applicable_declarations: &mut ApplicableDeclarations, applicable_declarations_cache: &mut ApplicableDeclarationsCache, style_sharing_candidate_cache: &mut StyleSharingCandidateCache, parent: Option<LayoutNode>) - -> ~FontContext { + -> Box<FontContext> { self.initialize_layout_data(layout_context.layout_chan.clone()); // First, check to see whether we can share a style with someone. diff --git a/src/components/main/css/node_util.rs b/src/components/main/css/node_util.rs index 22cc7bc68a5..63c5573389f 100644 --- a/src/components/main/css/node_util.rs +++ b/src/components/main/css/node_util.rs @@ -27,23 +27,23 @@ impl<'ln> NodeUtil for ThreadSafeLayoutNode<'ln> { let layout_data_ref = self.borrow_layout_data(); match self.get_pseudo_element_type() { Before | BeforeBlock => { - cast::transmute_region(layout_data_ref.as_ref() - .unwrap() - .data - .before_style - .as_ref() - .unwrap()) + cast::transmute_lifetime(layout_data_ref.as_ref() + .unwrap() + .data + .before_style + .as_ref() + .unwrap()) } After | AfterBlock => { - cast::transmute_region(layout_data_ref.as_ref() - .unwrap() - .data - .after_style - .as_ref() - .unwrap()) + cast::transmute_lifetime(layout_data_ref.as_ref() + .unwrap() + .data + .after_style + .as_ref() + .unwrap()) } Normal => { - cast::transmute_region(layout_data_ref.as_ref() + cast::transmute_lifetime(layout_data_ref.as_ref() .unwrap() .shared_data .style diff --git a/src/components/main/layout/block.rs b/src/components/main/layout/block.rs index 2f258c0eedf..6d97c96ad65 100644 --- a/src/components/main/layout/block.rs +++ b/src/components/main/layout/block.rs @@ -41,6 +41,7 @@ use servo_util::geometry; use std::fmt; use std::mem; use std::num::Zero; +use std::owned; use style::computed_values::{LPA_Auto, LPA_Length, LPA_Percentage, LPN_Length, LPN_None}; use style::computed_values::{LPN_Percentage, LP_Length, LP_Percentage, display, float, overflow}; use sync::Arc; @@ -503,7 +504,7 @@ pub struct BlockFlow { previous_float_width: Option<Au>, /// Additional floating flow members. - pub float: Option<~FloatedBlockInfo> + pub float: Option<owned::Box<FloatedBlockInfo>> } impl BlockFlow { @@ -539,7 +540,7 @@ impl BlockFlow { is_root: false, static_y_offset: Au::new(0), previous_float_width: None, - float: Some(~FloatedBlockInfo::new(float_kind)) + float: Some(box FloatedBlockInfo::new(float_kind)) } } diff --git a/src/components/main/layout/box_.rs b/src/components/main/layout/box_.rs index a9f1289871f..32f8d1dc001 100644 --- a/src/components/main/layout/box_.rs +++ b/src/components/main/layout/box_.rs @@ -44,6 +44,7 @@ use std::from_str::FromStr; use std::iter::AdditiveIterator; use std::mem; use std::num::Zero; +use std::owned; use style::{ComputedValues, TElement, TNode, cascade_anonymous}; use style::computed_values::{LengthOrPercentageOrAuto, overflow, LPA_Auto, background_attachment}; use style::computed_values::{background_repeat, border_style, clear, position, text_align}; @@ -224,7 +225,7 @@ impl IframeBoxInfo { #[deriving(Clone)] pub struct ScannedTextBoxInfo { /// The text run that this represents. - pub run: Arc<~TextRun>, + pub run: Arc<owned::Box<TextRun>>, /// The range within the above text run that this represents. pub range: Range<CharIndex>, @@ -232,7 +233,7 @@ pub struct ScannedTextBoxInfo { impl ScannedTextBoxInfo { /// Creates the information specific to a scanned text box from a range and a text run. - pub fn new(run: Arc<~TextRun>, range: Range<CharIndex>) -> ScannedTextBoxInfo { + pub fn new(run: Arc<owned::Box<TextRun>>, range: Range<CharIndex>) -> ScannedTextBoxInfo { ScannedTextBoxInfo { run: run, range: range, @@ -642,7 +643,7 @@ impl Box { let style = self.style(); let background_color = style.resolve_color(style.Background.get().background_color); if !background_color.alpha.approx_eq(&0.0) { - let display_item = ~SolidColorDisplayItem { + let display_item = box SolidColorDisplayItem { base: BaseDisplayItem::new(*absolute_bounds, self.node, level), color: background_color.to_gfx_color(), }; @@ -689,7 +690,7 @@ impl Box { bounds.size.height = bounds.size.height - vertical_position; } background_attachment::fixed => { - clip_display_item = Some(~ClipDisplayItem { + clip_display_item = Some(box ClipDisplayItem { base: BaseDisplayItem::new(bounds, self.node, level), children: DisplayList::new(), }); @@ -718,7 +719,7 @@ impl Box { }; // Create the image display item. - let image_display_item = ImageDisplayItemClass(~ImageDisplayItem { + let image_display_item = ImageDisplayItemClass(box ImageDisplayItem { base: BaseDisplayItem::new(bounds, self.node, level), image: image.clone(), stretch_size: Size2D(Au::from_px(image.width as int), @@ -755,7 +756,7 @@ impl Box { let left_color = style.resolve_color(style.Border.get().border_left_color); // Append the border to the display list. - let border_display_item = ~BorderDisplayItem { + let border_display_item = box BorderDisplayItem { base: BaseDisplayItem::new(*abs_bounds, self.node, level), border: border, color: SideOffsets2D::new(top_color.to_gfx_color(), @@ -781,7 +782,7 @@ impl Box { // Compute the text box bounds and draw a border surrounding them. let debug_border = SideOffsets2D::new_all_same(Au::from_px(1)); - let border_display_item = ~BorderDisplayItem { + let border_display_item = box BorderDisplayItem { base: BaseDisplayItem::new(absolute_box_bounds, self.node, ContentStackingLevel), border: debug_border, color: SideOffsets2D::new_all_same(rgb(0, 0, 200)), @@ -794,7 +795,7 @@ impl Box { let baseline = Rect(absolute_box_bounds.origin + Point2D(Au(0), ascent), Size2D(absolute_box_bounds.size.width, Au(0))); - let line_display_item = ~LineDisplayItem { + let line_display_item = box LineDisplayItem { base: BaseDisplayItem::new(baseline, self.node, ContentStackingLevel), color: rgb(0, 200, 0), style: border_style::dashed, @@ -811,7 +812,7 @@ impl Box { // This prints a debug border around the border of this box. let debug_border = SideOffsets2D::new_all_same(Au::from_px(1)); - let border_display_item = ~BorderDisplayItem { + let border_display_item = box BorderDisplayItem { base: BaseDisplayItem::new(absolute_box_bounds, self.node, ContentStackingLevel), border: debug_border, color: SideOffsets2D::new_all_same(rgb(0, 0, 200)), @@ -867,7 +868,7 @@ impl Box { StackingLevel::from_background_and_border_level(background_and_border_level); // Add a pseudo-display item for content box queries. This is a very bogus thing to do. - let base_display_item = ~BaseDisplayItem::new(absolute_box_bounds, self.node, level); + let base_display_item = box BaseDisplayItem::new(absolute_box_bounds, self.node, level); display_list.push(PseudoDisplayItemClass(base_display_item)); // Add the background to the list, if applicable. @@ -910,7 +911,7 @@ impl Box { bounds.size.width = bounds.size.width - self.border_padding.horizontal(); // Create the text box. - let text_display_item = ~TextDisplayItem { + let text_display_item = box TextDisplayItem { base: BaseDisplayItem::new(bounds, self.node, ContentStackingLevel), text_run: text_box.run.clone(), range: text_box.range, @@ -948,7 +949,7 @@ impl Box { debug!("(building display list) building image box"); // Place the image into the display list. - let image_display_item = ~ImageDisplayItem { + let image_display_item = box ImageDisplayItem { base: BaseDisplayItem::new(bounds, self.node, ContentStackingLevel), @@ -1463,7 +1464,7 @@ impl fmt::Show for Box { /// An object that accumulates display lists of child flows, applying a clipping rect if necessary. pub struct ChildDisplayListAccumulator { - clip_display_item: Option<~ClipDisplayItem>, + clip_display_item: Option<owned::Box<ClipDisplayItem>>, } impl ChildDisplayListAccumulator { @@ -1473,7 +1474,7 @@ impl ChildDisplayListAccumulator { ChildDisplayListAccumulator { clip_display_item: match style.Box.get().overflow { overflow::hidden => { - Some(~ClipDisplayItem { + Some(box ClipDisplayItem { base: BaseDisplayItem::new(bounds, node, level), children: DisplayList::new(), }) diff --git a/src/components/main/layout/construct.rs b/src/components/main/layout/construct.rs index ef6d737f2d9..0aa2acb1e94 100644 --- a/src/components/main/layout/construct.rs +++ b/src/components/main/layout/construct.rs @@ -60,6 +60,7 @@ use servo_util::range::Range; use servo_util::str::is_whitespace; use servo_util::url::{is_image_data, parse_url}; use std::mem; +use std::owned; use style::ComputedValues; use style::computed_values::{display, position, float, white_space}; use sync::Arc; @@ -74,7 +75,7 @@ pub enum ConstructionResult { /// This node contributed a flow at the proper position in the tree. /// Nothing more needs to be done for this node. It has bubbled up fixed /// and absolute descendant flows that have a CB above it. - FlowConstructionResult(~Flow:Share, AbsDescendants), + FlowConstructionResult(owned::Box<Flow:Share>, AbsDescendants), /// This node contributed some object or objects that will be needed to construct a proper flow /// later up the tree, but these objects have not yet found their home. @@ -156,7 +157,7 @@ pub struct InlineBlockSplit { pub predecessors: InlineBoxes, /// The flow that caused this {ib} split. - pub flow: ~Flow:Share, + pub flow: owned::Box<Flow:Share>, } impl InlineBlockSplit { @@ -222,12 +223,12 @@ pub struct FlowConstructor<'a> { /// /// FIXME(pcwalton): This is pretty bogus and is basically just a workaround for libgreen /// having slow TLS. - pub font_context: Option<~FontContext>, + pub font_context: Option<owned::Box<FontContext>>, } impl<'a> FlowConstructor<'a> { /// Creates a new flow constructor. - pub fn new(layout_context: &'a mut LayoutContext, font_context: Option<~FontContext>) + pub fn new(layout_context: &'a mut LayoutContext, font_context: Option<owned::Box<FontContext>>) -> FlowConstructor<'a> { FlowConstructor { layout_context: layout_context, @@ -246,7 +247,7 @@ impl<'a> FlowConstructor<'a> { } /// Destroys this flow constructor and retrieves the font context. - pub fn unwrap_font_context(self) -> Option<~FontContext> { + pub fn unwrap_font_context(self) -> Option<owned::Box<FontContext>> { let FlowConstructor { font_context, .. @@ -302,8 +303,8 @@ impl<'a> FlowConstructor<'a> { #[inline(always)] fn flush_inline_boxes_to_flow_or_list(&mut self, box_accumulator: InlineBoxAccumulator, - flow: &mut ~Flow:Share, - flow_list: &mut Vec<~Flow:Share>, + flow: &mut owned::Box<Flow:Share>, + flow_list: &mut Vec<owned::Box<Flow:Share>>, whitespace_stripping: WhitespaceStrippingMode, node: &ThreadSafeLayoutNode) { let mut boxes = box_accumulator.finish(); @@ -327,9 +328,9 @@ impl<'a> FlowConstructor<'a> { } } - let mut inline_flow = ~InlineFlow::from_boxes((*node).clone(), boxes); + let mut inline_flow = box InlineFlow::from_boxes((*node).clone(), boxes); inline_flow.compute_minimum_ascent_and_descent(self.font_context(), &**node.style()); - let mut inline_flow = inline_flow as ~Flow:Share; + let mut inline_flow = inline_flow as owned::Box<Flow:Share>; TextRunScanner::new().scan_for_runs(self.font_context(), inline_flow); inline_flow.finish(self.layout_context); @@ -341,9 +342,9 @@ impl<'a> FlowConstructor<'a> { } fn build_block_flow_using_children_construction_result(&mut self, - flow: &mut ~Flow:Share, + flow: &mut owned::Box<Flow:Share>, consecutive_siblings: - &mut Vec<~Flow:Share>, + &mut Vec<owned::Box<Flow:Share>>, node: &ThreadSafeLayoutNode, kid: ThreadSafeLayoutNode, inline_box_accumulator: @@ -458,7 +459,7 @@ impl<'a> FlowConstructor<'a> { /// Also, deal with the absolute and fixed descendants bubbled up by /// children nodes. fn build_flow_using_children(&mut self, - mut flow: ~Flow:Share, + mut flow: owned::Box<Flow:Share>, node: &ThreadSafeLayoutNode) -> ConstructionResult { // Gather up boxes for the inline flows we might need to create. @@ -516,7 +517,7 @@ impl<'a> FlowConstructor<'a> { /// other `BlockFlow`s or `InlineFlow`s underneath it, depending on whether {ib} splits needed /// to happen. fn build_flow_for_block(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { - let flow = ~BlockFlow::from_node(self, node) as ~Flow:Share; + let flow = box BlockFlow::from_node(self, node) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -524,7 +525,7 @@ impl<'a> FlowConstructor<'a> { /// a `BlockFlow` underneath it. fn build_flow_for_floated_block(&mut self, node: &ThreadSafeLayoutNode, float_kind: FloatKind) -> ConstructionResult { - let flow = ~BlockFlow::float_from_node(self, node, float_kind) as ~Flow:Share; + let flow = box BlockFlow::float_from_node(self, node, float_kind) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -660,7 +661,7 @@ impl<'a> FlowConstructor<'a> { /// TableCaptionFlow is populated underneath TableWrapperFlow fn place_table_caption_under_table_wrapper(&mut self, - table_wrapper_flow: &mut ~Flow:Share, + table_wrapper_flow: &mut owned::Box<Flow:Share>, node: &ThreadSafeLayoutNode) { for kid in node.children() { match kid.swap_out_construction_result() { @@ -677,8 +678,8 @@ impl<'a> FlowConstructor<'a> { /// Generates an anonymous table flow according to CSS 2.1 § 17.2.1, step 2. /// If necessary, generate recursively another anonymous table flow. fn generate_anonymous_missing_child(&mut self, - child_flows: Vec<~Flow:Share>, - flow: &mut ~Flow:Share, + child_flows: Vec<owned::Box<Flow:Share>>, + flow: &mut owned::Box<Flow:Share>, node: &ThreadSafeLayoutNode) { let mut anonymous_flow = flow.generate_missing_child_flow(node); let mut consecutive_siblings = vec!(); @@ -705,10 +706,10 @@ impl<'a> FlowConstructor<'a> { /// other `TableCaptionFlow`s or `TableFlow`s underneath it. fn build_flow_for_table_wrapper(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { let box_ = Box::new_from_specific_info(node, TableWrapperBox); - let mut wrapper_flow = ~TableWrapperFlow::from_node_and_box(node, box_) as ~Flow:Share; + let mut wrapper_flow = box TableWrapperFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share>; let table_box_ = Box::new_from_specific_info(node, TableBox); - let table_flow = ~TableFlow::from_node_and_box(node, table_box_) as ~Flow:Share; + let table_flow = box TableFlow::from_node_and_box(node, table_box_) as owned::Box<Flow:Share>; // We first populate the TableFlow with other flows than TableCaptionFlow. // We then populate the TableWrapperFlow with TableCaptionFlow, and attach @@ -754,7 +755,7 @@ impl<'a> FlowConstructor<'a> { /// Builds a flow for a node with `display: table-caption`. This yields a `TableCaptionFlow` /// with possibly other `BlockFlow`s or `InlineFlow`s underneath it. fn build_flow_for_table_caption(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { - let flow = ~TableCaptionFlow::from_node(self, node) as ~Flow:Share; + let flow = box TableCaptionFlow::from_node(self, node) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -762,7 +763,7 @@ impl<'a> FlowConstructor<'a> { /// with possibly other `TableRowFlow`s underneath it. fn build_flow_for_table_rowgroup(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { let box_ = Box::new_from_specific_info(node, TableRowBox); - let flow = ~TableRowGroupFlow::from_node_and_box(node, box_) as ~Flow:Share; + let flow = box TableRowGroupFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -770,7 +771,7 @@ impl<'a> FlowConstructor<'a> { /// possibly other `TableCellFlow`s underneath it. fn build_flow_for_table_row(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { let box_ = Box::new_from_specific_info(node, TableRowBox); - let flow = ~TableRowFlow::from_node_and_box(node, box_) as ~Flow:Share; + let flow = box TableRowFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -778,7 +779,7 @@ impl<'a> FlowConstructor<'a> { /// possibly other `BlockFlow`s or `InlineFlow`s underneath it. fn build_flow_for_table_cell(&mut self, node: &ThreadSafeLayoutNode) -> ConstructionResult { let box_ = Box::new_from_specific_info(node, TableCellBox); - let flow = ~TableCellFlow::from_node_and_box(node, box_) as ~Flow:Share; + let flow = box TableCellFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share>; self.build_flow_using_children(flow, node) } @@ -817,8 +818,8 @@ impl<'a> FlowConstructor<'a> { let specific = TableColumnBox(TableColumnBoxInfo::new(node)); col_boxes.push( Box::new_from_specific_info(node, specific) ); } - let mut flow = ~TableColGroupFlow::from_node_and_boxes(node, box_, col_boxes) as - ~Flow:Share; + let mut flow = box TableColGroupFlow::from_node_and_boxes(node, box_, col_boxes) as + owned::Box<Flow:Share>; flow.finish(self.layout_context); FlowConstructionResult(flow, Descendants::new()) diff --git a/src/components/main/layout/context.rs b/src/components/main/layout/context.rs index a0f92035bc2..cce7ba27502 100644 --- a/src/components/main/layout/context.rs +++ b/src/components/main/layout/context.rs @@ -27,9 +27,6 @@ use std::rt::task::Task; use style::Stylist; use url::Url; -#[cfg(target_os="android")] -use std::local_data; - #[cfg(not(target_os="android"))] #[thread_local] static mut FONT_CONTEXT: *mut FontContext = 0 as *mut FontContext; @@ -95,9 +92,9 @@ impl LayoutContext { // Sanity check. { let mut task = Local::borrow(None::<Task>); - match task.get().maybe_take_runtime::<GreenTask>() { + match task.maybe_take_runtime::<GreenTask>() { Some(green) => { - task.get().put_runtime(green); + task.put_runtime(green); fail!("can't call this on a green task!") } None => {} @@ -106,7 +103,7 @@ impl LayoutContext { unsafe { if FONT_CONTEXT == ptr::mut_null() { - let context = ~FontContext::new(self.font_context_info.clone()); + let context = box FontContext::new(self.font_context_info.clone()); FONT_CONTEXT = cast::transmute(context) } cast::transmute(FONT_CONTEXT) @@ -117,9 +114,9 @@ impl LayoutContext { // Sanity check. { let mut task = Local::borrow(None::<Task>); - match task.get().maybe_take_runtime::<GreenTask>() { + match task.maybe_take_runtime::<GreenTask>() { Some(green) => { - task.get().put_runtime(green); + task.put_runtime(green); fail!("can't call this on a green task!") } None => {} @@ -128,7 +125,7 @@ impl LayoutContext { unsafe { if APPLICABLE_DECLARATIONS_CACHE == ptr::mut_null() { - let cache = ~ApplicableDeclarationsCache::new(); + let cache = box ApplicableDeclarationsCache::new(); APPLICABLE_DECLARATIONS_CACHE = cast::transmute(cache) } cast::transmute(APPLICABLE_DECLARATIONS_CACHE) @@ -139,9 +136,9 @@ impl LayoutContext { // Sanity check. { let mut task = Local::borrow(None::<Task>); - match task.get().maybe_take_runtime::<GreenTask>() { + match task.maybe_take_runtime::<GreenTask>() { Some(green) => { - task.get().put_runtime(green); + task.put_runtime(green); fail!("can't call this on a green task!") } None => {} @@ -150,7 +147,7 @@ impl LayoutContext { unsafe { if STYLE_SHARING_CANDIDATE_CACHE == ptr::mut_null() { - let cache = ~StyleSharingCandidateCache::new(); + let cache = box StyleSharingCandidateCache::new(); STYLE_SHARING_CANDIDATE_CACHE = cast::transmute(cache) } cast::transmute(STYLE_SHARING_CANDIDATE_CACHE) @@ -168,45 +165,45 @@ impl LayoutContext { impl LayoutContext { pub fn font_context<'a>(&'a mut self) -> &'a mut FontContext { unsafe { - let opt = local_data::pop(font_context); + let opt = font_context.replace(None); let mut context; match opt { Some(c) => context = cast::transmute(c), None => { - context = cast::transmute(~FontContext::new(self.font_context_info.clone())) + context = cast::transmute(box FontContext::new(self.font_context_info.clone())) } } - local_data::set(font_context, context); + font_context.replace(Some(context)); cast::transmute(context) } } pub fn applicable_declarations_cache<'a>(&'a self) -> &'a mut ApplicableDeclarationsCache { unsafe { - let opt = local_data::pop(applicable_declarations_cache); + let opt = applicable_declarations_cache.replace(None); let mut cache; match opt { Some(c) => cache = cast::transmute(c), None => { - cache = cast::transmute(~ApplicableDeclarationsCache::new()); + cache = cast::transmute(box ApplicableDeclarationsCache::new()); } } - local_data::set(applicable_declarations_cache, cache); + applicable_declarations_cache.replace(Some(cache)); cast::transmute(cache) } } pub fn style_sharing_candidate_cache<'a>(&'a self) -> &'a mut StyleSharingCandidateCache { unsafe { - let opt = local_data::pop(style_sharing_candidate_cache); + let opt = style_sharing_candidate_cache.replace(None); let mut cache; match opt { Some(c) => cache = cast::transmute(c), None => { - cache = cast::transmute(~StyleSharingCandidateCache::new()); + cache = cast::transmute(box StyleSharingCandidateCache::new()); } } - local_data::set(style_sharing_candidate_cache, cache); + style_sharing_candidate_cache.replace(Some(cache)); cast::transmute(cache) } } diff --git a/src/components/main/layout/extra.rs b/src/components/main/layout/extra.rs index 1692e36c420..ef8878d1477 100644 --- a/src/components/main/layout/extra.rs +++ b/src/components/main/layout/extra.rs @@ -26,7 +26,7 @@ impl<'ln> LayoutAuxMethods for LayoutNode<'ln> { *layout_data_ref = Some(LayoutDataWrapper { chan: Some(chan), shared_data: SharedLayoutData { style: None }, - data: ~PrivateLayoutData::new(), + data: box PrivateLayoutData::new(), }); } Some(_) => {} diff --git a/src/components/main/layout/flow.rs b/src/components/main/layout/flow.rs index 332a5c9c1a0..c5f882bf8cd 100644 --- a/src/components/main/layout/flow.rs +++ b/src/components/main/layout/flow.rs @@ -58,6 +58,7 @@ use std::cast; use std::fmt; use std::iter::Zip; use std::num::Zero; +use std::owned; use std::sync::atomics::Relaxed; use std::slice::MutItems; use style::computed_values::{clear, position, text_align}; @@ -171,7 +172,7 @@ pub trait Flow: fmt::Show + ToStr { /// this child was impacted by floats or false otherwise. fn assign_height_for_inorder_child_if_necessary(&mut self, layout_context: &mut LayoutContext) -> bool { - let impacted = base(self).flags.impacted_by_floats(); + let impacted = base(&*self).flags.impacted_by_floats(); if impacted { self.assign_height(layout_context); } @@ -337,7 +338,7 @@ pub trait ImmutableFlowUtils { fn need_anonymous_flow(self, child: &Flow) -> bool; /// Generates missing child flow of this flow. - fn generate_missing_child_flow(self, node: &ThreadSafeLayoutNode) -> ~Flow:Share; + fn generate_missing_child_flow(self, node: &ThreadSafeLayoutNode) -> owned::Box<Flow:Share>; /// Returns true if this flow has no children. fn is_leaf(self) -> bool; @@ -391,7 +392,7 @@ pub trait MutableFlowUtils { pub trait MutableOwnedFlowUtils { /// Adds a new flow as a child of this flow. Removes the flow from the given leaf set if /// it's present. - fn add_new_child(&mut self, new_child: ~Flow:Share); + fn add_new_child(&mut self, new_child: owned::Box<Flow:Share>); /// Finishes a flow. Once a flow is finished, no more child flows or boxes may be added to it. /// This will normally run the bubble-widths (minimum and preferred -- i.e. intrinsic -- width) @@ -841,15 +842,15 @@ impl<'a> ImmutableFlowUtils for &'a Flow { } /// Generates missing child flow of this flow. - fn generate_missing_child_flow(self, node: &ThreadSafeLayoutNode) -> ~Flow:Share { + fn generate_missing_child_flow(self, node: &ThreadSafeLayoutNode) -> owned::Box<Flow:Share> { match self.class() { TableFlowClass | TableRowGroupFlowClass => { let box_ = Box::new_anonymous_table_box(node, TableRowBox); - ~TableRowFlow::from_node_and_box(node, box_) as ~Flow:Share + box TableRowFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share> }, TableRowFlowClass => { let box_ = Box::new_anonymous_table_box(node, TableCellBox); - ~TableCellFlow::from_node_and_box(node, box_) as ~Flow:Share + box TableCellFlow::from_node_and_box(node, box_) as owned::Box<Flow:Share> }, _ => { fail!("no need to generate a missing child") @@ -907,7 +908,7 @@ impl<'a> ImmutableFlowUtils for &'a Flow { /// Dumps the flow tree for debugging, with a prefix to indicate that we're at the given level. fn dump_with_level(self, level: uint) { - let mut indent = "".to_owned(); + let mut indent = StrBuf::new(); for _ in range(0, level) { indent.push_str("| ") } @@ -1051,9 +1052,9 @@ impl<'a> MutableFlowUtils for &'a mut Flow { } } -impl MutableOwnedFlowUtils for ~Flow:Share { +impl MutableOwnedFlowUtils for owned::Box<Flow:Share> { /// Adds a new flow as a child of this flow. Fails if this flow is marked as a leaf. - fn add_new_child(&mut self, mut new_child: ~Flow:Share) { + fn add_new_child(&mut self, mut new_child: owned::Box<Flow:Share>) { { let kid_base = mut_base(new_child); kid_base.parallel.parent = parallel::mut_owned_flow_to_unsafe_flow(self); diff --git a/src/components/main/layout/flow_list.rs b/src/components/main/layout/flow_list.rs index 33079d7137a..d812db5b740 100644 --- a/src/components/main/layout/flow_list.rs +++ b/src/components/main/layout/flow_list.rs @@ -11,7 +11,7 @@ use std::ptr; use layout::flow::{Flow, base, mut_base}; -pub type Link = Option<~Flow:Share>; +pub type Link = Option<Box<Flow:Share>>; #[deriving(Clone)] pub struct Rawlink { @@ -88,7 +88,7 @@ impl Rawlink { } /// Set the .prev field on `next`, then return `Some(next)` -fn link_with_prev(mut next: ~Flow:Share, prev: Rawlink) -> Link { +fn link_with_prev(mut next: Box<Flow:Share>, prev: Rawlink) -> Link { mut_base(next).prev_sibling = prev; Some(next) } @@ -146,7 +146,7 @@ impl FlowList { /// Add an element first in the list /// /// O(1) - pub fn push_front(&mut self, mut new_head: ~Flow:Share) { + pub fn push_front(&mut self, mut new_head: Box<Flow:Share>) { match self.list_head { None => { self.list_tail = Rawlink::some(new_head); @@ -165,7 +165,7 @@ impl FlowList { /// Remove the first element and return it, or None if the list is empty /// /// O(1) - pub fn pop_front(&mut self) -> Option<~Flow:Share> { + pub fn pop_front(&mut self) -> Option<Box<Flow:Share>> { self.list_head.take().map(|mut front_node| { self.length -= 1; match mut_base(front_node).next_sibling.take() { @@ -179,7 +179,7 @@ impl FlowList { /// Add an element last in the list /// /// O(1) - pub fn push_back(&mut self, mut new_tail: ~Flow:Share) { + pub fn push_back(&mut self, mut new_tail: Box<Flow:Share>) { if self.list_tail.is_none() { return self.push_front(new_tail); } else { @@ -194,7 +194,7 @@ impl FlowList { /// Remove the last element and return it, or None if the list is empty /// /// O(1) - pub fn pop_back(&mut self) -> Option<~Flow:Share> { + pub fn pop_back(&mut self) -> Option<Box<Flow:Share>> { if self.list_tail.is_none() { None } else { diff --git a/src/components/main/layout/layout_task.rs b/src/components/main/layout/layout_task.rs index 91fab27f1c5..e039bc7e506 100644 --- a/src/components/main/layout/layout_task.rs +++ b/src/components/main/layout/layout_task.rs @@ -58,7 +58,7 @@ use std::cast; use std::comm::{channel, Sender, Receiver}; use std::mem; use std::ptr; -use std::task; +use std::task::TaskBuilder; use style::{AuthorOrigin, Stylesheet, Stylist}; use sync::{Arc, Mutex}; use url::Url; @@ -95,7 +95,7 @@ pub struct LayoutTask { /// A cached display list. pub display_list: Option<Arc<DisplayList>>, - pub stylist: ~Stylist, + pub stylist: Box<Stylist>, /// The workers that we use for parallel operation. pub parallel_traversal: Option<WorkQueue<*mut LayoutContext,PaddedUnsafeFlow>>, @@ -264,7 +264,7 @@ impl ImageResponder for LayoutImageResponder { let script_chan = self.script_chan.clone(); let f: proc(ImageResponseMsg):Send = proc(_) { let ScriptChan(chan) = script_chan; - drop(chan.try_send(SendEventMsg(id.clone(), ReflowEvent))) + drop(chan.send_opt(SendEventMsg(id.clone(), ReflowEvent))) }; f } @@ -283,7 +283,7 @@ impl LayoutTask { opts: Opts, profiler_chan: ProfilerChan, shutdown_chan: Sender<()>) { - let mut builder = task::task().named("LayoutTask"); + let mut builder = TaskBuilder::new().named("LayoutTask"); let ConstellationChan(con_chan) = constellation_chan.clone(); send_on_failure(&mut builder, FailureMsg(failure_msg), con_chan); builder.spawn(proc() { @@ -314,10 +314,10 @@ impl LayoutTask { opts: &Opts, profiler_chan: ProfilerChan) -> LayoutTask { - let local_image_cache = ~LocalImageCache(image_cache_task.clone()); + let local_image_cache = box LocalImageCache(image_cache_task.clone()); let local_image_cache = unsafe { - let cache = Arc::new(Mutex::new(cast::transmute::<~LocalImageCache, - *()>(local_image_cache))); + let cache = Arc::new(Mutex::new( + cast::transmute::<Box<LocalImageCache>, *()>(local_image_cache))); LocalImageCacheHandle::new(cast::transmute::<Arc<Mutex<*()>>,Arc<*()>>(cache)) }; let screen_size = Size2D(Au(0), Au(0)); @@ -339,7 +339,7 @@ impl LayoutTask { screen_size: screen_size, display_list: None, - stylist: ~new_stylist(), + stylist: box new_stylist(), parallel_traversal: parallel_traversal, profiler_chan: profiler_chan, opts: opts.clone(), @@ -455,7 +455,7 @@ impl LayoutTask { } /// Retrieves the flow tree root from the root node. - fn get_layout_root(&self, node: LayoutNode) -> ~Flow:Share { + fn get_layout_root(&self, node: LayoutNode) -> Box<Flow:Share> { let mut layout_data_ref = node.mutate_layout_data(); let result = match &mut *layout_data_ref { &Some(ref mut layout_data) => { @@ -521,7 +521,7 @@ impl LayoutTask { /// benchmarked against those two. It is marked `#[inline(never)]` to aid profiling. #[inline(never)] fn solve_constraints_parallel(&mut self, - layout_root: &mut ~Flow:Share, + layout_root: &mut Box<Flow:Share>, layout_context: &mut LayoutContext) { if layout_context.opts.bubble_widths_separately { let mut traversal = BubbleWidthsTraversal { @@ -547,13 +547,13 @@ impl LayoutTask { /// This is only on in debug builds. #[inline(never)] #[cfg(debug)] - fn verify_flow_tree(&mut self, layout_root: &mut ~Flow:Share) { + fn verify_flow_tree(&mut self, layout_root: &mut Box<Flow:Share>) { let mut traversal = FlowTreeVerificationTraversal; layout_root.traverse_preorder(&mut traversal); } #[cfg(not(debug))] - fn verify_flow_tree(&mut self, _: &mut ~Flow:Share) { + fn verify_flow_tree(&mut self, _: &mut Box<Flow:Share>) { } /// The high-level routine that performs layout tasks. @@ -597,7 +597,7 @@ impl LayoutTask { // FIXME(pcwalton): This is a pretty bogus thing to do. Essentially this is a workaround // for libgreen having slow TLS. let mut font_context_opt = if self.parallel_traversal.is_none() { - Some(~FontContext::new(layout_ctx.font_context_info.clone())) + Some(box FontContext::new(layout_ctx.font_context_info.clone())) } else { None }; @@ -805,7 +805,7 @@ impl LayoutTask { match *item { ClipDisplayItemClass(ref cc) => { if geometry::rect_contains_point(cc.base.bounds, Point2D(x, y)) { - let ret = hit_test(x, y, cc.children.list.rev_iter()); + let ret = hit_test(x, y, cc.children.list.iter().rev()); if !ret.is_none() { return ret } @@ -835,7 +835,7 @@ impl LayoutTask { Au::from_frac_px(point.y as f64)); let resp = match self.display_list { None => fail!("no display list!"), - Some(ref display_list) => hit_test(x, y, display_list.list.rev_iter()), + Some(ref display_list) => hit_test(x, y, display_list.list.iter().rev()), }; if resp.is_some() { reply_chan.send(Ok(resp.unwrap())); @@ -900,15 +900,15 @@ impl LayoutTask { // to the script task, and ultimately cause the image to be // re-requested. We probably don't need to go all the way back to // the script task for this. - fn make_on_image_available_cb(&self) -> ~ImageResponder:Send { + fn make_on_image_available_cb(&self) -> Box<ImageResponder:Send> { // This has a crazy signature because the image cache needs to // make multiple copies of the callback, and the dom event // channel is not a copyable type, so this is actually a // little factory to produce callbacks - ~LayoutImageResponder { + box LayoutImageResponder { id: self.id.clone(), script_chan: self.script_chan.clone(), - } as ~ImageResponder:Send + } as Box<ImageResponder:Send> } /// Handles a message to destroy layout data. Layout data must be destroyed on *this* task diff --git a/src/components/main/layout/parallel.rs b/src/components/main/layout/parallel.rs index 0f35c50c119..13ea72cf22e 100644 --- a/src/components/main/layout/parallel.rs +++ b/src/components/main/layout/parallel.rs @@ -63,13 +63,13 @@ fn null_unsafe_flow() -> UnsafeFlow { (0, 0) } -pub fn owned_flow_to_unsafe_flow(flow: *~Flow:Share) -> UnsafeFlow { +pub fn owned_flow_to_unsafe_flow(flow: *Box<Flow:Share>) -> UnsafeFlow { unsafe { cast::transmute_copy(&*flow) } } -pub fn mut_owned_flow_to_unsafe_flow(flow: *mut ~Flow:Share) -> UnsafeFlow { +pub fn mut_owned_flow_to_unsafe_flow(flow: *mut Box<Flow:Share>) -> UnsafeFlow { unsafe { cast::transmute_copy(&*flow) } @@ -141,7 +141,7 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal { loop { unsafe { // Get a real flow. - let flow: &mut ~Flow:Share = cast::transmute(&unsafe_flow); + let flow: &mut Box<Flow:Share> = cast::transmute(&unsafe_flow); // Perform the appropriate traversal. if self.should_process(*flow) { @@ -163,7 +163,7 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal { // No, we're not at the root yet. Then are we the last child // of our parent to finish processing? If so, we can continue // on with our parent; otherwise, we've gotta wait. - let parent: &mut ~Flow:Share = cast::transmute(&unsafe_parent); + let parent: &mut Box<Flow:Share> = cast::transmute(&unsafe_parent); let parent_base = flow::mut_base(*parent); if parent_base.parallel.children_count.fetch_sub(1, SeqCst) == 1 { // We were the last child of our parent. Reflow our parent. @@ -196,7 +196,7 @@ trait ParallelPreorderFlowTraversal : PreorderFlowTraversal { let mut had_children = false; unsafe { // Get a real flow. - let flow: &mut ~Flow:Share = cast::transmute(&unsafe_flow); + let flow: &mut Box<Flow:Share> = cast::transmute(&unsafe_flow); // Perform the appropriate traversal. self.process(*flow); @@ -421,7 +421,7 @@ fn compute_absolute_position(unsafe_flow: PaddedUnsafeFlow, let mut had_descendants = false; unsafe { // Get a real flow. - let flow: &mut ~Flow:Share = cast::transmute(&unsafe_flow); + let flow: &mut Box<Flow:Share> = cast::transmute(&unsafe_flow); // Compute the absolute position for the flow. flow.compute_absolute_position(); @@ -479,7 +479,7 @@ fn build_display_list(mut unsafe_flow: PaddedUnsafeFlow, loop { unsafe { // Get a real flow. - let flow: &mut ~Flow:Share = cast::transmute(&unsafe_flow); + let flow: &mut Box<Flow:Share> = cast::transmute(&unsafe_flow); // Build display lists. flow.build_display_list(layout_context); @@ -512,7 +512,7 @@ fn build_display_list(mut unsafe_flow: PaddedUnsafeFlow, // No, we're not at the root yet. Then are we the last child // of our parent to finish processing? If so, we can continue // on with our parent; otherwise, we've gotta wait. - let parent: &mut ~Flow:Share = cast::transmute(&unsafe_parent); + let parent: &mut Box<Flow:Share> = cast::transmute(&unsafe_parent); let parent_base = flow::mut_base(*parent); if parent_base.parallel .children_and_absolute_descendant_count @@ -545,7 +545,7 @@ pub fn recalc_style_for_subtree(root_node: &LayoutNode, queue.data = ptr::mut_null() } -pub fn traverse_flow_tree_preorder(root: &mut ~Flow:Share, +pub fn traverse_flow_tree_preorder(root: &mut Box<Flow:Share>, profiler_chan: ProfilerChan, layout_context: &mut LayoutContext, queue: &mut WorkQueue<*mut LayoutContext,PaddedUnsafeFlow>) { @@ -565,7 +565,7 @@ pub fn traverse_flow_tree_preorder(root: &mut ~Flow:Share, queue.data = ptr::mut_null() } -pub fn build_display_list_for_subtree(root: &mut ~Flow:Share, +pub fn build_display_list_for_subtree(root: &mut Box<Flow:Share>, profiler_chan: ProfilerChan, layout_context: &mut LayoutContext, queue: &mut WorkQueue<*mut LayoutContext,PaddedUnsafeFlow>) { diff --git a/src/components/main/layout/text.rs b/src/components/main/layout/text.rs index 7f38a617efd..2d08bf38019 100644 --- a/src/components/main/layout/text.rs +++ b/src/components/main/layout/text.rs @@ -151,8 +151,8 @@ impl TextRunScanner { // font group fonts. This is probably achieved by creating the font group above // and then letting `FontGroup` decide which `Font` to stick into the text run. let fontgroup = font_context.get_resolved_font_for_style(&font_style); - let run = ~fontgroup.borrow().create_textrun(transformed_text.clone(), - decoration); + let run = box fontgroup.borrow().create_textrun( + transformed_text.clone(), decoration); debug!("TextRunScanner: pushing single text box in range: {} ({})", self.clump, @@ -210,7 +210,7 @@ impl TextRunScanner { // Next, concatenate all of the transformed strings together, saving the new // character indices. - let mut run_str: ~str = "".to_owned(); + let mut run_str = StrBuf::new(); let mut new_ranges: Vec<Range<CharIndex>> = vec![]; let mut char_total = CharIndex(0); for i in range(0, transformed_strs.len() as int) { @@ -225,8 +225,9 @@ impl TextRunScanner { // sequence. If no clump takes ownership, however, it will leak. let clump = self.clump; let run = if clump.length() != CharIndex(0) && run_str.len() > 0 { - Some(Arc::new(~TextRun::new(&mut *fontgroup.borrow().fonts.get(0).borrow_mut(), - run_str.clone(), decoration))) + Some(Arc::new(box TextRun::new( + &mut *fontgroup.borrow().fonts.get(0).borrow_mut(), + run_str.into_owned(), decoration))) } else { None }; diff --git a/src/components/main/layout/util.rs b/src/components/main/layout/util.rs index 85938d0b2b1..3f94b4ff4e2 100644 --- a/src/components/main/layout/util.rs +++ b/src/components/main/layout/util.rs @@ -60,7 +60,7 @@ impl PrivateLayoutData { pub struct LayoutDataWrapper { pub chan: Option<LayoutChan>, pub shared_data: SharedLayoutData, - pub data: ~PrivateLayoutData, + pub data: Box<PrivateLayoutData>, } /// A trait that allows access to the layout data of a DOM node. diff --git a/src/components/main/layout/wrapper.rs b/src/components/main/layout/wrapper.rs index 7ff62330724..49cfafe9fe1 100644 --- a/src/components/main/layout/wrapper.rs +++ b/src/components/main/layout/wrapper.rs @@ -247,7 +247,7 @@ impl<'ln> TNode<LayoutElement<'ln>> for LayoutNode<'ln> { let elem: JS<Element> = self.node.transmute_copy(); let element = &*elem.unsafe_get(); LayoutElement { - element: cast::transmute_region(element), + element: cast::transmute_lifetime(element), } } } diff --git a/src/components/main/pipeline.rs b/src/components/main/pipeline.rs index 02da6479e5f..8578fa2f41a 100644 --- a/src/components/main/pipeline.rs +++ b/src/components/main/pipeline.rs @@ -136,7 +136,7 @@ impl Pipeline { }; ScriptTask::create(id, - ~compositor_chan.clone(), + box compositor_chan.clone(), layout_chan.clone(), script_port, script_chan.clone(), @@ -197,12 +197,12 @@ impl Pipeline { } pub fn grant_paint_permission(&self) { - self.render_chan.chan.try_send(PaintPermissionGranted); + self.render_chan.chan.send_opt(PaintPermissionGranted); } pub fn revoke_paint_permission(&self) { debug!("pipeline revoking render channel paint permission"); - self.render_chan.chan.try_send(PaintPermissionRevoked); + self.render_chan.chan.send_opt(PaintPermissionRevoked); } pub fn exit(&self) { @@ -211,7 +211,7 @@ impl Pipeline { // Script task handles shutting down layout, and layout handles shutting down the renderer. // For now, if the script task has failed, we give up on clean shutdown. let ScriptChan(ref chan) = self.script_chan; - if chan.try_send(script_task::ExitPipelineMsg(self.id)) { + if chan.send_opt(script_task::ExitPipelineMsg(self.id)).is_ok() { // Wait until all slave tasks have terminated and run destructors // NOTE: We don't wait for script task as we don't always own it self.render_shutdown_port.recv_opt(); diff --git a/src/components/main/platform/common/glut_windowing.rs b/src/components/main/platform/common/glut_windowing.rs index c0b6fa76e74..26c0b776575 100644 --- a/src/components/main/platform/common/glut_windowing.rs +++ b/src/components/main/platform/common/glut_windowing.rs @@ -13,7 +13,6 @@ use windowing::{Forward, Back}; use alert::{Alert, AlertMethods}; use libc::{c_int, c_uchar}; use std::cell::{Cell, RefCell}; -use std::local_data; use std::rc::Rc; use geom::point::Point2D; use geom::size::Size2D; @@ -92,7 +91,7 @@ impl WindowMethods<Application> for Window { debug!("GLUT display func registgered"); } } - glut::display_func(~DisplayCallbackState); + glut::display_func(box DisplayCallbackState); struct ReshapeCallbackState; impl glut::ReshapeCallback for ReshapeCallbackState { fn call(&self, width: c_int, height: c_int) { @@ -100,7 +99,7 @@ impl WindowMethods<Application> for Window { tmp.event_queue.borrow_mut().push(ResizeWindowEvent(width as uint, height as uint)) } } - glut::reshape_func(glut_window, ~ReshapeCallbackState); + glut::reshape_func(glut_window, box ReshapeCallbackState); struct KeyboardCallbackState; impl glut::KeyboardCallback for KeyboardCallbackState { fn call(&self, key: c_uchar, _x: c_int, _y: c_int) { @@ -108,7 +107,7 @@ impl WindowMethods<Application> for Window { tmp.handle_key(key) } } - glut::keyboard_func(~KeyboardCallbackState); + glut::keyboard_func(box KeyboardCallbackState); struct MouseCallbackState; impl glut::MouseCallback for MouseCallbackState { fn call(&self, button: c_int, state: c_int, x: c_int, y: c_int) { @@ -130,7 +129,7 @@ impl WindowMethods<Application> for Window { } } } - glut::mouse_func(~MouseCallbackState); + glut::mouse_func(box MouseCallbackState); let wrapped_window = Rc::new(window); @@ -275,16 +274,16 @@ impl Window { } } -static TLS_KEY: local_data::Key<Rc<Window>> = &local_data::Key; +local_data_key!(TLS_KEY: Rc<Window>) fn install_local_window(window: Rc<Window>) { - local_data::set(TLS_KEY, window); + TLS_KEY.replace(Some(window)); } fn drop_local_window() { - local_data::pop(TLS_KEY); + TLS_KEY.replace(None); } fn local_window() -> Rc<Window> { - local_data::get(TLS_KEY, |v| v.unwrap().clone()) + TLS_KEY.get().unwrap().clone() } diff --git a/src/components/msg/compositor_msg.rs b/src/components/msg/compositor_msg.rs index 6ce3a65a451..6e9279388d6 100644 --- a/src/components/msg/compositor_msg.rs +++ b/src/components/msg/compositor_msg.rs @@ -35,7 +35,7 @@ pub struct LayerBuffer { /// A set of layer buffers. This is an atomic unit used to switch between the front and back /// buffers. pub struct LayerBufferSet { - pub buffers: Vec<~LayerBuffer> + pub buffers: Vec<Box<LayerBuffer>> } impl LayerBufferSet { @@ -140,7 +140,7 @@ pub trait RenderListener { fn paint(&self, pipeline_id: PipelineId, layer_id: LayerId, - layer_buffer_set: ~LayerBufferSet, + layer_buffer_set: Box<LayerBufferSet>, epoch: Epoch); fn set_render_state(&self, render_state: RenderState); @@ -155,10 +155,10 @@ pub trait ScriptListener : Clone { layer_id: LayerId, point: Point2D<f32>); fn close(&self); - fn dup(&self) -> ~ScriptListener; + fn dup(&self) -> Box<ScriptListener>; } -impl<E, S: Encoder<E>> Encodable<S, E> for ~ScriptListener { +impl<E, S: Encoder<E>> Encodable<S, E> for Box<ScriptListener> { fn encode(&self, _s: &mut S) -> Result<(), E> { Ok(()) } @@ -181,7 +181,7 @@ pub trait Tile { fn destroy(self, graphics_context: &NativePaintingGraphicsContext); } -impl Tile for ~LayerBuffer { +impl Tile for Box<LayerBuffer> { fn get_mem(&self) -> uint { // This works for now, but in the future we may want a better heuristic self.screen_pos.size.width * self.screen_pos.size.height diff --git a/src/components/net/http_loader.rs b/src/components/net/http_loader.rs index 26d6e0c0a72..4e909543494 100644 --- a/src/components/net/http_loader.rs +++ b/src/components/net/http_loader.rs @@ -58,7 +58,7 @@ fn load(mut url: Url, start_chan: Sender<LoadResponse>) { let request = RequestWriter::<NetworkStream>::new(Get, url.clone()); let writer = match request { - Ok(w) => ~w, + Ok(w) => box w, Err(e) => { send_error(url, e.desc.to_owned(), start_chan); return; diff --git a/src/components/net/image/holder.rs b/src/components/net/image/holder.rs index 40a9739fb37..83c1fa817a4 100644 --- a/src/components/net/image/holder.rs +++ b/src/components/net/image/holder.rs @@ -25,7 +25,7 @@ pub struct LocalImageCacheHandle { impl Drop for LocalImageCacheHandle { fn drop(&mut self) { unsafe { - let _: ~Arc<Mutex<~LocalImageCache>> = + let _: Box<Arc<Mutex<Box<LocalImageCache>>>> = cast::transmute(mem::replace(&mut self.data, ptr::null())); } } @@ -34,7 +34,7 @@ impl Drop for LocalImageCacheHandle { impl Clone for LocalImageCacheHandle { fn clone(&self) -> LocalImageCacheHandle { unsafe { - let handle = cast::transmute::<&Arc<Mutex<~LocalImageCache>>,&Arc<*()>>(self.get()); + let handle = cast::transmute::<&Arc<Mutex<Box<LocalImageCache>>>,&Arc<*()>>(self.get()); let new_handle = (*handle).clone(); LocalImageCacheHandle::new(new_handle) } @@ -44,13 +44,13 @@ impl Clone for LocalImageCacheHandle { impl LocalImageCacheHandle { pub unsafe fn new(cache: Arc<*()>) -> LocalImageCacheHandle { LocalImageCacheHandle { - data: cast::transmute(~cache), + data: cast::transmute(box cache), } } - pub fn get<'a>(&'a self) -> &'a Arc<Mutex<~LocalImageCache>> { + pub fn get<'a>(&'a self) -> &'a Arc<Mutex<Box<LocalImageCache>>> { unsafe { - cast::transmute::<*uint,&'a Arc<Mutex<~LocalImageCache>>>(self.data) + cast::transmute::<*uint,&'a Arc<Mutex<Box<LocalImageCache>>>>(self.data) } } } @@ -60,7 +60,7 @@ impl LocalImageCacheHandle { #[deriving(Clone)] pub struct ImageHolder { url: Url, - image: Option<Arc<~Image>>, + image: Option<Arc<Box<Image>>>, cached_size: Size2D<int>, local_image_cache: LocalImageCacheHandle, } @@ -109,12 +109,12 @@ impl ImageHolder { }) } - pub fn get_image_if_present(&self) -> Option<Arc<~Image>> { + pub fn get_image_if_present(&self) -> Option<Arc<Box<Image>>> { debug!("get_image_if_present() {}", self.url.to_str()); self.image.clone() } - pub fn get_image(&mut self) -> Option<Arc<~Image>> { + pub fn get_image(&mut self) -> Option<Arc<Box<Image>>> { debug!("get_image() {}", self.url.to_str()); // If this is the first time we've called this function, load diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs index 63abfd62348..2bb8b22323b 100644 --- a/src/components/net/image_cache_task.rs +++ b/src/components/net/image_cache_task.rs @@ -37,21 +37,21 @@ pub enum Msg { // FIXME: We can probably get rid of this Cell now /// Used be the prefetch tasks to post back image binaries - priv StorePrefetchedImageData(Url, Result<~[u8], ()>), + StorePrefetchedImageData(Url, Result<~[u8], ()>), /// Used by the decoder tasks to post decoded images back to the cache - priv StoreImage(Url, Option<Arc<~Image>>), + StoreImage(Url, Option<Arc<Box<Image>>>), /// For testing - priv WaitForStore(Sender<()>), + WaitForStore(Sender<()>), /// For testing - priv WaitForStorePrefetched(Sender<()>), + WaitForStorePrefetched(Sender<()>), } #[deriving(Clone)] pub enum ImageResponseMsg { - ImageReady(Arc<~Image>), + ImageReady(Arc<Box<Image>>), ImageNotReady, ImageFailed } @@ -156,7 +156,7 @@ enum ImageState { Prefetching(AfterPrefetch), Prefetched(~[u8]), Decoding, - Decoded(Arc<~Image>), + Decoded(Arc<Box<Image>>), Failed } @@ -327,7 +327,7 @@ impl ImageCache { debug!("image_cache_task: started image decode for {:s}", url.to_str()); let image = load_from_memory(data); let image = if image.is_some() { - Some(Arc::new(~image.unwrap())) + Some(Arc::new(box image.unwrap())) } else { None }; @@ -344,7 +344,7 @@ impl ImageCache { } } - fn store_image(&mut self, url: Url, image: Option<Arc<~Image>>) { + fn store_image(&mut self, url: Url, image: Option<Arc<Box<Image>>>) { match self.get_state(url.clone()) { Decoding => { @@ -376,14 +376,14 @@ impl ImageCache { Some(waiters) => { let val = waiters.lock(); let items = unsafe { - cast::transmute::<*(), ~[Sender<ImageResponseMsg>]>(*val) + cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val) }; for response in items.iter() { response.send(f()); } let _ = unsafe { // Cast back to avoid the drop at the end. - cast::transmute::<~[Sender<ImageResponseMsg>], *()>(items) + cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items) }; } None => () @@ -414,18 +414,18 @@ impl ImageCache { let mut response = Some(response); let val = waiters.lock(); let mut items = unsafe { - cast::transmute::<*(), ~[Sender<ImageResponseMsg>]>(*val) + cast::transmute::<*(), Box<Vec<Sender<ImageResponseMsg>>>>(*val) }; items.push(response.take().unwrap()); let _ = unsafe { // Cast back to avoid the drop at the end. - cast::transmute::<~[Sender<ImageResponseMsg>], *()>(items) + cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(items) }; } else { - let response = ~[response]; + let response = box vec!(response); let wrapped = unsafe { Arc::new(Mutex::new( - cast::transmute::<~[Sender<ImageResponseMsg>], *()>(response))) + cast::transmute::<Box<Vec<Sender<ImageResponseMsg>>>, *()>(response))) }; self.wait_map.insert(url, wrapped); @@ -481,7 +481,7 @@ fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> { let (response_chan, response_port) = channel(); resource_task.send(resource_task::Load(url, response_chan)); - let mut image_data = ~[]; + let mut image_data = vec!(); let progress_port = response_port.recv().progress_port; loop { @@ -490,7 +490,7 @@ fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> { image_data.push_all(data.as_slice()); } resource_task::Done(result::Ok(..)) => { - return Ok(image_data); + return Ok(image_data.move_iter().collect()); } resource_task::Done(result::Err(..)) => { return Err(()); @@ -521,7 +521,6 @@ mod tests { use image::base::test_image_bin; use servo_util::url::parse_url; use std::comm; - use std::comm::{Empty, Data, Disconnected}; trait Closure { fn invoke(&self, _response: Sender<resource_task::ProgressMsg>) { } @@ -589,7 +588,7 @@ mod tests { } } - fn mock_resource_task<T: Closure+Send>(on_load: ~T) -> ResourceTask { + fn mock_resource_task<T: Closure+Send>(on_load: Box<T>) -> ResourceTask { spawn_listener(proc(port: Receiver<resource_task::ControlMsg>) { loop { match port.recv() { @@ -605,7 +604,7 @@ mod tests { #[test] fn should_exit_on_request() { - let mock_resource_task = mock_resource_task(~DoesNothing); + let mock_resource_task = mock_resource_task(box DoesNothing); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let _url = parse_url("file", None); @@ -617,7 +616,7 @@ mod tests { #[test] #[should_fail] fn should_fail_if_unprefetched_image_is_requested() { - let mock_resource_task = mock_resource_task(~DoesNothing); + let mock_resource_task = mock_resource_task(box DoesNothing); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -631,7 +630,7 @@ mod tests { fn should_request_url_from_resource_task_on_prefetch() { let (url_requested_chan, url_requested) = channel(); - let mock_resource_task = mock_resource_task(~JustSendOK { url_requested_chan: url_requested_chan}); + let mock_resource_task = mock_resource_task(box JustSendOK { url_requested_chan: url_requested_chan}); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -646,7 +645,7 @@ mod tests { fn should_not_request_url_from_resource_task_on_multiple_prefetches() { let (url_requested_chan, url_requested) = comm::channel(); - let mock_resource_task = mock_resource_task(~JustSendOK { url_requested_chan: url_requested_chan}); + let mock_resource_task = mock_resource_task(box JustSendOK { url_requested_chan: url_requested_chan}); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -657,8 +656,8 @@ mod tests { image_cache_task.exit(); mock_resource_task.send(resource_task::Exit); match url_requested.try_recv() { - Empty | Disconnected => (), - Data(_) => assert!(false), + Err(_) => (), + Ok(_) => fail!(), }; } @@ -666,7 +665,7 @@ mod tests { fn should_return_image_not_ready_if_data_has_not_arrived() { let (wait_chan, wait_port) = comm::channel(); - let mock_resource_task = mock_resource_task(~WaitSendTestImage{wait_port: wait_port}); + let mock_resource_task = mock_resource_task(box WaitSendTestImage{wait_port: wait_port}); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -683,7 +682,7 @@ mod tests { #[test] fn should_return_decoded_image_data_if_data_has_arrived() { - let mock_resource_task = mock_resource_task(~SendTestImage); + let mock_resource_task = mock_resource_task(box SendTestImage); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -709,7 +708,7 @@ mod tests { #[test] fn should_return_decoded_image_data_for_multiple_requests() { - let mock_resource_task = mock_resource_task(~SendTestImage); + let mock_resource_task = mock_resource_task(box SendTestImage); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -776,8 +775,8 @@ mod tests { // Our resource task should not have received another request for the image // because it's already cached match image_bin_sent.try_recv() { - Empty | Disconnected => (), - Data(_) => assert!(false), + Err(_) => (), + Ok(_) => fail!(), } } @@ -824,14 +823,14 @@ mod tests { // Our resource task should not have received another request for the image // because it's already cached match image_bin_sent.try_recv() { - Empty | Disconnected => (), - Data(_) => assert!(false), + Err(_) => (), + Ok(_) => fail!(), } } #[test] fn should_return_failed_if_image_bin_cannot_be_fetched() { - let mock_resource_task = mock_resource_task(~SendTestImageErr); + let mock_resource_task = mock_resource_task(box SendTestImageErr); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -857,7 +856,7 @@ mod tests { #[test] fn should_return_failed_for_multiple_get_image_requests_if_image_bin_cannot_be_fetched() { - let mock_resource_task = mock_resource_task(~SendTestImageErr); + let mock_resource_task = mock_resource_task(box SendTestImageErr); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -891,7 +890,7 @@ mod tests { #[test] fn should_return_failed_if_image_decode_fails() { - let mock_resource_task = mock_resource_task(~SendBogusImage); + let mock_resource_task = mock_resource_task(box SendBogusImage); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -919,7 +918,7 @@ mod tests { #[test] fn should_return_image_on_wait_if_image_is_already_loaded() { - let mock_resource_task = mock_resource_task(~SendTestImage); + let mock_resource_task = mock_resource_task(box SendTestImage); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -947,7 +946,7 @@ mod tests { fn should_return_image_on_wait_if_image_is_not_yet_loaded() { let (wait_chan, wait_port) = comm::channel(); - let mock_resource_task = mock_resource_task(~WaitSendTestImage {wait_port: wait_port}); + let mock_resource_task = mock_resource_task(box WaitSendTestImage {wait_port: wait_port}); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -973,7 +972,7 @@ mod tests { fn should_return_image_failed_on_wait_if_image_fails_to_load() { let (wait_chan, wait_port) = comm::channel(); - let mock_resource_task = mock_resource_task(~WaitSendTestImageErr{wait_port: wait_port}); + let mock_resource_task = mock_resource_task(box WaitSendTestImageErr{wait_port: wait_port}); let image_cache_task = ImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); @@ -997,7 +996,7 @@ mod tests { #[test] fn sync_cache_should_wait_for_images() { - let mock_resource_task = mock_resource_task(~SendTestImage); + let mock_resource_task = mock_resource_task(box SendTestImage); let image_cache_task = SyncImageCacheTask(mock_resource_task.clone()); let url = parse_url("file", None); diff --git a/src/components/net/local_image_cache.rs b/src/components/net/local_image_cache.rs index deb22e7f077..2e0cb871ae5 100644 --- a/src/components/net/local_image_cache.rs +++ b/src/components/net/local_image_cache.rs @@ -32,7 +32,7 @@ pub fn LocalImageCache(image_cache_task: ImageCacheTask) -> LocalImageCache { pub struct LocalImageCache { image_cache_task: ImageCacheTask, round_number: uint, - on_image_available: Option<~ImageResponder:Send>, + on_image_available: Option<Box<ImageResponder:Send>>, state_map: UrlMap<ImageState> } @@ -47,7 +47,7 @@ struct ImageState { impl LocalImageCache { /// The local cache will only do a single remote request for a given /// URL in each 'round'. Layout should call this each time it begins - pub fn next_round(&mut self, on_image_available: ~ImageResponder:Send) { + pub fn next_round(&mut self, on_image_available: Box<ImageResponder:Send>) { self.round_number += 1; self.on_image_available = Some(on_image_available); } diff --git a/src/components/net/resource_task.rs b/src/components/net/resource_task.rs index 9231ad0f86b..a4a54fbc624 100644 --- a/src/components/net/resource_task.rs +++ b/src/components/net/resource_task.rs @@ -9,7 +9,7 @@ use http_loader; use data_loader; use std::comm::{channel, Receiver, Sender}; -use std::task; +use std::task::TaskBuilder; use http::headers::content_type::MediaType; use http::headers::response::HeaderCollection; use url::Url; @@ -56,10 +56,10 @@ impl Metadata { Some(MediaType { type_: ref type_, subtype: ref subtype, parameters: ref parameters }) => { - self.content_type = Some((type_.clone(), subtype.clone())); + self.content_type = Some((type_.as_slice().to_owned(), subtype.as_slice().to_owned())); for &(ref k, ref v) in parameters.iter() { if "charset" == k.as_slice() { - self.charset = Some(v.clone()); + self.charset = Some(v.as_slice().to_owned()); } } } @@ -140,7 +140,7 @@ pub fn ResourceTask() -> ResourceTask { fn create_resource_task_with_loaders(loaders: Vec<(~str, LoaderTaskFactory)>) -> ResourceTask { let (setup_chan, setup_port) = channel(); - let builder = task::task().named("ResourceManager"); + let builder = TaskBuilder::new().named("ResourceManager"); builder.spawn(proc() { let (chan, port) = channel(); setup_chan.send(chan); diff --git a/src/components/script/dom/attr.rs b/src/components/script/dom/attr.rs index 4822de7eb07..68300bcb29f 100644 --- a/src/components/script/dom/attr.rs +++ b/src/components/script/dom/attr.rs @@ -61,7 +61,7 @@ impl Attr { name: DOMString, namespace: Namespace, prefix: Option<DOMString>, owner: &JSRef<Element>) -> Temporary<Attr> { let attr = Attr::new_inherited(local_name, value, name, namespace, prefix, owner); - reflect_dom_object(~attr, window, AttrBinding::Wrap) + reflect_dom_object(box attr, window, AttrBinding::Wrap) } pub fn set_value(&mut self, set_type: AttrSettingType, value: DOMString) { diff --git a/src/components/script/dom/attrlist.rs b/src/components/script/dom/attrlist.rs index e707a42b13f..8ed4dca07a4 100644 --- a/src/components/script/dom/attrlist.rs +++ b/src/components/script/dom/attrlist.rs @@ -26,7 +26,7 @@ impl AttrList { } pub fn new(window: &JSRef<Window>, elem: &JSRef<Element>) -> Temporary<AttrList> { - reflect_dom_object(~AttrList::new_inherited(window, elem), + reflect_dom_object(box AttrList::new_inherited(window, elem), window, AttrListBinding::Wrap) } } diff --git a/src/components/script/dom/bindings/callback.rs b/src/components/script/dom/bindings/callback.rs index 1633ebb2411..96ddae184cc 100644 --- a/src/components/script/dom/bindings/callback.rs +++ b/src/components/script/dom/bindings/callback.rs @@ -85,7 +85,7 @@ pub fn GetJSObjectFromCallback<T: CallbackContainer>(callback: &T) -> *JSObject pub fn WrapCallThisObject<T: 'static + CallbackContainer + Reflectable>(cx: *JSContext, _scope: *JSObject, - p: ~T) -> *JSObject { + p: Box<T>) -> *JSObject { let obj = GetJSObjectFromCallback(p); assert!(obj.is_not_null()); diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index ed1e78daf05..14a3cc1829e 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1755,10 +1755,10 @@ class CGWrapMethod(CGAbstractMethod): assert descriptor.interface.hasInterfacePrototypeObject() if not descriptor.createGlobal: args = [Argument('*JSContext', 'aCx'), Argument('&JSRef<Window>', 'aScope'), - Argument("~" + descriptor.concreteType, 'aObject', mutable=True)] + Argument("Box<%s>" % descriptor.concreteType, 'aObject', mutable=True)] else: args = [Argument('*JSContext', 'aCx'), - Argument("~" + descriptor.concreteType, 'aObject', mutable=True)] + Argument("Box<%s>" % descriptor.concreteType, 'aObject', mutable=True)] retval = 'JS<%s>' % descriptor.concreteType CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args, pub=True) @@ -2609,7 +2609,7 @@ impl ToJSValConvertible for valuelist { } } """ % (",\n ".join(map(getEnumValueName, enum.values())), - ",\n ".join(['&"%s"' % val for val in enum.values()])) + ",\n ".join(['"%s"' % val for val in enum.values()])) self.cgRoot = CGList([ CGNamespace.build([enum.identifier.name + "Values"], @@ -3740,7 +3740,7 @@ class CGAbstractClassHook(CGAbstractExternMethod): def finalizeHook(descriptor, hookName, context): release = """let val = JS_GetReservedSlot(obj, dom_object_slot(obj)); -let _: ~%s = cast::transmute(val.to_private()); +let _: Box<%s> = cast::transmute(val.to_private()); debug!("%s finalize: {:p}", this); """ % (descriptor.concreteType, descriptor.concreteType) return release @@ -4221,7 +4221,7 @@ class CGBindingRoot(CGThing): 'dom::bindings::js::{OptionalRootable, OptionalRootedRootable, ResultRootable}', 'dom::bindings::js::{OptionalRootedReference, OptionalOptionalRootedRootable}', 'dom::bindings::utils::{CreateDOMGlobal, CreateInterfaceObjects2}', - 'dom::bindings::utils::{ConstantSpec, cx_for_dom_object, Default}', + 'dom::bindings::utils::{ConstantSpec, cx_for_dom_object}', 'dom::bindings::utils::{dom_object_slot, DOM_OBJECT_SLOT, DOMClass}', 'dom::bindings::utils::{DOMJSClass, JSCLASS_DOM_GLOBAL}', 'dom::bindings::utils::{FindEnumStringIndex, GetArrayIndexFromId}', @@ -4258,7 +4258,6 @@ class CGBindingRoot(CGThing): 'std::cast', 'std::cmp', 'std::ptr', - 'std::slice', 'std::str', 'std::num', ]) @@ -4649,7 +4648,7 @@ class CGCallback(CGClass): # And now insert our template argument. argsWithoutThis = list(args) - args.insert(0, Argument("~T", "thisObj")) + args.insert(0, Argument("Box<T>", "thisObj")) # And the self argument method.args.insert(0, Argument(None, "&self")) @@ -4799,7 +4798,7 @@ class CallbackMember(CGNativeMember): if self.argCount > 0: replacements["argCount"] = self.argCountStr replacements["argvDecl"] = string.Template( - "let mut argv = slice::from_elem(${argCount}, UndefinedValue());\n" + "let mut argv = Vec::from_elem(${argCount}, UndefinedValue());\n" ).substitute(replacements) else: # Avoid weird 0-sized arrays @@ -4886,7 +4885,7 @@ class CallbackMember(CGNativeMember): result = argval prepend = "" - conversion = prepend + wrapForType("argv[%s]" % jsvalIndex, + conversion = prepend + wrapForType("*argv.get_mut(%s)" % jsvalIndex, result=result, successCode="continue;" if arg.variadic else "break;") if arg.variadic: @@ -4975,7 +4974,7 @@ class CallbackMethod(CallbackMember): "getCallable": self.getCallableDecl() } if self.argCount > 0: - replacements["argv"] = "&argv[0]" + replacements["argv"] = "argv.as_ptr()" replacements["argc"] = "argc" else: replacements["argv"] = "nullptr" diff --git a/src/components/script/dom/bindings/js.rs b/src/components/script/dom/bindings/js.rs index 8c33333e3cf..38fafe757a1 100644 --- a/src/components/script/dom/bindings/js.rs +++ b/src/components/script/dom/bindings/js.rs @@ -49,7 +49,6 @@ use script_task::StackRoots; use std::cast; use std::cell::RefCell; use std::kinds::marker::ContravariantLifetime; -use std::local_data; /// A type that represents a JS-owned value that is rooted for the lifetime of this value. /// Importantly, it requires explicit rooting in order to interact with the inner value. @@ -94,12 +93,10 @@ impl<T: Reflectable> Temporary<T> { /// Create a stack-bounded root for this value. pub fn root<'a, 'b>(self) -> Root<'a, 'b, T> { - local_data::get(StackRoots, |opt| { - let collection = opt.unwrap(); - unsafe { - (**collection).new_root(&self.inner) - } - }) + let collection = StackRoots.get().unwrap(); + unsafe { + (**collection).new_root(&self.inner) + } } unsafe fn inner(&self) -> JS<T> { @@ -162,12 +159,10 @@ impl<T: Reflectable> JS<T> { /// Root this JS-owned value to prevent its collection as garbage. pub fn root<'a, 'b>(&self) -> Root<'a, 'b, T> { - local_data::get(StackRoots, |opt| { - let collection = opt.unwrap(); - unsafe { - (**collection).new_root(self) - } - }) + let collection = StackRoots.get().unwrap(); + unsafe { + (**collection).new_root(self) + } } } diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 7c742efcbb2..b263f8a46d6 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -140,7 +140,7 @@ pub fn unwrap_jsmanaged<T: Reflectable>(mut obj: *JSObject, } } -pub unsafe fn squirrel_away_unique<T>(x: ~T) -> *T { +pub unsafe fn squirrel_away_unique<T>(x: Box<T>) -> *T { cast::transmute(x) } @@ -375,7 +375,7 @@ pub extern fn ThrowingConstructor(_cx: *JSContext, _argc: c_uint, _vp: *mut JSVa } pub fn initialize_global(global: *JSObject) { - let protoArray = ~([0 as *JSObject, ..PrototypeList::id::IDCount as uint]); + let protoArray = box () ([0 as *JSObject, ..PrototypeList::id::IDCount as uint]); unsafe { let box_ = squirrel_away_unique(protoArray); JS_SetReservedSlot(global, @@ -390,9 +390,9 @@ pub trait Reflectable { } pub fn reflect_dom_object<T: Reflectable> - (obj: ~T, + (obj: Box<T>, window: &JSRef<window::Window>, - wrap_fn: extern "Rust" fn(*JSContext, &JSRef<window::Window>, ~T) -> JS<T>) + wrap_fn: extern "Rust" fn(*JSContext, &JSRef<window::Window>, Box<T>) -> JS<T>) -> Temporary<T> { Temporary::new(wrap_fn(window.deref().get_cx(), window, obj)) } diff --git a/src/components/script/dom/blob.rs b/src/components/script/dom/blob.rs index f4f22a26873..162a859acb1 100644 --- a/src/components/script/dom/blob.rs +++ b/src/components/script/dom/blob.rs @@ -24,7 +24,7 @@ impl Blob { } pub fn new(window: &JSRef<Window>) -> Temporary<Blob> { - reflect_dom_object(~Blob::new_inherited(window), + reflect_dom_object(box Blob::new_inherited(window), window, BlobBinding::Wrap) } diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index db9bb9cef73..63d961c10b7 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -70,7 +70,7 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { } fn AppendData(&mut self, arg: DOMString) -> ErrorResult { - self.data.push_str(arg); + self.data = self.data + arg; Ok(()) } @@ -92,10 +92,10 @@ impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { } else { count }; - let mut data = self.data.slice(0, offset as uint).to_owned(); + let mut data = self.data.slice(0, offset as uint).to_strbuf(); data.push_str(arg); data.push_str(self.data.slice((offset + count) as uint, length as uint)); - self.data = data; + self.data = data.into_owned(); // FIXME: Once we have `Range`, we should implement step7 to step11 Ok(()) } diff --git a/src/components/script/dom/clientrect.rs b/src/components/script/dom/clientrect.rs index 316269bfc56..65d648c9448 100644 --- a/src/components/script/dom/clientrect.rs +++ b/src/components/script/dom/clientrect.rs @@ -36,7 +36,7 @@ impl ClientRect { top: Au, bottom: Au, left: Au, right: Au) -> Temporary<ClientRect> { let rect = ClientRect::new_inherited(window, top, bottom, left, right); - reflect_dom_object(~rect, window, ClientRectBinding::Wrap) + reflect_dom_object(box rect, window, ClientRectBinding::Wrap) } } diff --git a/src/components/script/dom/clientrectlist.rs b/src/components/script/dom/clientrectlist.rs index d48cfadf2d7..6072b86df71 100644 --- a/src/components/script/dom/clientrectlist.rs +++ b/src/components/script/dom/clientrectlist.rs @@ -27,7 +27,7 @@ impl ClientRectList { pub fn new(window: &JSRef<Window>, rects: Vec<JSRef<ClientRect>>) -> Temporary<ClientRectList> { - reflect_dom_object(~ClientRectList::new_inherited(window, rects), + reflect_dom_object(box ClientRectList::new_inherited(window, rects), window, ClientRectListBinding::Wrap) } } diff --git a/src/components/script/dom/comment.rs b/src/components/script/dom/comment.rs index 896cfe47560..af64e4619e3 100644 --- a/src/components/script/dom/comment.rs +++ b/src/components/script/dom/comment.rs @@ -34,7 +34,7 @@ impl Comment { pub fn new(text: DOMString, document: &JSRef<Document>) -> Temporary<Comment> { let node = Comment::new_inherited(text, document); - Node::reflect_node(~node, document, CommentBinding::Wrap) + Node::reflect_node(box node, document, CommentBinding::Wrap) } pub fn Constructor(owner: &JSRef<Window>, data: DOMString) -> Fallible<Temporary<Comment>> { diff --git a/src/components/script/dom/console.rs b/src/components/script/dom/console.rs index a9c60962359..f385de9792c 100644 --- a/src/components/script/dom/console.rs +++ b/src/components/script/dom/console.rs @@ -21,7 +21,7 @@ impl Console { } pub fn new(window: &JSRef<Window>) -> Temporary<Console> { - reflect_dom_object(~Console::new_inherited(), window, ConsoleBinding::Wrap) + reflect_dom_object(box Console::new_inherited(), window, ConsoleBinding::Wrap) } } diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 086ac778fdd..2ed144add2b 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -179,9 +179,9 @@ impl<'a> DocumentHelpers for JSRef<'a, Document> { } impl Document { - pub fn reflect_document(document: ~Document, + pub fn reflect_document(document: Box<Document>, window: &JSRef<Window>, - wrap_fn: extern "Rust" fn(*JSContext, &JSRef<Window>, ~Document) -> JS<Document>) + wrap_fn: extern "Rust" fn(*JSContext, &JSRef<Window>, Box<Document>) -> JS<Document>) -> Temporary<Document> { assert!(document.reflector().get_jsobject().is_null()); let mut raw_doc = reflect_dom_object(document, window, wrap_fn).root(); @@ -230,7 +230,7 @@ impl Document { pub fn new(window: &JSRef<Window>, url: Option<Url>, doctype: IsHTMLDocument, content_type: Option<DOMString>) -> Temporary<Document> { let document = Document::new_inherited(window, url, doctype, content_type); - Document::reflect_document(~document, window, DocumentBinding::Wrap) + Document::reflect_document(box document, window, DocumentBinding::Wrap) } } @@ -541,7 +541,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { // http://www.whatwg.org/specs/web-apps/current-work/#document.title fn Title(&self) -> DOMString { - let mut title = "".to_owned(); + let mut title = StrBuf::new(); self.GetDocumentElement().root().map(|root| { let root: &JSRef<Node> = NodeCast::from_ref(&*root); root.traverse_preorder() @@ -555,7 +555,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { } }); }); - let v: Vec<&str> = title.words().collect(); + let v: Vec<&str> = title.as_slice().words().collect(); let title = v.connect(" "); title.trim().to_owned() } @@ -693,7 +693,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "img" == elem.deref().local_name } } - let filter = ~ImagesFilter; + let filter = box ImagesFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -707,7 +707,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "embed" == elem.deref().local_name } } - let filter = ~EmbedsFilter; + let filter = box EmbedsFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -727,7 +727,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { elem.get_attribute(Null, "href").is_some() } } - let filter = ~LinksFilter; + let filter = box LinksFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -741,7 +741,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "form" == elem.deref().local_name } } - let filter = ~FormsFilter; + let filter = box FormsFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -755,7 +755,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "script" == elem.deref().local_name } } - let filter = ~ScriptsFilter; + let filter = box ScriptsFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -769,7 +769,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "a" == elem.deref().local_name && elem.get_attribute(Null, "name").is_some() } } - let filter = ~AnchorsFilter; + let filter = box AnchorsFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } @@ -783,7 +783,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { "applet" == elem.deref().local_name } } - let filter = ~AppletsFilter; + let filter = box AppletsFilter; HTMLCollection::create(&*window, NodeCast::from_ref(self), filter) } diff --git a/src/components/script/dom/documentfragment.rs b/src/components/script/dom/documentfragment.rs index 07efa58e166..904a99753f5 100644 --- a/src/components/script/dom/documentfragment.rs +++ b/src/components/script/dom/documentfragment.rs @@ -33,7 +33,7 @@ impl DocumentFragment { pub fn new(document: &JSRef<Document>) -> Temporary<DocumentFragment> { let node = DocumentFragment::new_inherited(document); - Node::reflect_node(~node, document, DocumentFragmentBinding::Wrap) + Node::reflect_node(box node, document, DocumentFragmentBinding::Wrap) } pub fn Constructor(owner: &JSRef<Window>) -> Fallible<Temporary<DocumentFragment>> { diff --git a/src/components/script/dom/documenttype.rs b/src/components/script/dom/documenttype.rs index 98c7a5e1f86..8d759cff8cc 100644 --- a/src/components/script/dom/documenttype.rs +++ b/src/components/script/dom/documenttype.rs @@ -48,7 +48,7 @@ impl DocumentType { public_id, system_id, document); - Node::reflect_node(~documenttype, document, DocumentTypeBinding::Wrap) + Node::reflect_node(box documenttype, document, DocumentTypeBinding::Wrap) } } diff --git a/src/components/script/dom/domexception.rs b/src/components/script/dom/domexception.rs index 6d664cc0592..860e3f72be0 100644 --- a/src/components/script/dom/domexception.rs +++ b/src/components/script/dom/domexception.rs @@ -50,7 +50,7 @@ impl DOMException { } pub fn new(window: &JSRef<Window>, code: DOMErrorName) -> Temporary<DOMException> { - reflect_dom_object(~DOMException::new_inherited(code), window, DOMExceptionBinding::Wrap) + reflect_dom_object(box DOMException::new_inherited(code), window, DOMExceptionBinding::Wrap) } } diff --git a/src/components/script/dom/domimplementation.rs b/src/components/script/dom/domimplementation.rs index 691d7ca4a81..91d2fa324d4 100644 --- a/src/components/script/dom/domimplementation.rs +++ b/src/components/script/dom/domimplementation.rs @@ -34,7 +34,7 @@ impl DOMImplementation { } pub fn new(owner: &JSRef<Window>) -> Temporary<DOMImplementation> { - reflect_dom_object(~DOMImplementation::new_inherited(owner), owner, + reflect_dom_object(box DOMImplementation::new_inherited(owner), owner, DOMImplementationBinding::Wrap) } } diff --git a/src/components/script/dom/domparser.rs b/src/components/script/dom/domparser.rs index c96da5cf0d1..746a5af21a5 100644 --- a/src/components/script/dom/domparser.rs +++ b/src/components/script/dom/domparser.rs @@ -26,7 +26,7 @@ impl DOMParser { } pub fn new(owner: &JSRef<Window>) -> Temporary<DOMParser> { - reflect_dom_object(~DOMParser::new_inherited(owner), owner, + reflect_dom_object(box DOMParser::new_inherited(owner), owner, DOMParserBinding::Wrap) } diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 5b8bd777468..c1fbc84af9d 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -155,7 +155,7 @@ impl Element { pub fn new(local_name: DOMString, namespace: Namespace, prefix: Option<DOMString>, document: &JSRef<Document>) -> Temporary<Element> { let element = Element::new_inherited(ElementTypeId, local_name, namespace, prefix, document); - Node::reflect_node(~element, document, ElementBinding::Wrap) + Node::reflect_node(box element, document, ElementBinding::Wrap) } } diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index 11eec04df39..450df543a38 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -82,7 +82,7 @@ impl Event { } pub fn new(window: &JSRef<Window>) -> Temporary<Event> { - reflect_dom_object(~Event::new_inherited(HTMLEventTypeId), + reflect_dom_object(box Event::new_inherited(HTMLEventTypeId), window, EventBinding::Wrap) } diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index 17c8e19b45c..e1b8def7357 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -5,8 +5,7 @@ use dom::bindings::js::JSRef; use dom::bindings::utils::{Reflectable, Reflector}; use dom::bindings::error::{Fallible, InvalidState}; -use dom::bindings::codegen::BindingDeclarations::EventListenerBinding; -use self::EventListenerBinding::EventListener; +use dom::bindings::codegen::BindingDeclarations::EventListenerBinding::EventListener; use dom::event::Event; use dom::eventdispatcher::dispatch_event; use dom::node::NodeTypeId; diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index 68d156be699..13f1a2de58b 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -38,7 +38,7 @@ impl FormData { } pub fn new(form: Option<JSRef<HTMLFormElement>>, window: &JSRef<Window>) -> Temporary<FormData> { - reflect_dom_object(~FormData::new_inherited(form, window), window, FormDataBinding::Wrap) + reflect_dom_object(box FormData::new_inherited(form, window), window, FormDataBinding::Wrap) } pub fn Constructor(window: &JSRef<Window>, form: Option<JSRef<HTMLFormElement>>) -> Fallible<Temporary<FormData>> { diff --git a/src/components/script/dom/htmlanchorelement.rs b/src/components/script/dom/htmlanchorelement.rs index b2ee9c542f1..fcc6f200203 100644 --- a/src/components/script/dom/htmlanchorelement.rs +++ b/src/components/script/dom/htmlanchorelement.rs @@ -33,7 +33,7 @@ impl HTMLAnchorElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLAnchorElement> { let element = HTMLAnchorElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLAnchorElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLAnchorElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlappletelement.rs b/src/components/script/dom/htmlappletelement.rs index d2867a2dda9..f4395fd6a65 100644 --- a/src/components/script/dom/htmlappletelement.rs +++ b/src/components/script/dom/htmlappletelement.rs @@ -33,7 +33,7 @@ impl HTMLAppletElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLAppletElement> { let element = HTMLAppletElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLAppletElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLAppletElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlareaelement.rs b/src/components/script/dom/htmlareaelement.rs index ff67ad69963..24f9c7e2789 100644 --- a/src/components/script/dom/htmlareaelement.rs +++ b/src/components/script/dom/htmlareaelement.rs @@ -33,7 +33,7 @@ impl HTMLAreaElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLAreaElement> { let element = HTMLAreaElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLAreaElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLAreaElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlaudioelement.rs b/src/components/script/dom/htmlaudioelement.rs index b95a39822a7..0926ac6b80e 100644 --- a/src/components/script/dom/htmlaudioelement.rs +++ b/src/components/script/dom/htmlaudioelement.rs @@ -32,7 +32,7 @@ impl HTMLAudioElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLAudioElement> { let element = HTMLAudioElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLAudioElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLAudioElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlbaseelement.rs b/src/components/script/dom/htmlbaseelement.rs index 8b035fca125..4548349b247 100644 --- a/src/components/script/dom/htmlbaseelement.rs +++ b/src/components/script/dom/htmlbaseelement.rs @@ -33,7 +33,7 @@ impl HTMLBaseElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLBaseElement> { let element = HTMLBaseElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLBaseElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLBaseElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlbodyelement.rs b/src/components/script/dom/htmlbodyelement.rs index eb8f70be9c2..37962f3c540 100644 --- a/src/components/script/dom/htmlbodyelement.rs +++ b/src/components/script/dom/htmlbodyelement.rs @@ -33,7 +33,7 @@ impl HTMLBodyElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLBodyElement> { let element = HTMLBodyElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLBodyElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLBodyElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlbrelement.rs b/src/components/script/dom/htmlbrelement.rs index 46e42c584c1..1e709703671 100644 --- a/src/components/script/dom/htmlbrelement.rs +++ b/src/components/script/dom/htmlbrelement.rs @@ -33,7 +33,7 @@ impl HTMLBRElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLBRElement> { let element = HTMLBRElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLBRElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLBRElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlbuttonelement.rs b/src/components/script/dom/htmlbuttonelement.rs index 2034b8ba33a..5274097dd2e 100644 --- a/src/components/script/dom/htmlbuttonelement.rs +++ b/src/components/script/dom/htmlbuttonelement.rs @@ -35,7 +35,7 @@ impl HTMLButtonElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLButtonElement> { let element = HTMLButtonElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLButtonElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLButtonElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlcanvaselement.rs b/src/components/script/dom/htmlcanvaselement.rs index 4f7b185cbd1..7ae54440bab 100644 --- a/src/components/script/dom/htmlcanvaselement.rs +++ b/src/components/script/dom/htmlcanvaselement.rs @@ -33,7 +33,7 @@ impl HTMLCanvasElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLCanvasElement> { let element = HTMLCanvasElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLCanvasElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLCanvasElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlcollection.rs b/src/components/script/dom/htmlcollection.rs index 82b0d54693f..f1cc1ef5aa5 100644 --- a/src/components/script/dom/htmlcollection.rs +++ b/src/components/script/dom/htmlcollection.rs @@ -18,7 +18,7 @@ pub trait CollectionFilter { fn filter(&self, elem: &JSRef<Element>, root: &JSRef<Node>) -> bool; } -impl<S: Encoder<E>, E> Encodable<S, E> for ~CollectionFilter { +impl<S: Encoder<E>, E> Encodable<S, E> for Box<CollectionFilter> { fn encode(&self, _s: &mut S) -> Result<(), E> { Ok(()) } @@ -27,7 +27,7 @@ impl<S: Encoder<E>, E> Encodable<S, E> for ~CollectionFilter { #[deriving(Encodable)] pub enum CollectionTypeId { Static(Vec<JS<Element>>), - Live(JS<Node>, ~CollectionFilter) + Live(JS<Node>, Box<CollectionFilter>) } #[deriving(Encodable)] @@ -47,13 +47,14 @@ impl HTMLCollection { } pub fn new(window: &JSRef<Window>, collection: CollectionTypeId) -> Temporary<HTMLCollection> { - reflect_dom_object(~HTMLCollection::new_inherited(window, collection), + reflect_dom_object(box HTMLCollection::new_inherited(window, collection), window, HTMLCollectionBinding::Wrap) } } impl HTMLCollection { - pub fn create(window: &JSRef<Window>, root: &JSRef<Node>, filter: ~CollectionFilter) -> Temporary<HTMLCollection> { + pub fn create(window: &JSRef<Window>, root: &JSRef<Node>, + filter: Box<CollectionFilter>) -> Temporary<HTMLCollection> { HTMLCollection::new(window, Live(root.unrooted(), filter)) } @@ -70,7 +71,7 @@ impl HTMLCollection { let filter = TagNameFilter { tag: tag }; - HTMLCollection::create(window, root, ~filter) + HTMLCollection::create(window, root, box filter) } pub fn by_tag_name_ns(window: &JSRef<Window>, root: &JSRef<Node>, tag: DOMString, @@ -88,7 +89,7 @@ impl HTMLCollection { tag: tag, namespace: namespace }; - HTMLCollection::create(window, root, ~filter) + HTMLCollection::create(window, root, box filter) } pub fn by_class_name(window: &JSRef<Window>, root: &JSRef<Node>, classes: DOMString) @@ -104,7 +105,7 @@ impl HTMLCollection { let filter = ClassNameFilter { classes: split_html_space_chars(classes).map(|class| class.into_owned()).collect() }; - HTMLCollection::create(window, root, ~filter) + HTMLCollection::create(window, root, box filter) } pub fn children(window: &JSRef<Window>, root: &JSRef<Node>) -> Temporary<HTMLCollection> { @@ -114,7 +115,7 @@ impl HTMLCollection { root.is_parent_of(NodeCast::from_ref(elem)) } } - HTMLCollection::create(window, root, ~ElementChildFilter) + HTMLCollection::create(window, root, box ElementChildFilter) } } diff --git a/src/components/script/dom/htmldataelement.rs b/src/components/script/dom/htmldataelement.rs index 4ed543aa600..49597b237a0 100644 --- a/src/components/script/dom/htmldataelement.rs +++ b/src/components/script/dom/htmldataelement.rs @@ -33,7 +33,7 @@ impl HTMLDataElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLDataElement> { let element = HTMLDataElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLDataElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLDataElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmldatalistelement.rs b/src/components/script/dom/htmldatalistelement.rs index 6c8b2739c19..e56ded66fd7 100644 --- a/src/components/script/dom/htmldatalistelement.rs +++ b/src/components/script/dom/htmldatalistelement.rs @@ -33,7 +33,7 @@ impl HTMLDataListElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLDataListElement> { let element = HTMLDataListElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLDataListElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLDataListElementBinding::Wrap) } } @@ -50,7 +50,7 @@ impl<'a> HTMLDataListElementMethods for JSRef<'a, HTMLDataListElement> { } } let node: &JSRef<Node> = NodeCast::from_ref(self); - let filter = ~HTMLDataListOptionsFilter; + let filter = box HTMLDataListOptionsFilter; let window = window_from_node(node).root(); HTMLCollection::create(&*window, node, filter) } diff --git a/src/components/script/dom/htmldirectoryelement.rs b/src/components/script/dom/htmldirectoryelement.rs index f15deb2cdc4..38a90fafa1c 100644 --- a/src/components/script/dom/htmldirectoryelement.rs +++ b/src/components/script/dom/htmldirectoryelement.rs @@ -33,7 +33,7 @@ impl HTMLDirectoryElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLDirectoryElement> { let element = HTMLDirectoryElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLDirectoryElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLDirectoryElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmldivelement.rs b/src/components/script/dom/htmldivelement.rs index 726efe362b1..8f3875e914b 100644 --- a/src/components/script/dom/htmldivelement.rs +++ b/src/components/script/dom/htmldivelement.rs @@ -33,7 +33,7 @@ impl HTMLDivElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLDivElement> { let element = HTMLDivElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLDivElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLDivElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmldlistelement.rs b/src/components/script/dom/htmldlistelement.rs index e6149ca91b6..26c236a3415 100644 --- a/src/components/script/dom/htmldlistelement.rs +++ b/src/components/script/dom/htmldlistelement.rs @@ -33,7 +33,7 @@ impl HTMLDListElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLDListElement> { let element = HTMLDListElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLDListElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLDListElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlelement.rs b/src/components/script/dom/htmlelement.rs index 5355abcf732..f1ecec10e15 100644 --- a/src/components/script/dom/htmlelement.rs +++ b/src/components/script/dom/htmlelement.rs @@ -41,7 +41,7 @@ impl HTMLElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLElement> { let element = HTMLElement::new_inherited(HTMLElementTypeId, localName, document); - Node::reflect_node(~element, document, HTMLElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlembedelement.rs b/src/components/script/dom/htmlembedelement.rs index 5bc729595ea..3f958e6e838 100644 --- a/src/components/script/dom/htmlembedelement.rs +++ b/src/components/script/dom/htmlembedelement.rs @@ -33,7 +33,7 @@ impl HTMLEmbedElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLEmbedElement> { let element = HTMLEmbedElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLEmbedElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLEmbedElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlfieldsetelement.rs b/src/components/script/dom/htmlfieldsetelement.rs index bb6aecc13a0..cab1b818015 100644 --- a/src/components/script/dom/htmlfieldsetelement.rs +++ b/src/components/script/dom/htmlfieldsetelement.rs @@ -36,7 +36,7 @@ impl HTMLFieldSetElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLFieldSetElement> { let element = HTMLFieldSetElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLFieldSetElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLFieldSetElementBinding::Wrap) } } @@ -92,7 +92,7 @@ impl<'a> HTMLFieldSetElementMethods for JSRef<'a, HTMLFieldSetElement> { } } let node: &JSRef<Node> = NodeCast::from_ref(self); - let filter = ~ElementsFilter; + let filter = box ElementsFilter; let window = window_from_node(node).root(); HTMLCollection::create(&*window, node, filter) } diff --git a/src/components/script/dom/htmlfontelement.rs b/src/components/script/dom/htmlfontelement.rs index 84a1d9d5f4a..c34a7f66141 100644 --- a/src/components/script/dom/htmlfontelement.rs +++ b/src/components/script/dom/htmlfontelement.rs @@ -33,7 +33,7 @@ impl HTMLFontElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLFontElement> { let element = HTMLFontElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLFontElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLFontElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlformelement.rs b/src/components/script/dom/htmlformelement.rs index 305abb204f8..6a419d24ced 100644 --- a/src/components/script/dom/htmlformelement.rs +++ b/src/components/script/dom/htmlformelement.rs @@ -34,7 +34,7 @@ impl HTMLFormElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLFormElement> { let element = HTMLFormElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLFormElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLFormElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlframeelement.rs b/src/components/script/dom/htmlframeelement.rs index deef5711c74..df60c7f8fca 100644 --- a/src/components/script/dom/htmlframeelement.rs +++ b/src/components/script/dom/htmlframeelement.rs @@ -34,7 +34,7 @@ impl HTMLFrameElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLFrameElement> { let element = HTMLFrameElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLFrameElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLFrameElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlframesetelement.rs b/src/components/script/dom/htmlframesetelement.rs index 47151c95ba9..beb7021ffb6 100644 --- a/src/components/script/dom/htmlframesetelement.rs +++ b/src/components/script/dom/htmlframesetelement.rs @@ -33,7 +33,7 @@ impl HTMLFrameSetElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLFrameSetElement> { let element = HTMLFrameSetElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLFrameSetElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLFrameSetElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlheadelement.rs b/src/components/script/dom/htmlheadelement.rs index 3263131fe9a..d8d303a0483 100644 --- a/src/components/script/dom/htmlheadelement.rs +++ b/src/components/script/dom/htmlheadelement.rs @@ -32,7 +32,7 @@ impl HTMLHeadElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLHeadElement> { let element = HTMLHeadElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLHeadElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLHeadElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlheadingelement.rs b/src/components/script/dom/htmlheadingelement.rs index a199421863f..0d7f607f46a 100644 --- a/src/components/script/dom/htmlheadingelement.rs +++ b/src/components/script/dom/htmlheadingelement.rs @@ -44,7 +44,7 @@ impl HTMLHeadingElement { pub fn new(localName: DOMString, document: &JSRef<Document>, level: HeadingLevel) -> Temporary<HTMLHeadingElement> { let element = HTMLHeadingElement::new_inherited(localName, document, level); - Node::reflect_node(~element, document, HTMLHeadingElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLHeadingElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlhrelement.rs b/src/components/script/dom/htmlhrelement.rs index 15bf08b0eee..98829339845 100644 --- a/src/components/script/dom/htmlhrelement.rs +++ b/src/components/script/dom/htmlhrelement.rs @@ -33,7 +33,7 @@ impl HTMLHRElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLHRElement> { let element = HTMLHRElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLHRElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLHRElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlhtmlelement.rs b/src/components/script/dom/htmlhtmlelement.rs index 0b06135432b..29c4fc3176e 100644 --- a/src/components/script/dom/htmlhtmlelement.rs +++ b/src/components/script/dom/htmlhtmlelement.rs @@ -33,7 +33,7 @@ impl HTMLHtmlElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLHtmlElement> { let element = HTMLHtmlElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLHtmlElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLHtmlElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmliframeelement.rs b/src/components/script/dom/htmliframeelement.rs index 766d7a711f9..47d01567b77 100644 --- a/src/components/script/dom/htmliframeelement.rs +++ b/src/components/script/dom/htmliframeelement.rs @@ -85,7 +85,7 @@ impl HTMLIFrameElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLIFrameElement> { let element = HTMLIFrameElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLIFrameElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLIFrameElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlimageelement.rs b/src/components/script/dom/htmlimageelement.rs index fa0dc117abd..35a38aa3057 100644 --- a/src/components/script/dom/htmlimageelement.rs +++ b/src/components/script/dom/htmlimageelement.rs @@ -74,7 +74,7 @@ impl HTMLImageElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLImageElement> { let element = HTMLImageElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLImageElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLImageElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlinputelement.rs b/src/components/script/dom/htmlinputelement.rs index 737be52132b..1b3cdec49d6 100644 --- a/src/components/script/dom/htmlinputelement.rs +++ b/src/components/script/dom/htmlinputelement.rs @@ -33,7 +33,7 @@ impl HTMLInputElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLInputElement> { let element = HTMLInputElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLInputElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLInputElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmllabelelement.rs b/src/components/script/dom/htmllabelelement.rs index 433fff43c19..2896e65da59 100644 --- a/src/components/script/dom/htmllabelelement.rs +++ b/src/components/script/dom/htmllabelelement.rs @@ -32,7 +32,7 @@ impl HTMLLabelElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLLabelElement> { let element = HTMLLabelElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLLabelElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLLabelElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmllegendelement.rs b/src/components/script/dom/htmllegendelement.rs index b5552d5b277..e2e7d49f905 100644 --- a/src/components/script/dom/htmllegendelement.rs +++ b/src/components/script/dom/htmllegendelement.rs @@ -33,7 +33,7 @@ impl HTMLLegendElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLLegendElement> { let element = HTMLLegendElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLLegendElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLLegendElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmllielement.rs b/src/components/script/dom/htmllielement.rs index 37895089ae9..0f8aabbfa10 100644 --- a/src/components/script/dom/htmllielement.rs +++ b/src/components/script/dom/htmllielement.rs @@ -33,7 +33,7 @@ impl HTMLLIElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLLIElement> { let element = HTMLLIElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLLIElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLLIElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmllinkelement.rs b/src/components/script/dom/htmllinkelement.rs index eca69601efe..1ce030acb0a 100644 --- a/src/components/script/dom/htmllinkelement.rs +++ b/src/components/script/dom/htmllinkelement.rs @@ -33,7 +33,7 @@ impl HTMLLinkElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLLinkElement> { let element = HTMLLinkElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLLinkElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLLinkElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlmainelement.rs b/src/components/script/dom/htmlmainelement.rs index aa05a4f45f1..999f020bbd3 100644 --- a/src/components/script/dom/htmlmainelement.rs +++ b/src/components/script/dom/htmlmainelement.rs @@ -32,7 +32,7 @@ impl HTMLMainElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLMainElement> { let element = HTMLMainElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLMainElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLMainElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlmapelement.rs b/src/components/script/dom/htmlmapelement.rs index b61414f7363..b489647908e 100644 --- a/src/components/script/dom/htmlmapelement.rs +++ b/src/components/script/dom/htmlmapelement.rs @@ -34,7 +34,7 @@ impl HTMLMapElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLMapElement> { let element = HTMLMapElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLMapElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLMapElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlmetaelement.rs b/src/components/script/dom/htmlmetaelement.rs index 07e60f74bae..fae9bf84a5a 100644 --- a/src/components/script/dom/htmlmetaelement.rs +++ b/src/components/script/dom/htmlmetaelement.rs @@ -33,7 +33,7 @@ impl HTMLMetaElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLMetaElement> { let element = HTMLMetaElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLMetaElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLMetaElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlmeterelement.rs b/src/components/script/dom/htmlmeterelement.rs index bd2d45ac269..422bd79028e 100644 --- a/src/components/script/dom/htmlmeterelement.rs +++ b/src/components/script/dom/htmlmeterelement.rs @@ -33,7 +33,7 @@ impl HTMLMeterElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLMeterElement> { let element = HTMLMeterElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLMeterElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLMeterElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlmodelement.rs b/src/components/script/dom/htmlmodelement.rs index e3ec4937b96..3323ed3a72b 100644 --- a/src/components/script/dom/htmlmodelement.rs +++ b/src/components/script/dom/htmlmodelement.rs @@ -33,7 +33,7 @@ impl HTMLModElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLModElement> { let element = HTMLModElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLModElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLModElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlobjectelement.rs b/src/components/script/dom/htmlobjectelement.rs index 4cb8b8868d9..407acd3e336 100644 --- a/src/components/script/dom/htmlobjectelement.rs +++ b/src/components/script/dom/htmlobjectelement.rs @@ -47,7 +47,7 @@ impl HTMLObjectElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLObjectElement> { let element = HTMLObjectElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLObjectElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLObjectElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlolistelement.rs b/src/components/script/dom/htmlolistelement.rs index 4655c0e636e..a72ea0c7c84 100644 --- a/src/components/script/dom/htmlolistelement.rs +++ b/src/components/script/dom/htmlolistelement.rs @@ -33,7 +33,7 @@ impl HTMLOListElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLOListElement> { let element = HTMLOListElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLOListElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLOListElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmloptgroupelement.rs b/src/components/script/dom/htmloptgroupelement.rs index c5480bfe8a0..d6773ad5ad7 100644 --- a/src/components/script/dom/htmloptgroupelement.rs +++ b/src/components/script/dom/htmloptgroupelement.rs @@ -33,7 +33,7 @@ impl HTMLOptGroupElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLOptGroupElement> { let element = HTMLOptGroupElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLOptGroupElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLOptGroupElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmloptionelement.rs b/src/components/script/dom/htmloptionelement.rs index 6a2ad322795..c366e2251f5 100644 --- a/src/components/script/dom/htmloptionelement.rs +++ b/src/components/script/dom/htmloptionelement.rs @@ -34,7 +34,7 @@ impl HTMLOptionElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLOptionElement> { let element = HTMLOptionElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLOptionElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLOptionElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmloutputelement.rs b/src/components/script/dom/htmloutputelement.rs index 53fecd54ed9..6d7cd2f5f52 100644 --- a/src/components/script/dom/htmloutputelement.rs +++ b/src/components/script/dom/htmloutputelement.rs @@ -35,7 +35,7 @@ impl HTMLOutputElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLOutputElement> { let element = HTMLOutputElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLOutputElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLOutputElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlparagraphelement.rs b/src/components/script/dom/htmlparagraphelement.rs index c434f9b6fe9..f013e888bc1 100644 --- a/src/components/script/dom/htmlparagraphelement.rs +++ b/src/components/script/dom/htmlparagraphelement.rs @@ -33,7 +33,7 @@ impl HTMLParagraphElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLParagraphElement> { let element = HTMLParagraphElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLParagraphElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLParagraphElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlparamelement.rs b/src/components/script/dom/htmlparamelement.rs index dc9c759289d..5cb09b47d32 100644 --- a/src/components/script/dom/htmlparamelement.rs +++ b/src/components/script/dom/htmlparamelement.rs @@ -33,7 +33,7 @@ impl HTMLParamElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLParamElement> { let element = HTMLParamElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLParamElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLParamElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlpreelement.rs b/src/components/script/dom/htmlpreelement.rs index dba067927eb..8a10a5f51ab 100644 --- a/src/components/script/dom/htmlpreelement.rs +++ b/src/components/script/dom/htmlpreelement.rs @@ -33,7 +33,7 @@ impl HTMLPreElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLPreElement> { let element = HTMLPreElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLPreElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLPreElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlprogresselement.rs b/src/components/script/dom/htmlprogresselement.rs index 5f709ea11db..1f89c6b3c2f 100644 --- a/src/components/script/dom/htmlprogresselement.rs +++ b/src/components/script/dom/htmlprogresselement.rs @@ -33,7 +33,7 @@ impl HTMLProgressElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLProgressElement> { let element = HTMLProgressElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLProgressElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLProgressElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlquoteelement.rs b/src/components/script/dom/htmlquoteelement.rs index d029f35c0ef..cc61f5cdaf0 100644 --- a/src/components/script/dom/htmlquoteelement.rs +++ b/src/components/script/dom/htmlquoteelement.rs @@ -33,7 +33,7 @@ impl HTMLQuoteElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLQuoteElement> { let element = HTMLQuoteElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLQuoteElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLQuoteElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlscriptelement.rs b/src/components/script/dom/htmlscriptelement.rs index 6bff184a589..ab6d5077763 100644 --- a/src/components/script/dom/htmlscriptelement.rs +++ b/src/components/script/dom/htmlscriptelement.rs @@ -34,7 +34,7 @@ impl HTMLScriptElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLScriptElement> { let element = HTMLScriptElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLScriptElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLScriptElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlselectelement.rs b/src/components/script/dom/htmlselectelement.rs index bb6695ebbf9..dc497c8fc99 100644 --- a/src/components/script/dom/htmlselectelement.rs +++ b/src/components/script/dom/htmlselectelement.rs @@ -37,7 +37,7 @@ impl HTMLSelectElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLSelectElement> { let element = HTMLSelectElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLSelectElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLSelectElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlserializer.rs b/src/components/script/dom/htmlserializer.rs index 0077cdf5164..2021762f96d 100644 --- a/src/components/script/dom/htmlserializer.rs +++ b/src/components/script/dom/htmlserializer.rs @@ -20,7 +20,7 @@ use dom::processinginstruction::ProcessingInstruction; use dom::text::Text; pub fn serialize(iterator: &mut NodeIterator) -> ~str { - let mut html = "".to_owned(); + let mut html = StrBuf::new(); let mut open_elements: Vec<~str> = vec!(); for node in *iterator { @@ -62,7 +62,7 @@ pub fn serialize(iterator: &mut NodeIterator) -> ~str { while open_elements.len() > 0 { html.push_str("</".to_owned() + open_elements.pop().unwrap().as_slice() + ">"); } - html + html.into_owned() } fn serialize_comment(comment: &JSRef<Comment>) -> ~str { @@ -96,7 +96,9 @@ fn serialize_doctype(doctype: &JSRef<DocumentType>) -> ~str { } fn serialize_elem(elem: &JSRef<Element>, open_elements: &mut Vec<~str>) -> ~str { - let mut rv = "<".to_owned() + elem.deref().local_name; + let mut rv = StrBuf::new(); + rv.push_str("<"); + rv.push_str(elem.deref().local_name); for attr in elem.deref().attrs.iter() { let attr = attr.root(); rv.push_str(serialize_attr(&*attr)); @@ -120,7 +122,7 @@ fn serialize_elem(elem: &JSRef<Element>, open_elements: &mut Vec<~str>) -> ~str if !elem.deref().is_void() { open_elements.push(elem.deref().local_name.clone()); } - rv + rv.into_owned() } fn serialize_attr(attr: &JSRef<Attr>) -> ~str { diff --git a/src/components/script/dom/htmlsourceelement.rs b/src/components/script/dom/htmlsourceelement.rs index e8b344328f8..145cff35956 100644 --- a/src/components/script/dom/htmlsourceelement.rs +++ b/src/components/script/dom/htmlsourceelement.rs @@ -33,7 +33,7 @@ impl HTMLSourceElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLSourceElement> { let element = HTMLSourceElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLSourceElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLSourceElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlspanelement.rs b/src/components/script/dom/htmlspanelement.rs index baedd650729..be99efe0c50 100644 --- a/src/components/script/dom/htmlspanelement.rs +++ b/src/components/script/dom/htmlspanelement.rs @@ -32,7 +32,7 @@ impl HTMLSpanElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLSpanElement> { let element = HTMLSpanElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLSpanElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLSpanElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlstyleelement.rs b/src/components/script/dom/htmlstyleelement.rs index cd325b93047..5fe70082399 100644 --- a/src/components/script/dom/htmlstyleelement.rs +++ b/src/components/script/dom/htmlstyleelement.rs @@ -36,7 +36,7 @@ impl HTMLStyleElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLStyleElement> { let element = HTMLStyleElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLStyleElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLStyleElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltablecaptionelement.rs b/src/components/script/dom/htmltablecaptionelement.rs index 60d95267b0f..01bdbff9255 100644 --- a/src/components/script/dom/htmltablecaptionelement.rs +++ b/src/components/script/dom/htmltablecaptionelement.rs @@ -33,7 +33,7 @@ impl HTMLTableCaptionElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableCaptionElement> { let element = HTMLTableCaptionElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableCaptionElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableCaptionElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltablecolelement.rs b/src/components/script/dom/htmltablecolelement.rs index b060a1956e2..4d9e12956a2 100644 --- a/src/components/script/dom/htmltablecolelement.rs +++ b/src/components/script/dom/htmltablecolelement.rs @@ -33,7 +33,7 @@ impl HTMLTableColElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableColElement> { let element = HTMLTableColElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableColElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableColElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltabledatacellelement.rs b/src/components/script/dom/htmltabledatacellelement.rs index e01ebd2ef0b..3360c21b400 100644 --- a/src/components/script/dom/htmltabledatacellelement.rs +++ b/src/components/script/dom/htmltabledatacellelement.rs @@ -32,7 +32,7 @@ impl HTMLTableDataCellElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableDataCellElement> { let element = HTMLTableDataCellElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableDataCellElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableDataCellElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltableelement.rs b/src/components/script/dom/htmltableelement.rs index a99a83fa39a..d675ddcad04 100644 --- a/src/components/script/dom/htmltableelement.rs +++ b/src/components/script/dom/htmltableelement.rs @@ -33,7 +33,7 @@ impl HTMLTableElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableElement> { let element = HTMLTableElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltableheadercellelement.rs b/src/components/script/dom/htmltableheadercellelement.rs index f8a50353ae7..f145b0690c2 100644 --- a/src/components/script/dom/htmltableheadercellelement.rs +++ b/src/components/script/dom/htmltableheadercellelement.rs @@ -32,7 +32,7 @@ impl HTMLTableHeaderCellElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableHeaderCellElement> { let element = HTMLTableHeaderCellElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableHeaderCellElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableHeaderCellElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltablerowelement.rs b/src/components/script/dom/htmltablerowelement.rs index 0c5191fbf7e..947e134f6ee 100644 --- a/src/components/script/dom/htmltablerowelement.rs +++ b/src/components/script/dom/htmltablerowelement.rs @@ -33,7 +33,7 @@ impl HTMLTableRowElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableRowElement> { let element = HTMLTableRowElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableRowElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableRowElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltablesectionelement.rs b/src/components/script/dom/htmltablesectionelement.rs index d5d33b29dfc..972c51ce879 100644 --- a/src/components/script/dom/htmltablesectionelement.rs +++ b/src/components/script/dom/htmltablesectionelement.rs @@ -33,7 +33,7 @@ impl HTMLTableSectionElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTableSectionElement> { let element = HTMLTableSectionElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTableSectionElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTableSectionElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltemplateelement.rs b/src/components/script/dom/htmltemplateelement.rs index fc80ec01d31..c06744c0302 100644 --- a/src/components/script/dom/htmltemplateelement.rs +++ b/src/components/script/dom/htmltemplateelement.rs @@ -32,7 +32,7 @@ impl HTMLTemplateElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTemplateElement> { let element = HTMLTemplateElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTemplateElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTemplateElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltextareaelement.rs b/src/components/script/dom/htmltextareaelement.rs index be10b719bba..aac13f366c6 100644 --- a/src/components/script/dom/htmltextareaelement.rs +++ b/src/components/script/dom/htmltextareaelement.rs @@ -33,7 +33,7 @@ impl HTMLTextAreaElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTextAreaElement> { let element = HTMLTextAreaElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTextAreaElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTextAreaElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltimeelement.rs b/src/components/script/dom/htmltimeelement.rs index 104d2696721..5fc7fea8581 100644 --- a/src/components/script/dom/htmltimeelement.rs +++ b/src/components/script/dom/htmltimeelement.rs @@ -33,7 +33,7 @@ impl HTMLTimeElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTimeElement> { let element = HTMLTimeElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTimeElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTimeElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltitleelement.rs b/src/components/script/dom/htmltitleelement.rs index d1013adbe37..d4b3a2b6b4f 100644 --- a/src/components/script/dom/htmltitleelement.rs +++ b/src/components/script/dom/htmltitleelement.rs @@ -33,7 +33,7 @@ impl HTMLTitleElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTitleElement> { let element = HTMLTitleElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTitleElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTitleElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmltrackelement.rs b/src/components/script/dom/htmltrackelement.rs index a874c5b6339..d9ae83e16cc 100644 --- a/src/components/script/dom/htmltrackelement.rs +++ b/src/components/script/dom/htmltrackelement.rs @@ -33,7 +33,7 @@ impl HTMLTrackElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLTrackElement> { let element = HTMLTrackElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLTrackElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLTrackElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlulistelement.rs b/src/components/script/dom/htmlulistelement.rs index 932ff26e9e9..fdd2e512d30 100644 --- a/src/components/script/dom/htmlulistelement.rs +++ b/src/components/script/dom/htmlulistelement.rs @@ -33,7 +33,7 @@ impl HTMLUListElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLUListElement> { let element = HTMLUListElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLUListElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLUListElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlunknownelement.rs b/src/components/script/dom/htmlunknownelement.rs index a84d21ef3ac..cfaca7464c7 100644 --- a/src/components/script/dom/htmlunknownelement.rs +++ b/src/components/script/dom/htmlunknownelement.rs @@ -32,7 +32,7 @@ impl HTMLUnknownElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLUnknownElement> { let element = HTMLUnknownElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLUnknownElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLUnknownElementBinding::Wrap) } } diff --git a/src/components/script/dom/htmlvideoelement.rs b/src/components/script/dom/htmlvideoelement.rs index a172346d77c..0c4c291f31c 100644 --- a/src/components/script/dom/htmlvideoelement.rs +++ b/src/components/script/dom/htmlvideoelement.rs @@ -33,7 +33,7 @@ impl HTMLVideoElement { pub fn new(localName: DOMString, document: &JSRef<Document>) -> Temporary<HTMLVideoElement> { let element = HTMLVideoElement::new_inherited(localName, document); - Node::reflect_node(~element, document, HTMLVideoElementBinding::Wrap) + Node::reflect_node(box element, document, HTMLVideoElementBinding::Wrap) } } diff --git a/src/components/script/dom/location.rs b/src/components/script/dom/location.rs index c1d8d439bb8..2e346effb12 100644 --- a/src/components/script/dom/location.rs +++ b/src/components/script/dom/location.rs @@ -30,7 +30,7 @@ impl Location { } pub fn new(window: &JSRef<Window>, page: Rc<Page>) -> Temporary<Location> { - reflect_dom_object(~Location::new_inherited(page), + reflect_dom_object(box Location::new_inherited(page), window, LocationBinding::Wrap) } diff --git a/src/components/script/dom/mouseevent.rs b/src/components/script/dom/mouseevent.rs index 32c7704b291..994a18d7be6 100644 --- a/src/components/script/dom/mouseevent.rs +++ b/src/components/script/dom/mouseevent.rs @@ -52,7 +52,7 @@ impl MouseEvent { } pub fn new_uninitialized(window: &JSRef<Window>) -> Temporary<MouseEvent> { - reflect_dom_object(~MouseEvent::new_inherited(), + reflect_dom_object(box MouseEvent::new_inherited(), window, MouseEventBinding::Wrap) } diff --git a/src/components/script/dom/navigator.rs b/src/components/script/dom/navigator.rs index c0157adc704..a50967a25c1 100644 --- a/src/components/script/dom/navigator.rs +++ b/src/components/script/dom/navigator.rs @@ -22,7 +22,7 @@ impl Navigator { } pub fn new(window: &JSRef<Window>) -> Temporary<Navigator> { - reflect_dom_object(~Navigator::new_inherited(), + reflect_dom_object(box Navigator::new_inherited(), window, NavigatorBinding::Wrap) } diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index e8be5f449aa..a05dc1e0171 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -169,7 +169,7 @@ impl LayoutDataRef { } } - pub unsafe fn from_data<T>(data: ~T) -> LayoutDataRef { + pub unsafe fn from_data<T>(data: Box<T>) -> LayoutDataRef { LayoutDataRef { data_cell: RefCell::new(Some(cast::transmute(data))), } @@ -446,7 +446,7 @@ impl<'a> NodeHelpers for JSRef<'a, Node> { /// Dumps the node tree, for debugging, with indentation. fn dump_indent(&self, indent: uint) { - let mut s = "".to_owned(); + let mut s = StrBuf::new(); for _ in range(0, indent) { s.push_str(" "); } @@ -887,9 +887,9 @@ fn as_uintptr<T>(t: &T) -> uintptr_t { t as *T as uintptr_t } impl Node { pub fn reflect_node<N: Reflectable+NodeBase> - (node: ~N, + (node: Box<N>, document: &JSRef<Document>, - wrap_fn: extern "Rust" fn(*JSContext, &JSRef<Window>, ~N) -> JS<N>) + wrap_fn: extern "Rust" fn(*JSContext, &JSRef<Window>, Box<N>) -> JS<N>) -> Temporary<N> { assert!(node.reflector().get_jsobject().is_null()); let window = document.deref().window.root(); @@ -1513,14 +1513,14 @@ impl<'a> NodeMethods for JSRef<'a, Node> { match self.type_id { DocumentFragmentNodeTypeId | ElementNodeTypeId(..) => { - let mut content = "".to_owned(); + let mut content = StrBuf::new(); for node in self.traverse_preorder() { if node.is_text() { let text: &JSRef<Text> = TextCast::to_ref(&node).unwrap(); content.push_str(text.deref().characterdata.data.as_slice()); } } - Some(content) + Some(content.into_owned()) } CommentNodeTypeId | TextNodeTypeId | @@ -1560,7 +1560,7 @@ impl<'a> NodeMethods for JSRef<'a, Node> { { let characterdata: &mut JSRef<CharacterData> = CharacterDataCast::to_mut_ref(self).unwrap(); - characterdata.deref_mut().data = value.clone(); + characterdata.deref_mut().data = value; } // Notify the document that the content of this node is different diff --git a/src/components/script/dom/nodelist.rs b/src/components/script/dom/nodelist.rs index dc050b995ea..d5b98917a3d 100644 --- a/src/components/script/dom/nodelist.rs +++ b/src/components/script/dom/nodelist.rs @@ -33,7 +33,7 @@ impl NodeList { pub fn new(window: &JSRef<Window>, list_type: NodeListType) -> Temporary<NodeList> { - reflect_dom_object(~NodeList::new_inherited(window, list_type), + reflect_dom_object(box NodeList::new_inherited(window, list_type), window, NodeListBinding::Wrap) } diff --git a/src/components/script/dom/performance.rs b/src/components/script/dom/performance.rs index 3665c7944de..13910eb701d 100644 --- a/src/components/script/dom/performance.rs +++ b/src/components/script/dom/performance.rs @@ -28,7 +28,7 @@ impl Performance { pub fn new(window: &JSRef<Window>) -> Temporary<Performance> { let performance = Performance::new_inherited(window); - reflect_dom_object(~performance, window, PerformanceBinding::Wrap) + reflect_dom_object(box performance, window, PerformanceBinding::Wrap) } } diff --git a/src/components/script/dom/performancetiming.rs b/src/components/script/dom/performancetiming.rs index 7065c5f33b6..c1deda98504 100644 --- a/src/components/script/dom/performancetiming.rs +++ b/src/components/script/dom/performancetiming.rs @@ -27,7 +27,7 @@ impl PerformanceTiming { pub fn new(window: &JSRef<Window>) -> Temporary<PerformanceTiming> { let timing = PerformanceTiming::new_inherited(window.navigationStart, window.navigationStartPrecise); - reflect_dom_object(~timing, window, PerformanceTimingBinding::Wrap) + reflect_dom_object(box timing, window, PerformanceTimingBinding::Wrap) } } diff --git a/src/components/script/dom/processinginstruction.rs b/src/components/script/dom/processinginstruction.rs index 7138735db37..92e29b73617 100644 --- a/src/components/script/dom/processinginstruction.rs +++ b/src/components/script/dom/processinginstruction.rs @@ -34,7 +34,7 @@ impl ProcessingInstruction { pub fn new(target: DOMString, data: DOMString, document: &JSRef<Document>) -> Temporary<ProcessingInstruction> { let node = ProcessingInstruction::new_inherited(target, data, document); - Node::reflect_node(~node, document, ProcessingInstructionBinding::Wrap) + Node::reflect_node(box node, document, ProcessingInstructionBinding::Wrap) } } diff --git a/src/components/script/dom/progressevent.rs b/src/components/script/dom/progressevent.rs index 7f66debae3c..4faf1a75a6e 100644 --- a/src/components/script/dom/progressevent.rs +++ b/src/components/script/dom/progressevent.rs @@ -37,7 +37,7 @@ impl ProgressEvent { pub fn new(window: &JSRef<Window>, type_: DOMString, can_bubble: bool, cancelable: bool, length_computable: bool, loaded: u64, total: u64) -> Temporary<ProgressEvent> { - let mut ev = reflect_dom_object(~ProgressEvent::new_inherited(length_computable, loaded, total), + let mut ev = reflect_dom_object(box ProgressEvent::new_inherited(length_computable, loaded, total), window, ProgressEventBinding::Wrap).root(); { diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index ce87bceccb8..6bc22be81c1 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -3,10 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::js::{JS, JSRef, Temporary}; -use dom::bindings::codegen::BindingDeclarations::TestBindingBinding; +use dom::bindings::codegen::BindingDeclarations::TestBindingBinding::TestEnum; +use dom::bindings::codegen::BindingDeclarations::TestBindingBinding::TestEnumValues::_empty; use dom::bindings::codegen::UnionTypes::{HTMLElementOrLong, StringOrFormData}; -use self::TestBindingBinding::TestEnum; -use self::TestBindingBinding::TestEnumValues::_empty; use dom::bindings::str::ByteString; use dom::bindings::utils::{Reflector, Reflectable}; use dom::blob::Blob; diff --git a/src/components/script/dom/text.rs b/src/components/script/dom/text.rs index e8653fe22b0..e0f5edd2287 100644 --- a/src/components/script/dom/text.rs +++ b/src/components/script/dom/text.rs @@ -34,7 +34,7 @@ impl Text { pub fn new(text: DOMString, document: &JSRef<Document>) -> Temporary<Text> { let node = Text::new_inherited(text, document); - Node::reflect_node(~node, document, TextBinding::Wrap) + Node::reflect_node(box node, document, TextBinding::Wrap) } pub fn Constructor(owner: &JSRef<Window>, text: DOMString) -> Fallible<Temporary<Text>> { diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs index d37ef605512..c0e852d2971 100644 --- a/src/components/script/dom/uievent.rs +++ b/src/components/script/dom/uievent.rs @@ -37,7 +37,7 @@ impl UIEvent { } pub fn new_uninitialized(window: &JSRef<Window>) -> Temporary<UIEvent> { - reflect_dom_object(~UIEvent::new_inherited(UIEventTypeId), + reflect_dom_object(box UIEvent::new_inherited(UIEventTypeId), window, UIEventBinding::Wrap) } diff --git a/src/components/script/dom/validitystate.rs b/src/components/script/dom/validitystate.rs index 15c654fc814..ffb7ca95864 100644 --- a/src/components/script/dom/validitystate.rs +++ b/src/components/script/dom/validitystate.rs @@ -24,7 +24,7 @@ impl ValidityState { } pub fn new(window: &JSRef<Window>) -> Temporary<ValidityState> { - reflect_dom_object(~ValidityState::new_inherited(window), + reflect_dom_object(box ValidityState::new_inherited(window), window, ValidityStateBinding::Wrap) } diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index 0e553ac54fa..e620714a9c4 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -70,9 +70,9 @@ pub struct Window { pub location: Option<JS<Location>>, pub navigator: Option<JS<Navigator>>, pub image_cache_task: ImageCacheTask, - pub active_timers: HashMap<TimerId, TimerHandle>, + pub active_timers: Box<HashMap<TimerId, TimerHandle>>, pub next_timer_handle: i32, - pub compositor: Untraceable<~ScriptListener>, + pub compositor: Untraceable<Box<ScriptListener>>, pub browser_context: Option<BrowserContext>, pub page: Rc<Page>, pub performance: Option<JS<Performance>>, @@ -382,10 +382,10 @@ impl Window { pub fn new(cx: *JSContext, page: Rc<Page>, script_chan: ScriptChan, - compositor: ~ScriptListener, + compositor: Box<ScriptListener>, image_cache_task: ImageCacheTask) -> JS<Window> { - let win = ~Window { + let win = box Window { eventtarget: EventTarget::new_inherited(WindowTypeId), script_chan: script_chan, console: None, @@ -394,7 +394,7 @@ impl Window { location: None, navigator: None, image_cache_task: image_cache_task, - active_timers: HashMap::new(), + active_timers: box HashMap::new(), next_timer_handle: 0, browser_context: None, performance: None, diff --git a/src/components/script/dom/xmlhttprequest.rs b/src/components/script/dom/xmlhttprequest.rs index 31e6d037563..3161d4d6ed6 100644 --- a/src/components/script/dom/xmlhttprequest.rs +++ b/src/components/script/dom/xmlhttprequest.rs @@ -4,8 +4,8 @@ use dom::bindings::codegen::BindingDeclarations::XMLHttpRequestBinding; use dom::bindings::str::ByteString; -use self::XMLHttpRequestBinding::XMLHttpRequestResponseType; -use self::XMLHttpRequestBinding::XMLHttpRequestResponseTypeValues::{_empty, Text}; +use dom::bindings::codegen::BindingDeclarations::XMLHttpRequestBinding::XMLHttpRequestResponseType; +use dom::bindings::codegen::BindingDeclarations::XMLHttpRequestBinding::XMLHttpRequestResponseTypeValues::{_empty, Text}; use dom::bindings::codegen::InheritTypes::{EventTargetCast, XMLHttpRequestDerived}; use dom::bindings::error::{ErrorResult, InvalidState, Network, Syntax, Security}; use dom::document::Document; @@ -33,7 +33,7 @@ use libc::c_void; use std::comm::channel; use std::io::MemWriter; -use std::task; +use std::task::TaskBuilder; use ResponseHeaderCollection = http::headers::response::HeaderCollection; use RequestHeaderCollection = http::headers::request::HeaderCollection; @@ -148,7 +148,7 @@ impl XMLHttpRequest { xhr } pub fn new(window: &JSRef<Window>) -> Temporary<XMLHttpRequest> { - reflect_dom_object(~XMLHttpRequest::new_inherited(window), + reflect_dom_object(box XMLHttpRequest::new_inherited(window), window, XMLHttpRequestBinding::Wrap) } @@ -328,7 +328,7 @@ impl<'a> XMLHttpRequestMethods<'a> for JSRef<'a, XMLHttpRequest> { if self.sync { return XMLHttpRequest::fetch(&mut Sync(self), resource_task, url); } else { - let builder = task::task().named("XHRTask"); + let builder = TaskBuilder::new().named("XHRTask"); unsafe { let addr = self.to_trusted(); let script_chan = global.script_chan.clone(); @@ -493,4 +493,4 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { } } } -}
\ No newline at end of file +} diff --git a/src/components/script/dom/xmlhttprequestupload.rs b/src/components/script/dom/xmlhttprequestupload.rs index bd8dd38c806..8312e56bb78 100644 --- a/src/components/script/dom/xmlhttprequestupload.rs +++ b/src/components/script/dom/xmlhttprequestupload.rs @@ -23,7 +23,7 @@ impl XMLHttpRequestUpload { } } pub fn new(window: &JSRef<Window>) -> Temporary<XMLHttpRequestUpload> { - reflect_dom_object(~XMLHttpRequestUpload::new_inherited(), + reflect_dom_object(box XMLHttpRequestUpload::new_inherited(), window, XMLHttpRequestUploadBinding::Wrap) } diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 1bcdbddb8a0..5abde8be0d3 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -108,10 +108,10 @@ fn css_link_listener(to_parent: Sender<HtmlDiscoveryMessage>, loop { match from_parent.recv_opt() { - Some(CSSTaskNewFile(provenance)) => { + Ok(CSSTaskNewFile(provenance)) => { result_vec.push(spawn_css_parser(provenance)); } - Some(CSSTaskExit) | None => { + Ok(CSSTaskExit) | Err(()) => { break; } } @@ -120,7 +120,7 @@ fn css_link_listener(to_parent: Sender<HtmlDiscoveryMessage>, // Send the sheets back in order // FIXME: Shouldn't wait until after we've recieved CSSTaskExit to start sending these for port in result_vec.iter() { - to_parent.try_send(HtmlDiscoveredStyle(port.recv())); + to_parent.send_opt(HtmlDiscoveredStyle(port.recv())); } } @@ -131,7 +131,7 @@ fn js_script_listener(to_parent: Sender<HtmlDiscoveryMessage>, loop { match from_parent.recv_opt() { - Some(JSTaskNewFile(url)) => { + Ok(JSTaskNewFile(url)) => { match load_whole_resource(&resource_task, url.clone()) { Err(_) => { error!("error loading script {:s}", url.to_str()); @@ -144,16 +144,16 @@ fn js_script_listener(to_parent: Sender<HtmlDiscoveryMessage>, } } } - Some(JSTaskNewInlineScript(data, url)) => { + Ok(JSTaskNewInlineScript(data, url)) => { result_vec.push(JSFile { data: data, url: url }); } - Some(JSTaskExit) | None => { + Ok(JSTaskExit) | Err(()) => { break; } } } - to_parent.try_send(HtmlDiscoveredScript(result_vec)); + to_parent.send_opt(HtmlDiscoveredScript(result_vec)); } // Silly macros to handle constructing DOM nodes. This produces bad code and should be optimized @@ -339,7 +339,7 @@ pub fn parse_html(page: &Page, let doc_cell = RefCell::new(document); - let tree_handler = hubbub::TreeHandler { + let mut tree_handler = hubbub::TreeHandler { create_comment: |data: ~str| { debug!("create comment"); // NOTE: tmp vars are workaround for lifetime issues. Both required. @@ -349,12 +349,14 @@ pub fn parse_html(page: &Page, let comment: &JSRef<Node> = NodeCast::from_ref(&*comment); unsafe { comment.to_hubbub_node() } }, - create_doctype: |doctype: ~hubbub::Doctype| { + create_doctype: |doctype: Box<hubbub::Doctype>| { debug!("create doctype"); - let ~hubbub::Doctype {name: name, - public_id: public_id, - system_id: system_id, - force_quirks: _ } = doctype; + let box hubbub::Doctype { + name: name, + public_id: public_id, + system_id: system_id, + force_quirks: _ + } = doctype; // NOTE: tmp vars are workaround for lifetime issues. Both required. let tmp_borrow = doc_cell.borrow(); let tmp = &*tmp_borrow; @@ -363,7 +365,7 @@ pub fn parse_html(page: &Page, doctype_node.deref().to_hubbub_node() } }, - create_element: |tag: ~hubbub::Tag| { + create_element: |tag: Box<hubbub::Tag>| { debug!("create element {:?}", tag.name.clone()); // NOTE: tmp vars are workaround for lifetime issues. Both required. let tmp_borrow = doc_cell.borrow(); @@ -515,7 +517,7 @@ pub fn parse_html(page: &Page, // style parsing is handled in element::notify_child_list_changed. }, }; - parser.set_tree_handler(&tree_handler); + parser.set_tree_handler(&mut tree_handler); debug!("set tree handler"); debug!("loaded page"); diff --git a/src/components/script/layout_interface.rs b/src/components/script/layout_interface.rs index b971d2ee2dd..c7f8d4f7a80 100644 --- a/src/components/script/layout_interface.rs +++ b/src/components/script/layout_interface.rs @@ -30,7 +30,7 @@ pub enum Msg { AddStylesheetMsg(Stylesheet), /// Requests a reflow. - ReflowMsg(~Reflow), + ReflowMsg(Box<Reflow>), /// Performs a synchronous layout request. /// diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 9c50b2f5b5d..05c58db96e6 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -56,12 +56,11 @@ use servo_util::task::send_on_failure; use servo_util::namespace::Null; use std::cast; use std::cell::{Cell, RefCell, Ref, RefMut}; -use std::comm::{channel, Sender, Receiver, Empty, Disconnected, Data}; -use std::local_data; +use std::comm::{channel, Sender, Receiver, Empty, Disconnected}; use std::mem::replace; use std::ptr; use std::rc::Rc; -use std::task; +use std::task::TaskBuilder; use url::Url; use serialize::{Encoder, Encodable}; @@ -242,7 +241,7 @@ impl Page { .find(|&(_idx, ref page_tree)| { // FIXME: page_tree has a lifetime such that it's unusable for anything. let page_tree = unsafe { - cast::transmute_region(page_tree) + cast::transmute_lifetime(page_tree) }; page_tree.id() == id }) @@ -351,12 +350,12 @@ impl Page { match join_port { Some(ref join_port) => { match join_port.try_recv() { - Empty => { + Err(Empty) => { info!("script: waiting on layout"); join_port.recv(); } - Data(_) => {} - Disconnected => { + Ok(_) => {} + Err(Disconnected) => { fail!("Layout task failed while script was waiting for a result."); } } @@ -422,7 +421,7 @@ impl Page { let window_size = self.window_size.deref().get(); // Send new document and relevant styles to layout. - let reflow = ~Reflow { + let reflow = box Reflow { document_root: root.to_trusted_node_address(), url: self.get_url(), goal: goal, @@ -525,14 +524,14 @@ struct StackRootTLS; impl StackRootTLS { fn new(roots: &RootCollection) -> StackRootTLS { - local_data::set(StackRoots, roots as *RootCollection); + StackRoots.replace(Some(roots as *RootCollection)); StackRootTLS } } impl Drop for StackRootTLS { fn drop(&mut self) { - let _ = local_data::pop(StackRoots); + let _ = StackRoots.replace(None); } } @@ -557,7 +556,7 @@ pub struct ScriptTask { /// For communicating load url messages to the constellation pub constellation_chan: ConstellationChan, /// A handle to the compositor for communicating ready state messages. - pub compositor: ~ScriptListener, + pub compositor: Box<ScriptListener>, /// The JavaScript runtime. pub js_runtime: js::rust::rt, @@ -606,7 +605,7 @@ impl<'a> Drop for ScriptMemoryFailsafe<'a> { impl ScriptTask { /// Creates a new script task. pub fn new(id: PipelineId, - compositor: ~ScriptListener, + compositor: Box<ScriptListener>, layout_chan: LayoutChan, port: Receiver<ScriptMsg>, chan: ScriptChan, @@ -686,7 +685,7 @@ impl ScriptTask { pub fn create<C:ScriptListener + Send>( id: PipelineId, - compositor: ~C, + compositor: Box<C>, layout_chan: LayoutChan, port: Receiver<ScriptMsg>, chan: ScriptChan, @@ -695,12 +694,12 @@ impl ScriptTask { resource_task: ResourceTask, image_cache_task: ImageCacheTask, window_size: Size2D<uint>) { - let mut builder = task::task().named("ScriptTask"); + let mut builder = TaskBuilder::new().named("ScriptTask"); let ConstellationChan(const_chan) = constellation_chan.clone(); send_on_failure(&mut builder, FailureMsg(failure_msg), const_chan); builder.spawn(proc() { let script_task = ScriptTask::new(id, - compositor as ~ScriptListener, + compositor as Box<ScriptListener>, layout_chan, port, chan, @@ -764,8 +763,8 @@ impl ScriptTask { } match self.port.try_recv() { - Empty | Disconnected => break, - Data(ev) => event = ev, + Err(_) => break, + Ok(ev) => event = ev, } } @@ -991,15 +990,15 @@ impl ScriptTask { let mut js_scripts = None; loop { match discovery_port.recv_opt() { - Some(HtmlDiscoveredScript(scripts)) => { + Ok(HtmlDiscoveredScript(scripts)) => { assert!(js_scripts.is_none()); js_scripts = Some(scripts); } - Some(HtmlDiscoveredStyle(sheet)) => { + Ok(HtmlDiscoveredStyle(sheet)) => { let LayoutChan(ref chan) = *page.layout_chan; chan.send(AddStylesheetMsg(sheet)); } - None => break + Err(()) => break } } diff --git a/src/components/style/common_types.rs b/src/components/style/common_types.rs index 4050306a939..6500ba4f631 100644 --- a/src/components/style/common_types.rs +++ b/src/components/style/common_types.rs @@ -117,7 +117,7 @@ pub mod specified { &ast::Percentage(ref value) if negative_ok || value.value >= 0. => Some(LPA_Percentage(value.value / 100.)), &Number(ref value) if value.value == 0. => Some(LPA_Length(Au_(Au(0)))), - &Ident(ref value) if value.eq_ignore_ascii_case("auto") => Some(LPA_Auto), + &Ident(ref value) if value.to_owned().eq_ignore_ascii_case("auto") => Some(LPA_Auto), _ => None } } @@ -146,7 +146,7 @@ pub mod specified { &ast::Percentage(ref value) if negative_ok || value.value >= 0. => Some(LPN_Percentage(value.value / 100.)), &Number(ref value) if value.value == 0. => Some(LPN_Length(Au_(Au(0)))), - &Ident(ref value) if value.eq_ignore_ascii_case("none") => Some(LPN_None), + &Ident(ref value) if value.to_owned().eq_ignore_ascii_case("none") => Some(LPN_None), _ => None } } diff --git a/src/components/style/errors.rs b/src/components/style/errors.rs index db3372bb9e4..38f11904d4b 100644 --- a/src/components/style/errors.rs +++ b/src/components/style/errors.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use std::local_data; use cssparser::ast::{SyntaxError, SourceLocation}; @@ -29,15 +28,15 @@ local_data_key!(silence_errors: bool) pub fn log_css_error(location: SourceLocation, message: &str) { // TODO eventually this will got into a "web console" or something. - if local_data::get(silence_errors, |silenced| silenced.is_none()) { + if silence_errors.get().is_none() { error!("{:u}:{:u} {:s}", location.line, location.column, message) } } pub fn with_errors_silenced<T>(f: || -> T) -> T { - local_data::set(silence_errors, true); + silence_errors.replace(Some(true)); let result = f(); - local_data::pop(silence_errors); + silence_errors.replace(None); result } diff --git a/src/components/style/media_queries.rs b/src/components/style/media_queries.rs index 5ead74f3914..356cda8cbb1 100644 --- a/src/components/style/media_queries.rs +++ b/src/components/style/media_queries.rs @@ -50,7 +50,7 @@ pub struct Device { pub fn parse_media_rule(rule: AtRule, parent_rules: &mut Vec<CSSRule>, namespaces: &NamespaceMap, base_url: &Url) { - let media_queries = parse_media_query_list(rule.prelude); + let media_queries = parse_media_query_list(rule.prelude.as_slice()); let block = match rule.block { Some(block) => block, None => { @@ -63,7 +63,7 @@ pub fn parse_media_rule(rule: AtRule, parent_rules: &mut Vec<CSSRule>, match rule { QualifiedRule(rule) => parse_style_rule(rule, &mut rules, namespaces, base_url), AtRule(rule) => parse_nested_at_rule( - rule.name.to_ascii_lower(), rule, &mut rules, namespaces, base_url), + rule.name.as_slice().to_ascii_lower(), rule, &mut rules, namespaces, base_url), } } parent_rules.push(CSSMediaRule(MediaRule { @@ -84,7 +84,7 @@ pub fn parse_media_query_list(input: &[ComponentValue]) -> MediaQueryList { let mq = match next { Some(&Ident(ref value)) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let value_lower = value.to_ascii_lower(); + let value_lower = value.as_slice().to_ascii_lower(); match value_lower.as_slice() { "screen" => Some(MediaQuery{ media_type: MediaType(Screen) }), "print" => Some(MediaQuery{ media_type: MediaType(Print) }), diff --git a/src/components/style/namespaces.rs b/src/components/style/namespaces.rs index 3c3ff33ef67..db025de9113 100644 --- a/src/components/style/namespaces.rs +++ b/src/components/style/namespaces.rs @@ -36,11 +36,11 @@ pub fn parse_namespace_rule(rule: AtRule, namespaces: &mut NamespaceMap) { match component_value { Ident(value) => { if prefix.is_some() { syntax_error!() } - prefix = Some(value); + prefix = Some(value.into_owned()); }, URL(value) | String(value) => { if ns.is_some() { syntax_error!() } - ns = Some(Namespace::from_str(value)); + ns = Some(Namespace::from_str(value.as_slice())); break }, _ => syntax_error!(), diff --git a/src/components/style/parsing_utils.rs b/src/components/style/parsing_utils.rs index 18288240a04..35c88893b45 100644 --- a/src/components/style/parsing_utils.rs +++ b/src/components/style/parsing_utils.rs @@ -15,7 +15,7 @@ pub fn one_component_value<'a>(input: &'a [ComponentValue]) -> Option<&'a Compon pub fn get_ident_lower(component_value: &ComponentValue) -> Option<~str> { match component_value { - &Ident(ref value) => Some(value.to_ascii_lower()), + &Ident(ref value) => Some(value.as_slice().to_ascii_lower()), _ => None, } } diff --git a/src/components/style/properties.rs.mako b/src/components/style/properties.rs.mako index 2f928bfa812..8e2a176af51 100644 --- a/src/components/style/properties.rs.mako +++ b/src/components/style/properties.rs.mako @@ -238,7 +238,7 @@ pub mod longhands { match component_value { &Ident(ref value) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let value_lower = value.to_ascii_lower(); + let value_lower = value.to_owned().to_ascii_lower(); match value_lower.as_slice() { "thin" => Some(specified::Length::from_px(1.)), "medium" => Some(specified::Length::from_px(3.)), @@ -382,7 +382,7 @@ pub mod longhands { &Dimension(ref value, ref unit) if value.value >= 0. => specified::Length::parse_dimension(value.value, unit.as_slice()) .map(SpecifiedLength), - &Ident(ref value) if value.eq_ignore_ascii_case("normal") + &Ident(ref value) if value.to_owned().eq_ignore_ascii_case("normal") => Some(SpecifiedNormal), _ => None, } @@ -463,7 +463,7 @@ pub mod longhands { match input { &Ident(ref value) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let value_lower = value.to_ascii_lower(); + let value_lower = value.to_owned().to_ascii_lower(); match value_lower.as_slice() { % for keyword in vertical_align_keywords: "${keyword}" => Some(Specified_${to_rust_ident(keyword)}), @@ -540,7 +540,7 @@ pub mod longhands { match one_component_value(input) { Some(&Ident(ref keyword)) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let keyword_lower = keyword.to_ascii_lower(); + let keyword_lower = keyword.to_owned().to_ascii_lower(); match keyword_lower.as_slice() { "normal" => return Some(normal), @@ -586,7 +586,7 @@ pub mod longhands { let image_url = parse_url(url.as_slice(), Some(base_url.clone())); Some(Some(image_url)) }, - &ast::Ident(ref value) if value.eq_ignore_ascii_case("none") => Some(None), + &ast::Ident(ref value) if value.to_owned().eq_ignore_ascii_case("none") => Some(None), _ => None, } } @@ -709,7 +709,7 @@ pub mod longhands { pub type T = Vec<FontFamily>; } pub type SpecifiedValue = computed_value::T; - #[inline] pub fn get_initial_value() -> computed_value::T { vec!(FamilyName(~"serif")) } + #[inline] pub fn get_initial_value() -> computed_value::T { vec!(FamilyName("serif".to_owned())) } /// <familiy-name># /// <familiy-name> = <string> | [ <ident>+ ] /// TODO: <generic-familiy> @@ -736,7 +736,7 @@ pub mod longhands { Some(&String(ref value)) => add!(FamilyName(value.to_owned()), break 'outer), Some(&Ident(ref value)) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let value_lower = value.to_ascii_lower(); + let value_lower = value.to_owned().to_ascii_lower(); match value_lower.as_slice() { // "serif" => add!(Serif, break 'outer), // "sans-serif" => add!(SansSerif, break 'outer), @@ -788,7 +788,7 @@ pub mod longhands { match input { &Ident(ref value) => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let value_lower = value.to_ascii_lower(); + let value_lower = value.to_owned().to_ascii_lower(); match value_lower.as_slice() { "bold" => Some(SpecifiedWeight700), "normal" => Some(SpecifiedWeight400), @@ -1266,7 +1266,7 @@ pub mod shorthands { // font-style, font-weight and font-variant. // Leaves the values to None, 'normal' is the initial value for each of them. match get_ident_lower(component_value) { - Some(ref ident) if ident.eq_ignore_ascii_case("normal") => { + Some(ref ident) if ident.to_owned().eq_ignore_ascii_case("normal") => { nb_normals += 1; continue; } @@ -1415,7 +1415,7 @@ pub fn parse_property_declaration_list<I: Iterator<Node>>(input: I, base_url: &U } else { (&mut normal_declarations, &mut normal_seen) }; - match PropertyDeclaration::parse(n, v, list, base_url, seen) { + match PropertyDeclaration::parse(n.to_owned(), v.as_slice(), list, base_url, seen) { UnknownProperty => log_css_error(l, format!( "Unsupported property: {}:{}", n, v.iter().to_css())), InvalidValue => log_css_error(l, format!( @@ -1479,7 +1479,7 @@ impl PropertyDeclaration { base_url: &Url, seen: &mut PropertyBitField) -> PropertyDeclarationParseResult { // FIXME: local variable to work around Rust #10683 - let name_lower = name.to_ascii_lower(); + let name_lower = name.to_owned().to_ascii_lower(); match name_lower.as_slice() { % for property in LONGHANDS: % if property.derived_from is None: diff --git a/src/components/style/selector_matching.rs b/src/components/style/selector_matching.rs index eaeedc5995a..a553044128f 100644 --- a/src/components/style/selector_matching.rs +++ b/src/components/style/selector_matching.rs @@ -1004,9 +1004,9 @@ mod tests { let rules_list = get_mock_rules([".intro.foo", "#top"]); let mut selector_map = SelectorMap::new(); selector_map.insert(rules_list.get(1).get(0).clone()); - assert_eq!(1, selector_map.id_hash.find_equiv(& &"top").unwrap().get(0).property.source_order); + assert_eq!(1, selector_map.id_hash.find_equiv(&("top")).unwrap().get(0).property.source_order); selector_map.insert(rules_list.get(0).get(0).clone()); - assert_eq!(0, selector_map.class_hash.find_equiv(& &"intro").unwrap().get(0).property.source_order); - assert!(selector_map.class_hash.find_equiv(& &"foo").is_none()); + assert_eq!(0, selector_map.class_hash.find_equiv(&("intro")).unwrap().get(0).property.source_order); + assert!(selector_map.class_hash.find_equiv(&("foo")).is_none()); } } diff --git a/src/components/style/selectors.rs b/src/components/style/selectors.rs index b7d9d986ce5..b86585bcda1 100644 --- a/src/components/style/selectors.rs +++ b/src/components/style/selectors.rs @@ -4,7 +4,7 @@ use std::{cmp, iter}; use std::ascii::StrAsciiExt; -use std::slice; +use std::vec; use sync::Arc; use cssparser::ast::*; @@ -43,7 +43,7 @@ pub enum PseudoElement { #[deriving(Eq, Clone)] pub struct CompoundSelector { pub simple_selectors: Vec<SimpleSelector>, - pub next: Option<(~CompoundSelector, Combinator)>, // c.next is left of c + pub next: Option<(Box<CompoundSelector>, Combinator)>, // c.next is left of c } #[deriving(Eq, Clone)] @@ -104,14 +104,14 @@ pub enum NamespaceConstraint { } -type Iter = iter::Peekable<ComponentValue, slice::MoveItems<ComponentValue>>; +type Iter = iter::Peekable<ComponentValue, vec::MoveItems<ComponentValue>>; /// Parse a comma-separated list of Selectors. /// aka Selector Group in http://www.w3.org/TR/css3-selectors/#grouping /// /// Return the Selectors or None if there is an invalid selector. -pub fn parse_selector_list(input: ~[ComponentValue], namespaces: &NamespaceMap) +pub fn parse_selector_list(input: Vec<ComponentValue>, namespaces: &NamespaceMap) -> Option<Vec<Selector>> { let iter = &mut input.move_iter().peekable(); let first = match parse_selector(iter, namespaces) { @@ -169,7 +169,7 @@ fn parse_selector(iter: &mut Iter, namespaces: &NamespaceMap) Some((simple_selectors, pseudo)) => { compound = CompoundSelector { simple_selectors: simple_selectors, - next: Some((~compound, combinator)) + next: Some((box compound, combinator)) }; pseudo_element = pseudo; } @@ -306,13 +306,13 @@ fn parse_one_simple_selector(iter: &mut Iter, namespaces: &NamespaceMap, inside_ -> SimpleSelectorParseResult { match iter.peek() { Some(&IDHash(_)) => match iter.next() { - Some(IDHash(id)) => SimpleSelectorResult(IDSelector(id)), + Some(IDHash(id)) => SimpleSelectorResult(IDSelector(id.into_owned())), _ => fail!("Implementation error, this should not happen."), }, Some(&Delim('.')) => { iter.next(); match iter.next() { - Some(Ident(class)) => SimpleSelectorResult(ClassSelector(class)), + Some(Ident(class)) => SimpleSelectorResult(ClassSelector(class.into_owned())), _ => InvalidSimpleSelector, } } @@ -327,10 +327,10 @@ fn parse_one_simple_selector(iter: &mut Iter, namespaces: &NamespaceMap, inside_ Some(&Colon) => { iter.next(); match iter.next() { - Some(Ident(name)) => match parse_simple_pseudo_class(name) { + Some(Ident(name)) => match parse_simple_pseudo_class(name.as_slice()) { None => { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let name_lower = name.to_ascii_lower(); + let name_lower = name.as_slice().to_ascii_lower(); match name_lower.as_slice() { // Supported CSS 2.1 pseudo-elements only. // ** Do not add to this list! ** @@ -434,7 +434,7 @@ fn parse_qualified_name(iter: &mut Iter, in_attr_selector: bool, namespaces: &Na } -fn parse_attribute_selector(content: ~[ComponentValue], namespaces: &NamespaceMap) +fn parse_attribute_selector(content: Vec<ComponentValue>, namespaces: &NamespaceMap) -> Option<SimpleSelector> { let iter = &mut content.move_iter().peekable(); let attr = match parse_qualified_name(iter, /* in_attr_selector = */ true, namespaces) { @@ -457,16 +457,16 @@ fn parse_attribute_selector(content: ~[ComponentValue], namespaces: &NamespaceMa }};) let result = match iter.next() { None => AttrExists(attr), // [foo] - Some(Delim('=')) => AttrEqual(attr, get_value!()), // [foo=bar] - Some(IncludeMatch) => AttrIncludes(attr, get_value!()), // [foo~=bar] + Some(Delim('=')) => AttrEqual(attr, (get_value!()).into_owned()), // [foo=bar] + Some(IncludeMatch) => AttrIncludes(attr, (get_value!()).into_owned()), // [foo~=bar] Some(DashMatch) => { let value = get_value!(); - let dashing_value = value + "-"; - AttrDashMatch(attr, value, dashing_value) // [foo|=bar] + let dashing_value = value.as_slice() + "-"; + AttrDashMatch(attr, value.into_owned(), dashing_value) // [foo|=bar] }, - Some(PrefixMatch) => AttrPrefixMatch(attr, get_value!()), // [foo^=bar] - Some(SubstringMatch) => AttrSubstringMatch(attr, get_value!()), // [foo*=bar] - Some(SuffixMatch) => AttrSuffixMatch(attr, get_value!()), // [foo$=bar] + Some(PrefixMatch) => AttrPrefixMatch(attr, (get_value!()).into_owned()), // [foo^=bar] + Some(SubstringMatch) => AttrSubstringMatch(attr, (get_value!()).into_owned()), // [foo*=bar] + Some(SuffixMatch) => AttrSuffixMatch(attr, (get_value!()).into_owned()), // [foo$=bar] _ => return None }; skip_whitespace(iter); @@ -495,26 +495,26 @@ fn parse_simple_pseudo_class(name: &str) -> Option<SimpleSelector> { } -fn parse_functional_pseudo_class(name: ~str, arguments: ~[ComponentValue], +fn parse_functional_pseudo_class(name: StrBuf, arguments: Vec<ComponentValue>, namespaces: &NamespaceMap, inside_negation: bool) -> Option<SimpleSelector> { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let name_lower = name.to_ascii_lower(); + let name_lower = name.as_slice().to_ascii_lower(); match name_lower.as_slice() { // "lang" => parse_lang(arguments), - "nth-child" => parse_nth(arguments).map(|(a, b)| NthChild(a, b)), - "nth-last-child" => parse_nth(arguments).map(|(a, b)| NthLastChild(a, b)), - "nth-of-type" => parse_nth(arguments).map(|(a, b)| NthOfType(a, b)), - "nth-last-of-type" => parse_nth(arguments).map(|(a, b)| NthLastOfType(a, b)), + "nth-child" => parse_nth(arguments.as_slice()).map(|(a, b)| NthChild(a, b)), + "nth-last-child" => parse_nth(arguments.as_slice()).map(|(a, b)| NthLastChild(a, b)), + "nth-of-type" => parse_nth(arguments.as_slice()).map(|(a, b)| NthOfType(a, b)), + "nth-last-of-type" => parse_nth(arguments.as_slice()).map(|(a, b)| NthLastOfType(a, b)), "not" => if inside_negation { None } else { parse_negation(arguments, namespaces) }, _ => None } } -fn parse_pseudo_element(name: ~str) -> Option<PseudoElement> { +fn parse_pseudo_element(name: StrBuf) -> Option<PseudoElement> { // FIXME: Workaround for https://github.com/mozilla/rust/issues/10683 - let name_lower = name.to_ascii_lower(); + let name_lower = name.as_slice().to_ascii_lower(); match name_lower.as_slice() { // All supported pseudo-elements "before" => Some(Before), @@ -539,7 +539,7 @@ fn parse_pseudo_element(name: ~str) -> Option<PseudoElement> { // Level 3: Parse ONE simple_selector -fn parse_negation(arguments: ~[ComponentValue], namespaces: &NamespaceMap) +fn parse_negation(arguments: Vec<ComponentValue>, namespaces: &NamespaceMap) -> Option<SimpleSelector> { let iter = &mut arguments.move_iter().peekable(); Some(Negation(match parse_type_selector(iter, namespaces) { @@ -559,7 +559,7 @@ fn parse_negation(arguments: ~[ComponentValue], namespaces: &NamespaceMap) #[inline] fn get_next_ident(iter: &mut Iter) -> ~str { match iter.next() { - Some(Ident(value)) => value, + Some(Ident(value)) => value.into_owned(), _ => fail!("Implementation error, this should not happen."), } } @@ -638,7 +638,7 @@ mod tests { assert!(parse("e.foo #bar") == Some(vec!(Selector{ compound_selectors: Arc::new(CompoundSelector { simple_selectors: vec!(IDSelector("bar".to_owned())), - next: Some((~CompoundSelector { + next: Some((box CompoundSelector { simple_selectors: vec!(LocalNameSelector("e".to_owned()), ClassSelector("foo".to_owned())), next: None, @@ -701,7 +701,7 @@ mod tests { assert!(parse("div :after") == Some(vec!(Selector{ compound_selectors: Arc::new(CompoundSelector { simple_selectors: vec!(), - next: Some((~CompoundSelector { + next: Some((box CompoundSelector { simple_selectors: vec!(LocalNameSelector("div".to_owned())), next: None, }, Descendant)), diff --git a/src/components/style/stylesheets.rs b/src/components/style/stylesheets.rs index 80ebf02c866..6a70e9c6d2b 100644 --- a/src/components/style/stylesheets.rs +++ b/src/components/style/stylesheets.rs @@ -58,7 +58,7 @@ impl Stylesheet { // TODO: bytes.as_slice could be bytes.container_as_bytes() let (string, used_encoding) = decode_stylesheet_bytes( bytes.as_slice(), protocol_encoding_label, environment_encoding); - Stylesheet::from_str(string, base_url, used_encoding) + Stylesheet::from_str(string.as_slice(), base_url, used_encoding) } pub fn from_str(css: &str, base_url: Url, encoding: EncodingRef) -> Stylesheet { @@ -79,7 +79,7 @@ impl Stylesheet { parse_style_rule(rule, &mut rules, &namespaces, &base_url) }, AtRule(rule) => { - let lower_name = rule.name.to_ascii_lower(); + let lower_name = rule.name.as_slice().to_ascii_lower(); match lower_name.as_slice() { "charset" => { if state > STATE_CHARSET { diff --git a/src/components/util/concurrentmap.rs b/src/components/util/concurrentmap.rs index 1a2fbd404cf..47a83b2da8a 100644 --- a/src/components/util/concurrentmap.rs +++ b/src/components/util/concurrentmap.rs @@ -23,7 +23,7 @@ static LOAD_DENOMINATOR: uint = 4; /// One bucket in the hash table. struct Bucket<K,V> { - next: Option<~Bucket<K,V>>, + next: Option<Box<Bucket<K,V>>>, key: K, value: V, } @@ -116,7 +116,7 @@ impl<K:Hash + Eq,V> ConcurrentHashMap<K,V> { } } - (*bucket).next = Some(~Bucket { + (*bucket).next = Some(box Bucket { next: None, key: key, value: value, @@ -153,7 +153,7 @@ impl<K:Hash + Eq,V> ConcurrentHashMap<K,V> { let next_opt = mem::replace(&mut bucket.next, None); match next_opt { None => nuke_bucket = true, - Some(~next) => *bucket = next, + Some(box next) => *bucket = next, } drop(this.size.fetch_sub(1, SeqCst)) } @@ -175,7 +175,7 @@ impl<K:Hash + Eq,V> ConcurrentHashMap<K,V> { } // If we got here, then we found the key. Now do a pointer stitch. - let ~Bucket { + let box Bucket { next: next_next, .. } = (*prev).next.take_unwrap(); @@ -314,7 +314,7 @@ impl<K:Hash + Eq,V> ConcurrentHashMap<K,V> { loop { match bucket { None => break, - Some(~Bucket { + Some(box Bucket { key: key, value: value, next: next @@ -346,7 +346,7 @@ impl<K:Hash + Eq,V> ConcurrentHashMap<K,V> { #[inline] fn bucket_and_lock_indices(&self, key: &K) -> (uint, uint) { let this: &mut ConcurrentHashMap<K,V> = unsafe { - cast::transmute_mut(cast::transmute_region(self)) + cast::transmute_mut(cast::transmute_lifetime(self)) }; let hash = sip::hash_with_keys(self.k0, self.k1, key); diff --git a/src/components/util/cowarc.rs b/src/components/util/cowarc.rs index c9d7b264157..dbd6709cfcf 100644 --- a/src/components/util/cowarc.rs +++ b/src/components/util/cowarc.rs @@ -24,7 +24,7 @@ impl<T> Drop for CowArc<T> { fn drop(&mut self) { unsafe { if self.ptr != ptr::mut_null() && (*self.ptr).ref_count.fetch_sub(1, SeqCst) == 1 { - let _kill_it: ~CowArcAlloc<T> = cast::transmute(self.ptr); + let _kill_it: Box<CowArcAlloc<T>> = cast::transmute(self.ptr); self.ptr = ptr::mut_null() } } @@ -52,7 +52,7 @@ impl<T:Clone> Clone for CowArc<T> { impl<T:Clone> CowArc<T> { #[inline] pub fn new(value: T) -> CowArc<T> { - let alloc = ~CowArcAlloc { + let alloc = box CowArcAlloc { ref_count: AtomicUint::new(1), data: value, }; @@ -84,7 +84,7 @@ impl<T:Clone> CowArc<T> { return cast::transmute(&mut (*self.ptr).data) } - let copy = ~CowArcAlloc { + let copy = box CowArcAlloc { ref_count: AtomicUint::new(1), data: (*self.ptr).data.clone(), }; diff --git a/src/components/util/str.rs b/src/components/util/str.rs index be5eab6ea52..f9e21a97260 100644 --- a/src/components/util/str.rs +++ b/src/components/util/str.rs @@ -20,7 +20,7 @@ pub fn null_str_as_empty(s: &Option<DOMString>) -> DOMString { pub fn null_str_as_empty_ref<'a>(s: &'a Option<DOMString>) -> &'a str { match *s { Some(ref s) => s.as_slice(), - None => &'a "" + None => "" } } diff --git a/src/components/util/task.rs b/src/components/util/task.rs index 694d617569c..f1d3211d4df 100644 --- a/src/components/util/task.rs +++ b/src/components/util/task.rs @@ -8,7 +8,7 @@ use std::comm::Sender; use std::task::TaskBuilder; pub fn spawn_named<S: IntoMaybeOwned<'static>>(name: S, f: proc():Send) { - let builder = task::task().named(name); + let builder = task::TaskBuilder::new().named(name); builder.spawn(f); } diff --git a/src/components/util/time.rs b/src/components/util/time.rs index b04e4fce944..37247b6f041 100644 --- a/src/components/util/time.rs +++ b/src/components/util/time.rs @@ -119,7 +119,7 @@ impl Profiler { spawn_named("Profiler timer", proc() { loop { sleep(period); - if !chan.try_send(PrintMsg) { + if chan.send_opt(PrintMsg).is_err() { break; } } @@ -135,7 +135,7 @@ impl Profiler { spawn_named("Profiler", proc() { loop { match port.recv_opt() { - None | Some(ExitMsg) => break, + Err(_) | Ok(ExitMsg) => break, _ => {} } } @@ -158,12 +158,12 @@ impl Profiler { loop { let msg = self.port.recv_opt(); match msg { - Some(msg) => { + Ok(msg) => { if !self.handle_msg(msg) { break } } - None => break + _ => break } } } diff --git a/src/components/util/url.rs b/src/components/util/url.rs index da2ca64c0e0..7c13e124897 100644 --- a/src/components/util/url.rs +++ b/src/components/util/url.rs @@ -18,7 +18,7 @@ Create a URL object from a string. Does various helpful browsery things like */ // TODO: about:failure-> pub fn try_parse_url(str_url: &str, base_url: Option<std_url::Url>) -> Result<std_url::Url, ~str> { - let str_url = str_url.trim_chars(& &[' ', '\t', '\n', '\r', '\x0C']); + let str_url = str_url.trim_chars(&[' ', '\t', '\n', '\r', '\x0C']).to_owned(); let schm = std_url::get_scheme(str_url); let str_url = match schm { Err(_) => { @@ -45,11 +45,11 @@ pub fn try_parse_url(str_url: &str, base_url: Option<std_url::Url>) -> Result<st new_url.scheme + ":" + str_url } else if base_url.path.is_empty() || str_url.starts_with("/") { new_url.path = "/".to_owned(); - new_url.to_str() + str_url.trim_left_chars(&'/') + new_url.to_str() + str_url.trim_left_chars('/') } else if str_url.starts_with("#") { new_url.to_str() + str_url } else { // relative path - let base_path = base_url.path.trim_right_chars(&|c: char| c != '/'); + let base_path = base_url.path.trim_right_chars(|c: char| c != '/'); new_url.path = base_path.to_owned(); new_url.to_str() + str_url } @@ -203,7 +203,7 @@ pub fn url_map<T: Clone + 'static>() -> UrlMap<T> { pub fn is_image_data(uri: &str) -> bool { - static types: &'static [&'static str] = &[&"data:image/png", &"data:image/gif", &"data:image/jpeg"]; + static types: &'static [&'static str] = &["data:image/png", "data:image/gif", "data:image/jpeg"]; types.iter().any(|&type_| uri.starts_with(type_)) } diff --git a/src/components/util/workqueue.rs b/src/components/util/workqueue.rs index e7314f10812..b2b0f7d844e 100644 --- a/src/components/util/workqueue.rs +++ b/src/components/util/workqueue.rs @@ -11,7 +11,6 @@ use native; use rand; use rand::{Rng, XorShiftRng}; use std::cast; -use std::comm; use std::mem; use std::sync::atomics::{AtomicUint, SeqCst}; use std::sync::deque::{Abort, BufferPool, Data, Empty, Stealer, Worker}; @@ -116,12 +115,12 @@ impl<QUD:Send,WUD:Send> WorkerThread<QUD,WUD> { if i == SPIN_COUNT { match self.port.try_recv() { - comm::Data(StopMsg) => { + Ok(StopMsg) => { should_continue = false; break } - comm::Data(ExitMsg) => return, - comm::Data(_) => fail!("unexpected message"), + Ok(ExitMsg) => return, + Ok(_) => fail!("unexpected message"), _ => {} } diff --git a/src/platform/linux/rust-xlib b/src/platform/linux/rust-xlib -Subproject d0e8d86c563d70102794c5ae2174815ade05fb7 +Subproject f9b4c468cdd580ef8a5aabab11807fdbaf434af diff --git a/src/platform/macos/rust-core-foundation b/src/platform/macos/rust-core-foundation -Subproject ea3dda06fc75ef7fea6dafebe3b4268b5cbcd5a +Subproject 05383390ec26dbacbd380421e3a8640d801bba9 diff --git a/src/platform/macos/rust-core-graphics b/src/platform/macos/rust-core-graphics -Subproject 32c347b35fe8cfd3a98aba9ab1e9681bc58fe8b +Subproject 2d9116a992f62d072c2831dcf7c9bae20786106 diff --git a/src/platform/macos/rust-core-text b/src/platform/macos/rust-core-text -Subproject 442d5de406f55cba36b6cbc428debc20ab6e982 +Subproject 5a6f4249c3df2e9c082ef73498cd692fe4ca03d diff --git a/src/platform/macos/rust-io-surface b/src/platform/macos/rust-io-surface -Subproject 7078613f2e14b2df98d7495d5b5981cb76c84b2 +Subproject 9a1a84d58073e2c2e8a6eb574a5179db0faf6bc diff --git a/src/support/alert/rust-alert b/src/support/alert/rust-alert -Subproject 87249d2b2a48fdc57b05de274d85491eca717d2 +Subproject 4279186912d65ce8a5ce3180714c7e3926e61f4 diff --git a/src/support/azure/rust-azure b/src/support/azure/rust-azure -Subproject 43a514ecdcce7412db75797a41c93f5948dad0f +Subproject 234217165cd65bdb925301db0e060f20f4a645a diff --git a/src/support/css/rust-cssparser b/src/support/css/rust-cssparser -Subproject 6ea862378455e58b37979b33a2490fcc4163fe0 +Subproject 8ff0c64b6240e595ae99268a16c1b41bac7eee9 diff --git a/src/support/egl/rust-egl b/src/support/egl/rust-egl -Subproject ac1fb8608c8325bc802c6802326fa26a02233ef +Subproject 89b30aee451af87579b2d3f0c46ed739cc4dcc1 diff --git a/src/support/encoding/rust-encoding b/src/support/encoding/rust-encoding -Subproject 5f4eaffbd10914e7f52a912dfb347f25055c6f7 +Subproject f09d5869d87b95ff11cc8963c259ae7e6c713fc diff --git a/src/support/glfw/glfw-rs b/src/support/glfw/glfw-rs -Subproject f939047e44ad03fdc358562bbbb52765eeb51df +Subproject fd3d6ad6fac31e0615508d2204a15f4b548f59c diff --git a/src/support/glut/rust-glut b/src/support/glut/rust-glut -Subproject 8eb5c574591c4eb57fd37149abc8871979667cd +Subproject 4257b7b8400a09a5e5de2bb16a4621776a62328 diff --git a/src/support/http/rust-http b/src/support/http/rust-http -Subproject c121b24d8b293cec66867f9acef24c2abb623ce +Subproject f8762470a6e47c028d6af365dfdd99359dabaa1 diff --git a/src/support/hubbub/rust-hubbub b/src/support/hubbub/rust-hubbub -Subproject b2c76fb6473e00941ba4e0003f71431303d9ccd +Subproject 3ad90edd9dfeca891396d68da7a1d627563b712 diff --git a/src/support/layers/rust-layers b/src/support/layers/rust-layers -Subproject 2294d2aecc37075f8db1a776380b2878b262374 +Subproject 1ab5e83f166e06e58fe7fe76ecc98b7a441031f diff --git a/src/support/spidermonkey/rust-mozjs b/src/support/spidermonkey/rust-mozjs -Subproject ff296137c652248138eb7f5a377d8daac52ed23 +Subproject c155a3b433c1e53b47758aec0d4496df3a31287 diff --git a/src/support/stb-image/rust-stb-image b/src/support/stb-image/rust-stb-image -Subproject d849f6de5abfd601381826822094640df0e74a2 +Subproject e6746ef975e368cc920deec0d61caa74c571186 diff --git a/src/test/harness/contenttest/contenttest.rs b/src/test/harness/contenttest/contenttest.rs index 028cbcaca17..325e73dca71 100644 --- a/src/test/harness/contenttest/contenttest.rs +++ b/src/test/harness/contenttest/contenttest.rs @@ -64,7 +64,8 @@ fn test_options(config: Config) -> TestOpts { ratchet_noise_percent: None, save_metrics: None, test_shard: None, - logfile: None + logfile: None, + nocapture: false } } diff --git a/src/test/harness/reftest/reftest.rs b/src/test/harness/reftest/reftest.rs index 94829d84213..2cc27547750 100644 --- a/src/test/harness/reftest/reftest.rs +++ b/src/test/harness/reftest/reftest.rs @@ -40,6 +40,7 @@ fn main() { ratchet_metrics: None, save_metrics: None, test_shard: None, + nocapture: false, }; match run_tests_console(&test_opts, tests) { @@ -89,8 +90,8 @@ fn parse_lists(filenames: &[~str], servo_args: &[~str]) -> Vec<TestDescAndFn> { } let kind = match parts.get(0) { - & &"==" => Same, - & &"!=" => Different, + & "==" => Same, + & "!=" => Different, &part => fail!("reftest line: '{:s}' has invalid kind '{:s}'", line, part) }; |