diff options
28 files changed, 487 insertions, 157 deletions
diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index f543f6c0780..0c027195b25 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -52,6 +52,9 @@ git = "https://github.com/servo/rust-png" [dependencies.clipboard] git = "https://github.com/aweinstock314/rust-clipboard" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies] log = "*" num = "0.1.24" diff --git a/components/compositing/compositor_task.rs b/components/compositing/compositor_task.rs index 15e5f59f513..d8ada04bbdf 100644 --- a/components/compositing/compositor_task.rs +++ b/components/compositing/compositor_task.rs @@ -13,10 +13,11 @@ use windowing::{WindowEvent, WindowMethods}; use euclid::point::Point2D; use euclid::rect::Rect; +use ipc_channel::ipc::IpcReceiver; use layers::platform::surface::NativeDisplay; use layers::layers::{BufferRequest, LayerBuffer, LayerBufferSet}; use msg::compositor_msg::{Epoch, LayerId, LayerProperties, FrameTreeId}; -use msg::compositor_msg::{PaintListener, ScriptListener}; +use msg::compositor_msg::{PaintListener, ScriptToCompositorMsg}; use msg::constellation_msg::{AnimationState, ConstellationChan, PipelineId}; use msg::constellation_msg::{Key, KeyState, KeyModifiers}; use profile_traits::mem; @@ -61,31 +62,28 @@ impl CompositorReceiver for Receiver<Msg> { } } -/// Implementation of the abstract `ScriptListener` interface. -impl ScriptListener for Box<CompositorProxy+'static+Send> { - fn scroll_fragment_point(&mut self, - pipeline_id: PipelineId, - layer_id: LayerId, - point: Point2D<f32>) { - self.send(Msg::ScrollFragmentPoint(pipeline_id, layer_id, point)); - } - - fn close(&mut self) { - let (chan, port) = channel(); - self.send(Msg::Exit(chan)); - port.recv().unwrap(); - } +pub fn run_script_listener_thread(mut compositor_proxy: Box<CompositorProxy + 'static + Send>, + receiver: IpcReceiver<ScriptToCompositorMsg>) { + while let Ok(msg) = receiver.recv() { + match msg { + ScriptToCompositorMsg::ScrollFragmentPoint(pipeline_id, layer_id, point) => { + compositor_proxy.send(Msg::ScrollFragmentPoint(pipeline_id, layer_id, point)); + } - fn dup(&mut self) -> Box<ScriptListener+'static> { - box self.clone_compositor_proxy() as Box<ScriptListener+'static> - } + ScriptToCompositorMsg::Exit => { + let (chan, port) = channel(); + compositor_proxy.send(Msg::Exit(chan)); + port.recv().unwrap(); + } - fn set_title(&mut self, pipeline_id: PipelineId, title: Option<String>) { - self.send(Msg::ChangePageTitle(pipeline_id, title)) - } + ScriptToCompositorMsg::SetTitle(pipeline_id, title) => { + compositor_proxy.send(Msg::ChangePageTitle(pipeline_id, title)) + } - fn send_key_event(&mut self, key: Key, state: KeyState, modifiers: KeyModifiers) { - self.send(Msg::KeyEvent(key, state, modifiers)); + ScriptToCompositorMsg::SendKeyEvent(key, key_state, key_modifiers) => { + compositor_proxy.send(Msg::KeyEvent(key, key_state, key_modifiers)) + } + } } } diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index 2bbe8e3ef05..6cd40b7863f 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -19,6 +19,7 @@ use euclid::rect::{Rect, TypedRect}; use euclid::size::Size2D; use euclid::scale_factor::ScaleFactor; use gfx::font_cache_task::FontCacheTask; +use ipc_channel::ipc; use layout_traits::{LayoutControlChan, LayoutControlMsg, LayoutTaskFactory}; use libc; use msg::compositor_msg::{Epoch, LayerId}; @@ -1128,7 +1129,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> { // epoch matches what the compositor has drawn. If they match // (and script is idle) then this pipeline won't change again // and can be considered stable. - let (sender, receiver) = channel(); + let (sender, receiver) = ipc::channel().unwrap(); let LayoutControlChan(ref layout_chan) = pipeline.layout_chan; layout_chan.send(LayoutControlMsg::GetCurrentEpoch(sender)).unwrap(); let layout_task_epoch = receiver.recv().unwrap(); diff --git a/components/compositing/lib.rs b/components/compositing/lib.rs index c3f64f8703f..a9cb24eeb8d 100644 --- a/components/compositing/lib.rs +++ b/components/compositing/lib.rs @@ -14,6 +14,7 @@ extern crate azure; extern crate devtools_traits; extern crate euclid; extern crate gfx; +extern crate ipc_channel; extern crate layers; extern crate layout_traits; extern crate png; diff --git a/components/compositing/pipeline.rs b/components/compositing/pipeline.rs index 4305e686951..ac7e9e560b2 100644 --- a/components/compositing/pipeline.rs +++ b/components/compositing/pipeline.rs @@ -7,13 +7,16 @@ use layout_traits::{LayoutControlMsg, LayoutTaskFactory, LayoutControlChan}; use script_traits::{ScriptControlChan, ScriptTaskFactory}; use script_traits::{NewLayoutInfo, ConstellationControlMsg}; +use compositor_task; use devtools_traits::DevtoolsControlChan; use euclid::rect::{TypedRect}; use euclid::scale_factor::ScaleFactor; use gfx::paint_task::Msg as PaintMsg; use gfx::paint_task::{PaintChan, PaintTask}; use gfx::font_cache_task::FontCacheTask; +use ipc_channel::ipc; use layers::geometry::DevicePixel; +use msg::compositor_msg::ScriptListener; use msg::constellation_msg::{ConstellationChan, Failure, FrameId, PipelineId, SubpageId}; use msg::constellation_msg::{LoadData, WindowSizeData, PipelineExitType, MozBrowserEvent}; use profile_traits::mem; @@ -22,6 +25,7 @@ use net_traits::ResourceTask; use net_traits::image_cache_task::ImageCacheTask; use net_traits::storage_task::StorageTask; use std::sync::mpsc::{Receiver, channel}; +use std::thread; use url::Url; use util::geometry::{PagePx, ViewportPx}; use util::opts; @@ -81,7 +85,7 @@ impl Pipeline { let (paint_port, paint_chan) = PaintChan::new(); let (paint_shutdown_chan, paint_shutdown_port) = channel(); let (layout_shutdown_chan, layout_shutdown_port) = channel(); - let (pipeline_chan, pipeline_port) = channel(); + let (pipeline_chan, pipeline_port) = ipc::channel().unwrap(); let failure = Failure { pipeline_id: id, @@ -91,6 +95,8 @@ impl Pipeline { let script_chan = match script_chan { None => { let (script_chan, script_port) = channel(); + let (script_to_compositor_chan, script_to_compositor_port) = + ipc::channel().unwrap(); let window_size = window_rect.map(|rect| { WindowSizeData { @@ -100,10 +106,18 @@ impl Pipeline { } }); + let compositor_proxy_for_script_listener_thread = + compositor_proxy.clone_compositor_proxy(); + thread::spawn(move || { + compositor_task::run_script_listener_thread( + compositor_proxy_for_script_listener_thread, + script_to_compositor_port) + }); + ScriptTaskFactory::create(None::<&mut STF>, id, parent_info, - compositor_proxy.clone_compositor_proxy(), + ScriptListener::new(script_to_compositor_chan), &layout_pair, ScriptControlChan(script_chan.clone()), script_port, diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index 44f86405762..dfb2e12cb93 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -55,6 +55,9 @@ git = "https://github.com/servo/rust-selectors" [dependencies.clock_ticks] git = "https://github.com/tomaka/clock_ticks" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies] log = "*" encoding = "0.2" diff --git a/components/layout/layout_task.rs b/components/layout/layout_task.rs index 3a51d858c77..82cfc06974c 100644 --- a/components/layout/layout_task.rs +++ b/components/layout/layout_task.rs @@ -39,6 +39,7 @@ use gfx::display_list::StackingContext; use gfx::font_cache_task::FontCacheTask; use gfx::paint_task::Msg as PaintMsg; use gfx::paint_task::{PaintChan, PaintLayer}; +use ipc_channel::ipc::IpcReceiver; use layout_traits::{LayoutControlMsg, LayoutTaskFactory}; use log; use msg::compositor_msg::{Epoch, ScrollPolicy, LayerId}; @@ -65,6 +66,7 @@ use std::mem::transmute; use std::ops::{Deref, DerefMut}; use std::sync::mpsc::{channel, Sender, Receiver, Select}; use std::sync::{Arc, Mutex, MutexGuard}; +use std::thread; use style::computed_values::{filter, mix_blend_mode}; use style::media_queries::{MediaType, MediaQueryList, Device}; use style::selector_matching::Stylist; @@ -155,7 +157,7 @@ pub struct LayoutTask { /// The port on which we receive messages from the script task. pub port: Receiver<Msg>, - /// The port on which we receive messages from the constellation + /// The port on which we receive messages from the constellation. pub pipeline_port: Receiver<LayoutControlMsg>, /// The port on which we receive messages from the image cache @@ -213,7 +215,7 @@ impl LayoutTaskFactory for LayoutTask { url: Url, is_iframe: bool, chan: OpaqueScriptLayoutChannel, - pipeline_port: Receiver<LayoutControlMsg>, + pipeline_port: IpcReceiver<LayoutControlMsg>, constellation_chan: ConstellationChan, failure_msg: Failure, script_chan: ScriptControlChan, @@ -284,7 +286,7 @@ impl LayoutTask { is_iframe: bool, port: Receiver<Msg>, chan: LayoutChan, - pipeline_port: Receiver<LayoutControlMsg>, + pipeline_port: IpcReceiver<LayoutControlMsg>, constellation_chan: ConstellationChan, script_chan: ScriptControlChan, paint_chan: PaintChan, @@ -314,12 +316,20 @@ impl LayoutTask { let (image_cache_sender, image_cache_receiver) = channel(); let (canvas_layers_sender, canvas_layers_receiver) = channel(); + // Start a thread to proxy IPC messages from the layout thread to us. + let (pipeline_sender, pipeline_receiver) = channel(); + thread::spawn(move || { + while let Ok(message) = pipeline_port.recv() { + pipeline_sender.send(message).unwrap() + } + }); + LayoutTask { id: id, url: url, is_iframe: is_iframe, port: port, - pipeline_port: pipeline_port, + pipeline_port: pipeline_receiver, chan: chan, script_chan: script_chan, constellation_chan: constellation_chan.clone(), diff --git a/components/layout/lib.rs b/components/layout/lib.rs index 8519758ccc9..618a16e9628 100644 --- a/components/layout/lib.rs +++ b/components/layout/lib.rs @@ -46,6 +46,7 @@ extern crate fnv; extern crate euclid; extern crate gfx; extern crate gfx_traits; +extern crate ipc_channel; extern crate layout_traits; extern crate libc; extern crate msg; diff --git a/components/layout_traits/Cargo.toml b/components/layout_traits/Cargo.toml index 888f729bea2..94f3b9d0498 100644 --- a/components/layout_traits/Cargo.toml +++ b/components/layout_traits/Cargo.toml @@ -25,6 +25,12 @@ path = "../profile_traits" [dependencies.util] path = "../util" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies] url = "0.2.35" euclid = "0.1" +serde = "*" +serde_macros = "*" + diff --git a/components/layout_traits/lib.rs b/components/layout_traits/lib.rs index 7db5475c969..64237be3bad 100644 --- a/components/layout_traits/lib.rs +++ b/components/layout_traits/lib.rs @@ -2,12 +2,17 @@ * 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/. */ +#![feature(custom_derive, plugin)] +#![plugin(serde_macros)] + extern crate euclid; extern crate gfx; +extern crate ipc_channel; extern crate script_traits; extern crate msg; extern crate profile_traits; extern crate net_traits; +extern crate serde; extern crate url; extern crate util; @@ -19,27 +24,29 @@ extern crate util; use euclid::rect::Rect; use gfx::font_cache_task::FontCacheTask; use gfx::paint_task::PaintChan; +use ipc_channel::ipc::{IpcReceiver, IpcSender}; use msg::compositor_msg::{Epoch, LayerId}; use msg::constellation_msg::{ConstellationChan, Failure, PipelineId, PipelineExitType}; use profile_traits::mem; use profile_traits::time; use net_traits::image_cache_task::ImageCacheTask; use script_traits::{ScriptControlChan, OpaqueScriptLayoutChannel}; -use std::sync::mpsc::{Sender, Receiver}; +use std::sync::mpsc::Sender; use util::geometry::Au; use url::Url; /// Messages sent to the layout task from the constellation and/or compositor. +#[derive(Deserialize, Serialize)] pub enum LayoutControlMsg { ExitNow(PipelineExitType), - GetCurrentEpoch(Sender<Epoch>), + GetCurrentEpoch(IpcSender<Epoch>), TickAnimations, SetVisibleRects(Vec<(LayerId, Rect<Au>)>), } /// A channel wrapper for constellation messages -#[derive(Clone)] -pub struct LayoutControlChan(pub Sender<LayoutControlMsg>); +#[derive(Clone, Deserialize, Serialize)] +pub struct LayoutControlChan(pub IpcSender<LayoutControlMsg>); // A static method creating a layout task // Here to remove the compositor -> layout dependency @@ -50,7 +57,7 @@ pub trait LayoutTaskFactory { url: Url, is_iframe: bool, chan: OpaqueScriptLayoutChannel, - pipeline_port: Receiver<LayoutControlMsg>, + pipeline_port: IpcReceiver<LayoutControlMsg>, constellation_chan: ConstellationChan, failure_msg: Failure, script_chan: ScriptControlChan, diff --git a/components/msg/Cargo.toml b/components/msg/Cargo.toml index 081dea247b0..a6d895986cf 100644 --- a/components/msg/Cargo.toml +++ b/components/msg/Cargo.toml @@ -22,12 +22,17 @@ git = "https://github.com/servo/rust-layers" [dependencies.png] git = "https://github.com/servo/rust-png" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies] url = "0.2.35" bitflags = "*" hyper = "0.5" rustc-serialize = "0.3.4" euclid = "0.1" +serde = "*" +serde_macros = "*" [target.x86_64-apple-darwin.dependencies] core-foundation = "*" diff --git a/components/msg/compositor_msg.rs b/components/msg/compositor_msg.rs index 80f0548dbc4..df05548b6a5 100644 --- a/components/msg/compositor_msg.rs +++ b/components/msg/compositor_msg.rs @@ -7,6 +7,7 @@ use constellation_msg::{Key, KeyState, KeyModifiers}; use euclid::point::Point2D; use euclid::rect::Rect; use euclid::Matrix4; +use ipc_channel::ipc::IpcSender; use layers::platform::surface::NativeDisplay; use layers::layers::{BufferRequest, LayerBufferSet}; use std::fmt::{Formatter, Debug}; @@ -15,7 +16,7 @@ use std::fmt; use constellation_msg::PipelineId; /// A newtype struct for denoting the age of messages; prevents race conditions. -#[derive(PartialEq, Eq, Debug, Copy, Clone, PartialOrd, Ord)] +#[derive(PartialEq, Eq, Debug, Copy, Clone, PartialOrd, Ord, Deserialize, Serialize)] pub struct Epoch(pub u32); impl Epoch { @@ -35,7 +36,7 @@ impl FrameTreeId { } } -#[derive(Clone, PartialEq, Eq, Copy, Hash)] +#[derive(Clone, PartialEq, Eq, Copy, Hash, Deserialize, Serialize)] pub struct LayerId(pub usize, pub u32); impl Debug for LayerId { @@ -115,16 +116,47 @@ pub trait PaintListener { fn notify_paint_task_exiting(&mut self, pipeline_id: PipelineId); } +#[derive(Deserialize, Serialize)] +pub enum ScriptToCompositorMsg { + ScrollFragmentPoint(PipelineId, LayerId, Point2D<f32>), + SetTitle(PipelineId, Option<String>), + SendKeyEvent(Key, KeyState, KeyModifiers), + Exit, +} + /// The interface used by the script task to tell the compositor to update its ready state, /// which is used in displaying the appropriate message in the window's title. -pub trait ScriptListener { - fn scroll_fragment_point(&mut self, - pipeline_id: PipelineId, - layer_id: LayerId, - point: Point2D<f32>); - /// Informs the compositor that the title of the page with the given pipeline ID has changed. - fn set_title(&mut self, pipeline_id: PipelineId, new_title: Option<String>); - fn close(&mut self); - fn dup(&mut self) -> Box<ScriptListener+'static>; - fn send_key_event(&mut self, key: Key, state: KeyState, modifiers: KeyModifiers); +#[derive(Clone)] +pub struct ScriptListener(IpcSender<ScriptToCompositorMsg>); + +impl ScriptListener { + pub fn new(sender: IpcSender<ScriptToCompositorMsg>) -> ScriptListener { + ScriptListener(sender) + } + + pub fn scroll_fragment_point(&mut self, + pipeline_id: PipelineId, + layer_id: LayerId, + point: Point2D<f32>) { + self.0 + .send(ScriptToCompositorMsg::ScrollFragmentPoint(pipeline_id, layer_id, point)) + .unwrap() + } + + pub fn close(&mut self) { + self.0.send(ScriptToCompositorMsg::Exit).unwrap() + } + + pub fn dup(&mut self) -> ScriptListener { + self.clone() + } + + pub fn set_title(&mut self, pipeline_id: PipelineId, title: Option<String>) { + self.0.send(ScriptToCompositorMsg::SetTitle(pipeline_id, title)).unwrap() + } + + pub fn send_key_event(&mut self, key: Key, state: KeyState, modifiers: KeyModifiers) { + self.0.send(ScriptToCompositorMsg::SendKeyEvent(key, state, modifiers)).unwrap() + } } + diff --git a/components/msg/constellation_msg.rs b/components/msg/constellation_msg.rs index 67436e5b09c..662e1bed34a 100644 --- a/components/msg/constellation_msg.rs +++ b/components/msg/constellation_msg.rs @@ -57,7 +57,7 @@ pub struct WindowSizeData { pub device_pixel_ratio: ScaleFactor<ViewportPx, DevicePixel, f32>, } -#[derive(PartialEq, Eq, Copy, Clone)] +#[derive(PartialEq, Eq, Copy, Clone, Deserialize, Serialize)] pub enum KeyState { Pressed, Released, @@ -65,7 +65,7 @@ pub enum KeyState { } //N.B. Based on the glutin key enum -#[derive(Debug, PartialEq, Eq, Copy, Clone)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, Deserialize, Serialize)] pub enum Key { Space, Apostrophe, @@ -191,6 +191,7 @@ pub enum Key { } bitflags! { + #[derive(Deserialize, Serialize)] flags KeyModifiers: u8 { const NONE = 0x00, const SHIFT = 0x01, @@ -368,15 +369,15 @@ pub struct FrameId(pub u32); #[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)] pub struct WorkerId(pub u32); -#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)] +#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug, Deserialize, Serialize)] pub struct PipelineId(pub u32); -#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)] +#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug, Deserialize, Serialize)] pub struct SubpageId(pub u32); // The type of pipeline exit. During complete shutdowns, pipelines do not have to // release resources automatically released on process termination. -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Deserialize, Serialize)] pub enum PipelineExitType { PipelineOnly, Complete, diff --git a/components/msg/lib.rs b/components/msg/lib.rs index 3e8427840d5..35aa6444b0f 100644 --- a/components/msg/lib.rs +++ b/components/msg/lib.rs @@ -2,13 +2,18 @@ * 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/. */ +#![feature(custom_derive, plugin)] +#![plugin(serde_macros)] + extern crate azure; #[macro_use] extern crate bitflags; extern crate euclid; extern crate hyper; +extern crate ipc_channel; extern crate layers; extern crate png; extern crate rustc_serialize; +extern crate serde; extern crate util; extern crate url; extern crate style; diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index 8fc3d56fa9b..6aefc2903d7 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -55,6 +55,9 @@ features = ["query_encoding"] [dependencies.offscreen_gl_context] git = "https://github.com/ecoal95/rust-offscreen-rendering-context" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies] log = "*" encoding = "0.2" diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index b64d46a212e..43e9814242e 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -328,7 +328,7 @@ impl<A,B> JSTraceable for fn(A) -> B { } } -impl JSTraceable for Box<ScriptListener+'static> { +impl JSTraceable for ScriptListener { #[inline] fn trace(&self, _: *mut JSTracer) { // Do nothing diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 83a9e5dedd4..7ddced8ef0d 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -251,8 +251,11 @@ pub trait DocumentHelpers<'a> { fn title_changed(self); fn send_title_to_compositor(self); fn dirty_all_nodes(self); - fn dispatch_key_event(self, key: Key, state: KeyState, - modifiers: KeyModifiers, compositor: &mut Box<ScriptListener+'static>); + fn dispatch_key_event(self, + key: Key, + state: KeyState, + modifiers: KeyModifiers, + compositor: &mut ScriptListener); fn node_from_nodes_and_strings(self, nodes: Vec<NodeOrString>) -> Fallible<Root<Node>>; fn get_body_attribute(self, local_name: &Atom) -> DOMString; @@ -760,10 +763,11 @@ impl<'a> DocumentHelpers<'a> for &'a Document { } /// The entry point for all key processing for web content - fn dispatch_key_event(self, key: Key, + fn dispatch_key_event(self, + key: Key, state: KeyState, modifiers: KeyModifiers, - compositor: &mut Box<ScriptListener+'static>) { + compositor: &mut ScriptListener) { let window = self.window.root(); let focused = self.get_focused_element(); let body = self.GetBody(); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index b781d7e19a1..984a8d4fb01 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -105,7 +105,7 @@ pub struct Window { navigator: MutNullableHeap<JS<Navigator>>, image_cache_task: ImageCacheTask, image_cache_chan: ImageCacheChan, - compositor: DOMRefCell<Box<ScriptListener+'static>>, + compositor: DOMRefCell<ScriptListener>, browser_context: DOMRefCell<Option<BrowserContext>>, page: Rc<Page>, performance: MutNullableHeap<JS<Performance>>, @@ -241,7 +241,7 @@ impl Window { &self.image_cache_task } - pub fn compositor<'a>(&'a self) -> RefMut<'a, Box<ScriptListener+'static>> { + pub fn compositor<'a>(&'a self) -> RefMut<'a, ScriptListener> { self.compositor.borrow_mut() } @@ -964,7 +964,7 @@ impl Window { script_chan: Box<ScriptChan+Send>, image_cache_chan: ImageCacheChan, control_chan: ScriptControlChan, - compositor: Box<ScriptListener+'static>, + compositor: ScriptListener, image_cache_task: ImageCacheTask, resource_task: ResourceTask, storage_task: StorageTask, diff --git a/components/script/layout_interface.rs b/components/script/layout_interface.rs index b88f60c6b4e..7db08689279 100644 --- a/components/script/layout_interface.rs +++ b/components/script/layout_interface.rs @@ -10,6 +10,7 @@ use dom::node::LayoutData; use euclid::point::Point2D; use euclid::rect::Rect; +use ipc_channel::ipc::IpcSender; use libc::uintptr_t; use msg::compositor_msg::LayerId; use msg::constellation_msg::{PipelineExitType, WindowSizeData}; @@ -71,7 +72,7 @@ pub enum Msg { ExitNow(PipelineExitType), /// Get the last epoch counter for this layout task. - GetCurrentEpoch(Sender<Epoch>) + GetCurrentEpoch(IpcSender<Epoch>) } /// Synchronous messages that script can send to layout. diff --git a/components/script/lib.rs b/components/script/lib.rs index 15a1c4c5db5..66d184846f3 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -44,6 +44,7 @@ extern crate html5ever; extern crate encoding; extern crate fnv; extern crate hyper; +extern crate ipc_channel; extern crate js; extern crate libc; extern crate msg; diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 49f9ecdfa2d..693e89058ef 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -297,8 +297,9 @@ pub struct ScriptTask { /// For communicating load url messages to the constellation constellation_chan: ConstellationChan, + /// A handle to the compositor for communicating ready state messages. - compositor: DOMRefCell<Box<ScriptListener+'static>>, + compositor: DOMRefCell<ScriptListener>, /// The port on which we receive messages from the image cache image_cache_port: Receiver<ImageCacheResult>, @@ -374,29 +375,28 @@ impl ScriptTaskFactory for ScriptTask { box pair.sender() as Box<Any+Send> } - fn create<C>(_phantom: Option<&mut ScriptTask>, - id: PipelineId, - parent_info: Option<(PipelineId, SubpageId)>, - compositor: C, - layout_chan: &OpaqueScriptLayoutChannel, - control_chan: ScriptControlChan, - control_port: Receiver<ConstellationControlMsg>, - constellation_chan: ConstellationChan, - failure_msg: Failure, - resource_task: ResourceTask, - storage_task: StorageTask, - image_cache_task: ImageCacheTask, - devtools_chan: Option<DevtoolsControlChan>, - window_size: Option<WindowSizeData>, - load_data: LoadData) - where C: ScriptListener + Send + 'static { + fn create(_phantom: Option<&mut ScriptTask>, + id: PipelineId, + parent_info: Option<(PipelineId, SubpageId)>, + compositor: ScriptListener, + layout_chan: &OpaqueScriptLayoutChannel, + control_chan: ScriptControlChan, + control_port: Receiver<ConstellationControlMsg>, + constellation_chan: ConstellationChan, + failure_msg: Failure, + resource_task: ResourceTask, + storage_task: StorageTask, + image_cache_task: ImageCacheTask, + devtools_chan: Option<DevtoolsControlChan>, + window_size: Option<WindowSizeData>, + load_data: LoadData) { let ConstellationChan(const_chan) = constellation_chan.clone(); let (script_chan, script_port) = channel(); let layout_chan = LayoutChan(layout_chan.sender()); spawn_named_with_send_on_failure(format!("ScriptTask {:?}", id), task_state::SCRIPT, move || { let roots = RootCollection::new(); let _stack_roots_tls = StackRootTLS::new(&roots); - let script_task = ScriptTask::new(box compositor as Box<ScriptListener>, + let script_task = ScriptTask::new(compositor, script_port, NonWorkerScriptChan(script_chan), control_chan, @@ -464,7 +464,7 @@ impl ScriptTask { } /// Creates a new script task. - pub fn new(compositor: Box<ScriptListener+'static>, + pub fn new(compositor: ScriptListener, port: Receiver<ScriptMsg>, chan: NonWorkerScriptChan, control_chan: ScriptControlChan, diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index f8c5ccc9d90..3d7375b6409 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -150,22 +150,21 @@ pub struct ScriptControlChan(pub Sender<ConstellationControlMsg>); /// crate. pub trait ScriptTaskFactory { /// Create a `ScriptTask`. - fn create<C>(_phantom: Option<&mut Self>, - id: PipelineId, - parent_info: Option<(PipelineId, SubpageId)>, - compositor: C, - layout_chan: &OpaqueScriptLayoutChannel, - control_chan: ScriptControlChan, - control_port: Receiver<ConstellationControlMsg>, - constellation_msg: ConstellationChan, - failure_msg: Failure, - resource_task: ResourceTask, - storage_task: StorageTask, - image_cache_task: ImageCacheTask, - devtools_chan: Option<DevtoolsControlChan>, - window_size: Option<WindowSizeData>, - load_data: LoadData) - where C: ScriptListener + Send; + fn create(_phantom: Option<&mut Self>, + id: PipelineId, + parent_info: Option<(PipelineId, SubpageId)>, + compositor: ScriptListener, + layout_chan: &OpaqueScriptLayoutChannel, + control_chan: ScriptControlChan, + control_port: Receiver<ConstellationControlMsg>, + constellation_msg: ConstellationChan, + failure_msg: Failure, + resource_task: ResourceTask, + storage_task: StorageTask, + image_cache_task: ImageCacheTask, + devtools_chan: Option<DevtoolsControlChan>, + window_size: Option<WindowSizeData>, + load_data: LoadData); /// Create a script -> layout channel (`Sender`, `Receiver` pair). fn create_layout_channel(_phantom: Option<&mut Self>) -> OpaqueScriptLayoutChannel; /// Clone the `Sender` in `pair`. diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 82652008b21..f69593bc603 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -48,6 +48,11 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] +name = "aster" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "azure" version = "0.1.0" source = "git+https://github.com/servo/rust-azure#d8c86d7864bdf782734981f17ca7561c97bdaf98" @@ -56,7 +61,7 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "freetype-sys 2.4.11 (git+https://github.com/servo/libfreetype2)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -86,7 +91,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "canvas_traits 0.0.1", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -102,7 +107,7 @@ version = "0.0.1" dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)", @@ -153,10 +158,11 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -329,13 +335,15 @@ dependencies = [ [[package]] name = "euclid" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -419,7 +427,7 @@ dependencies = [ "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "fontconfig 0.1.0 (git+https://github.com/servo/rust-fontconfig)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", @@ -518,7 +526,7 @@ dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -607,12 +615,23 @@ source = "git+https://github.com/servo/io-surface-rs#f772aa79f487d1722ec6ad3d3c3 dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] +name = "ipc-channel" +version = "0.1.0" +source = "git+https://github.com/pcwalton/ipc-channel#1043d943a4da75ba302cfbe0b55afe1c84887560" +dependencies = [ + "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "js" version = "0.1.0" source = "git+https://github.com/servo/rust-mozjs#f59c04795c84b82e00fdbd694bed90c56fa6567a" @@ -646,7 +665,7 @@ dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", @@ -668,10 +687,11 @@ dependencies = [ "clock_ticks 0.0.6 (git+https://github.com/tomaka/clock_ticks)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -695,12 +715,15 @@ dependencies = [ name = "layout_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", "script_traits 0.0.1", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -786,12 +809,15 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "png 0.1.0 (git+https://github.com/servo/rust-png)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", @@ -803,7 +829,7 @@ version = "0.0.1" dependencies = [ "cookie 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -835,7 +861,7 @@ dependencies = [ name = "net_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -878,7 +904,7 @@ source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#46c5cc dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.0.26 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1008,6 +1034,27 @@ dependencies = [ ] [[package]] +name = "quasi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quasi_codegen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quasi_macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quasi_codegen 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "quicksort" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1058,10 +1105,11 @@ dependencies = [ "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "js 0.1.0 (git+https://github.com/servo/rust-mozjs)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1101,7 +1149,7 @@ name = "script_traits" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1125,6 +1173,32 @@ dependencies = [ ] [[package]] +name = "serde" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_codegen" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_macros 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "shared_library" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1190,7 +1264,7 @@ dependencies = [ "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1211,7 +1285,7 @@ name = "style_tests" version = "0.0.1" dependencies = [ "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.1.0 (git+https://github.com/servo/rust-selectors)", "string_cache 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_plugin 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1300,7 +1374,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1308,6 +1382,8 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1316,7 +1392,7 @@ dependencies = [ name = "util_tests" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "util 0.0.1", diff --git a/components/util/Cargo.toml b/components/util/Cargo.toml index b6a98db4c95..8ed33f5bd79 100644 --- a/components/util/Cargo.toml +++ b/components/util/Cargo.toml @@ -33,3 +33,6 @@ cssparser = "0.3.1" num = "0.1.24" url = "*" euclid = "0.1" +serde = "*" +serde_macros = "*" + diff --git a/components/util/geometry.rs b/components/util/geometry.rs index 5f493f19660..1ed0565e3b4 100644 --- a/components/util/geometry.rs +++ b/components/util/geometry.rs @@ -66,7 +66,7 @@ pub enum PagePx {} // See https://bugzilla.mozilla.org/show_bug.cgi?id=177805 for more info. // // FIXME: Implement Au using Length and ScaleFactor instead of a custom type. -#[derive(Clone, Copy, Hash, PartialEq, PartialOrd, Eq, Ord)] +#[derive(Clone, Copy, Hash, PartialEq, PartialOrd, Eq, Ord, Deserialize, Serialize)] pub struct Au(pub i32); impl Default for Au { diff --git a/components/util/lib.rs b/components/util/lib.rs index cac18875ac3..ea3caba8a3d 100644 --- a/components/util/lib.rs +++ b/components/util/lib.rs @@ -5,6 +5,7 @@ #![feature(alloc)] #![feature(box_syntax)] #![feature(core_intrinsics)] +#![feature(custom_derive)] #![feature(fnbox)] #![feature(hashmap_hasher)] #![feature(heap_api)] @@ -18,6 +19,8 @@ #![feature(step_trait)] #![feature(zero_one)] +#![plugin(serde_macros)] + #[macro_use] extern crate log; extern crate azure; @@ -31,6 +34,7 @@ extern crate num as num_lib; extern crate num_cpus; extern crate rand; extern crate rustc_serialize; +extern crate serde; extern crate smallvec; extern crate url; diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 097e24b04ac..c488fa1c86a 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -10,7 +10,7 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "devtools 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glutin_app 0.0.1", @@ -47,6 +47,11 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] +name = "aster" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "azure" version = "0.1.0" source = "git+https://github.com/servo/rust-azure#d8c86d7864bdf782734981f17ca7561c97bdaf98" @@ -55,7 +60,7 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "freetype-sys 2.4.11 (git+https://github.com/servo/libfreetype2)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -85,7 +90,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "canvas_traits 0.0.1", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -101,7 +106,7 @@ version = "0.0.1" dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)", @@ -152,10 +157,11 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -328,13 +334,15 @@ dependencies = [ [[package]] name = "euclid" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -418,7 +426,7 @@ dependencies = [ "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "fontconfig 0.1.0 (git+https://github.com/servo/rust-fontconfig)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", @@ -510,7 +518,7 @@ dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -599,12 +607,23 @@ source = "git+https://github.com/servo/io-surface-rs#f772aa79f487d1722ec6ad3d3c3 dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] +name = "ipc-channel" +version = "0.1.0" +source = "git+https://github.com/pcwalton/ipc-channel#1043d943a4da75ba302cfbe0b55afe1c84887560" +dependencies = [ + "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "js" version = "0.1.0" source = "git+https://github.com/servo/rust-mozjs#f59c04795c84b82e00fdbd694bed90c56fa6567a" @@ -638,7 +657,7 @@ dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", @@ -660,10 +679,11 @@ dependencies = [ "clock_ticks 0.0.6 (git+https://github.com/tomaka/clock_ticks)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -687,12 +707,15 @@ dependencies = [ name = "layout_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", "script_traits 0.0.1", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -778,12 +801,15 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "png 0.1.0 (git+https://github.com/servo/rust-png)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", @@ -795,7 +821,7 @@ version = "0.0.1" dependencies = [ "cookie 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -815,7 +841,7 @@ dependencies = [ name = "net_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -858,7 +884,7 @@ source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#46c5cc dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.0.26 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -988,6 +1014,27 @@ dependencies = [ ] [[package]] +name = "quasi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quasi_codegen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quasi_macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quasi_codegen 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "quicksort" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1038,10 +1085,11 @@ dependencies = [ "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "js 0.1.0 (git+https://github.com/servo/rust-mozjs)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1073,7 +1121,7 @@ name = "script_traits" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1097,6 +1145,32 @@ dependencies = [ ] [[package]] +name = "serde" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_codegen" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_macros 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "servo" version = "0.0.1" dependencies = [ @@ -1188,7 +1262,7 @@ dependencies = [ "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1284,7 +1358,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1292,6 +1366,8 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index 203fe5bb1e4..6d7216535fa 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -7,7 +7,7 @@ dependencies = [ "egl 0.1.0 (git+https://github.com/servo/rust-egl)", "env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "errno 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -34,6 +34,11 @@ dependencies = [ ] [[package]] +name = "aster" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "azure" version = "0.1.0" source = "git+https://github.com/servo/rust-azure#d8c86d7864bdf782734981f17ca7561c97bdaf98" @@ -42,7 +47,7 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "freetype-sys 2.4.11 (git+https://github.com/servo/libfreetype2)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -72,7 +77,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "canvas_traits 0.0.1", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", @@ -88,7 +93,7 @@ version = "0.0.1" dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "offscreen_gl_context 0.1.0 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)", @@ -129,10 +134,11 @@ dependencies = [ "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -315,13 +321,15 @@ dependencies = [ [[package]] name = "euclid" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -397,7 +405,7 @@ dependencies = [ "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 0.1.0 (git+https://github.com/servo/core-text-rs)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "fontconfig 0.1.0 (git+https://github.com/servo/rust-fontconfig)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", @@ -533,12 +541,23 @@ source = "git+https://github.com/servo/io-surface-rs#f772aa79f487d1722ec6ad3d3c3 dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] +name = "ipc-channel" +version = "0.1.0" +source = "git+https://github.com/pcwalton/ipc-channel#1043d943a4da75ba302cfbe0b55afe1c84887560" +dependencies = [ + "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "js" version = "0.1.0" source = "git+https://github.com/servo/rust-mozjs#f59c04795c84b82e00fdbd694bed90c56fa6567a" @@ -572,7 +591,7 @@ dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "egl 0.1.0 (git+https://github.com/servo/rust-egl)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", @@ -594,10 +613,11 @@ dependencies = [ "clock_ticks 0.0.6 (git+https://github.com/tomaka/clock_ticks)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layout_traits 0.0.1", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -621,12 +641,15 @@ dependencies = [ name = "layout_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", "script_traits 0.0.1", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -704,12 +727,15 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "png 0.1.0 (git+https://github.com/servo/rust-png)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", @@ -721,7 +747,7 @@ version = "0.0.1" dependencies = [ "cookie 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -741,7 +767,7 @@ dependencies = [ name = "net_traits" version = "0.0.1" dependencies = [ - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -775,7 +801,7 @@ source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#46c5cc dependencies = [ "cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.0.26 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -896,6 +922,27 @@ dependencies = [ ] [[package]] +name = "quasi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quasi_codegen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quasi_macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quasi_codegen 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "quicksort" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -946,10 +993,11 @@ dependencies = [ "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "js 0.1.0 (git+https://github.com/servo/rust-mozjs)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -981,7 +1029,7 @@ name = "script_traits" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1005,6 +1053,32 @@ dependencies = [ ] [[package]] +name = "serde" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_codegen" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aster 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_macros 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "servo" version = "0.0.1" dependencies = [ @@ -1086,7 +1160,7 @@ dependencies = [ "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1173,7 +1247,7 @@ dependencies = [ "azure 0.1.0 (git+https://github.com/servo/rust-azure)", "bitflags 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1181,6 +1255,8 @@ dependencies = [ "plugins 0.0.1", "rand 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_macros 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.35 (registry+https://github.com/rust-lang/crates.io-index)", ] |