aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/compositing/Cargo.toml3
-rw-r--r--components/compositing/compositor_task.rs44
-rw-r--r--components/compositing/constellation.rs3
-rw-r--r--components/compositing/lib.rs1
-rw-r--r--components/compositing/pipeline.rs18
-rw-r--r--components/layout/Cargo.toml3
-rw-r--r--components/layout/layout_task.rs18
-rw-r--r--components/layout/lib.rs1
-rw-r--r--components/layout_traits/Cargo.toml6
-rw-r--r--components/layout_traits/lib.rs17
-rw-r--r--components/msg/Cargo.toml5
-rw-r--r--components/msg/compositor_msg.rs56
-rw-r--r--components/msg/constellation_msg.rs11
-rw-r--r--components/msg/lib.rs5
-rw-r--r--components/script/Cargo.toml3
-rw-r--r--components/script/dom/bindings/trace.rs2
-rw-r--r--components/script/dom/document.rs12
-rw-r--r--components/script/dom/window.rs6
-rw-r--r--components/script/layout_interface.rs3
-rw-r--r--components/script/lib.rs1
-rw-r--r--components/script/script_task.rs38
-rw-r--r--components/script_traits/lib.rs31
-rw-r--r--components/servo/Cargo.lock118
-rw-r--r--components/util/Cargo.toml3
-rw-r--r--components/util/geometry.rs2
-rw-r--r--components/util/lib.rs4
-rw-r--r--ports/cef/Cargo.lock116
-rw-r--r--ports/gonk/Cargo.lock114
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)",
]