servo: Merge #11243 - Move constellation into its own crate (from Ms2ger:constellation); r=nox
authorMs2ger <Ms2ger@gmail.com>
Wed, 18 May 2016 02:11:46 -0700
changeset 338831 e95d591e75326739b259980af9fc0cbd9a6b75d4
parent 338830 05a81c359201c87d7019b28dcf8cbc53431e566b
child 338832 d829650c75bb721f2d23b1a54fa2b6a57e5c5ff1
push id31307
push usergszorc@mozilla.com
push dateSat, 04 Feb 2017 00:59:06 +0000
treeherdermozilla-central@94079d43835f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnox
servo: Merge #11243 - Move constellation into its own crate (from Ms2ger:constellation); r=nox Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy --faster` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). Either: - [ ] There are tests for these changes OR - [x] These changes do not require tests because refactoring Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. Source-Repo: https://github.com/servo/servo Source-Revision: 872565bb4bd2883c6fe926da74e3b3e2b74e6d34
servo/components/compositing/Cargo.toml
servo/components/compositing/compositor.rs
servo/components/compositing/compositor_thread.rs
servo/components/compositing/constellation.rs
servo/components/compositing/lib.rs
servo/components/compositing/timer_scheduler.rs
servo/components/constellation/Cargo.toml
servo/components/constellation/constellation.rs
servo/components/constellation/lib.rs
servo/components/constellation/timer_scheduler.rs
servo/components/servo/Cargo.lock
servo/components/servo/Cargo.toml
servo/components/servo/lib.rs
servo/ports/cef/Cargo.lock
servo/ports/gonk/Cargo.lock
servo/python/tidy/servo_tidy/tidy.py
--- a/servo/components/compositing/Cargo.toml
+++ b/servo/components/compositing/Cargo.toml
@@ -14,31 +14,26 @@ gfx_traits = {path = "../gfx_traits"}
 layout_traits = {path = "../layout_traits"}
 script_traits = {path = "../script_traits"}
 style_traits = {path = "../style_traits"}
 msg = {path = "../msg"}
 profile_traits = {path = "../profile_traits"}
 net_traits = {path = "../net_traits"}
 util = {path = "../util"}
 devtools_traits = {path = "../devtools_traits"}
-canvas_traits = {path = "../canvas_traits"}
-canvas = {path = "../canvas"}
 plugins = {path = "../plugins"}
 azure = {git = "https://github.com/servo/rust-azure", features = ["plugins"]}
 layers = {git = "https://github.com/servo/rust-layers", features = ["plugins"]}
-clipboard = {git = "https://github.com/aweinstock314/rust-clipboard"}
 ipc-channel = {git = "https://github.com/servo/ipc-channel"}
 webrender_traits = {git = "https://github.com/servo/webrender_traits"}
 webrender = {git = "https://github.com/servo/webrender"}
 app_units = {version = "0.2.3", features = ["plugins"]}
 euclid = {version = "0.6.4", features = ["plugins"]}
 gleam = "0.2.8"
 image = "0.10"
 log = "0.3.5"
-offscreen_gl_context = "0.1.2"
-rand = "0.3"
 serde = "0.7"
 serde_macros = "0.7"
 time = "0.1.17"
 url = {version = "1.0.0", features = ["heap_size"]}
 
 [target.'cfg(not(target_os = "windows"))'.dependencies]
 gaol = {git = "https://github.com/servo/gaol"}
--- a/servo/components/compositing/compositor.rs
+++ b/servo/components/compositing/compositor.rs
@@ -1,19 +1,19 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 use AnimationTickType;
 use CompositorMsg as ConstellationMsg;
+use SendableFrameTree;
 use app_units::Au;
 use compositor_layer::{CompositorData, CompositorLayer, RcCompositorLayer, WantsScrollEventsFlag};
 use compositor_thread::{CompositorEventListener, CompositorProxy};
 use compositor_thread::{CompositorReceiver, InitialCompositorState, Msg, RenderListener};
-use constellation::SendableFrameTree;
 use delayed_composition::DelayedCompositionTimerProxy;
 use euclid::point::TypedPoint2D;
 use euclid::rect::TypedRect;
 use euclid::scale_factor::ScaleFactor;
 use euclid::size::TypedSize2D;
 use euclid::{Matrix4D, Point2D, Rect, Size2D};
 use gfx::paint_thread::{ChromeToPaintMsg, PaintRequest};
 use gfx_traits::{color, Epoch, FrameTreeId, LayerId, LayerKind, LayerProperties, ScrollPolicy};
--- a/servo/components/compositing/compositor_thread.rs
+++ b/servo/components/compositing/compositor_thread.rs
@@ -18,17 +18,17 @@ use profile_traits::time;
 use script_traits::{AnimationState, EventResult, ScriptToCompositorMsg};
 use std::fmt::{Debug, Error, Formatter};
 use std::rc::Rc;
 use std::sync::mpsc::{Receiver, Sender, channel};
 use style_traits::cursor::Cursor;
 use style_traits::viewport::ViewportConstraints;
 use url::Url;
 use windowing::{WindowEvent, WindowMethods};
-pub use constellation::SendableFrameTree;
+pub use SendableFrameTree;
 pub use windowing;
 use webrender;
 use webrender_traits;
 
 /// Sends messages to the compositor. This is a trait supplied by the port because the method used
 /// to communicate with the compositor may have to kick OS event loops awake, communicate cross-
 /// process, and so forth.
 pub trait CompositorProxy : 'static + Send {
--- a/servo/components/compositing/lib.rs
+++ b/servo/components/compositing/lib.rs
@@ -1,78 +1,71 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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(box_syntax)]
 #![feature(custom_derive)]
 #![feature(plugin)]
-#![feature(mpsc_select)]
 #![feature(plugin)]
 #![plugin(plugins)]
 
 #![deny(unsafe_code)]
 #![plugin(serde_macros)]
 
 extern crate app_units;
 
 extern crate azure;
-extern crate canvas;
-extern crate canvas_traits;
-extern crate clipboard;
 extern crate devtools_traits;
 extern crate euclid;
 #[cfg(not(target_os = "windows"))]
 extern crate gaol;
 extern crate gfx;
 extern crate gfx_traits;
 extern crate gleam;
 extern crate image;
 extern crate ipc_channel;
 extern crate layers;
 extern crate layout_traits;
 #[macro_use]
 extern crate log;
 extern crate msg;
 extern crate net_traits;
-extern crate offscreen_gl_context;
 #[macro_use]
 extern crate profile_traits;
-extern crate rand;
 extern crate script_traits;
 extern crate serde;
 extern crate style_traits;
 extern crate time;
 extern crate url;
 #[macro_use]
 extern crate util;
 extern crate webrender;
 extern crate webrender_traits;
 
 pub use compositor_thread::{CompositorEventListener, CompositorProxy, CompositorThread};
-pub use constellation::Constellation;
-use euclid::size::{Size2D};
+use euclid::size::{Size2D, TypedSize2D};
 use gfx_traits::Epoch;
 use ipc_channel::ipc::{IpcSender};
 use msg::constellation_msg::{FrameId, Key, KeyState, KeyModifiers, LoadData};
 use msg::constellation_msg::{NavigationDirection, PipelineId, SubpageId};
 use msg::constellation_msg::{WebDriverCommandMsg, WindowSizeData, WindowSizeType};
+use pipeline::CompositionPipeline;
 use std::collections::HashMap;
 use url::Url;
+use util::geometry::PagePx;
 
 mod compositor;
 mod compositor_layer;
 pub mod compositor_thread;
-pub mod constellation;
 mod delayed_composition;
 pub mod pipeline;
 #[cfg(not(target_os = "windows"))]
 pub mod sandboxing;
 mod surface_map;
-mod timer_scheduler;
 mod touch;
 pub mod windowing;
 
 /// Specifies whether the script or layout thread needs to be ticked for animation.
 #[derive(Deserialize, Serialize)]
 pub enum AnimationTickType {
     Script,
     Layout,
@@ -100,8 +93,14 @@ pub enum CompositorMsg {
     LoadUrl(PipelineId, LoadData),
     Navigate(Option<(PipelineId, SubpageId)>, NavigationDirection),
     WindowSize(WindowSizeData, WindowSizeType),
     /// Requests that the constellation instruct layout to begin a new tick of the animation.
     TickAnimation(PipelineId, AnimationTickType),
     /// Dispatch a webdriver command
     WebDriverCommand(WebDriverCommandMsg),
 }
+
+pub struct SendableFrameTree {
+    pub pipeline: CompositionPipeline,
+    pub size: Option<TypedSize2D<PagePx, f32>>,
+    pub children: Vec<SendableFrameTree>,
+}
new file mode 100644
--- /dev/null
+++ b/servo/components/constellation/Cargo.toml
@@ -0,0 +1,37 @@
+[package]
+name = "constellation"
+version = "0.0.1"
+authors = ["The Servo Project Developers"]
+publish = false
+
+[lib]
+name = "constellation"
+path = "lib.rs"
+
+[dependencies]
+canvas = {path = "../canvas"}
+canvas_traits = {path = "../canvas_traits"}
+clipboard = {git = "https://github.com/aweinstock314/rust-clipboard"}
+compositing = {path = "../compositing"}
+devtools_traits = {path = "../devtools_traits"}
+euclid = {version = "0.6.4", features = ["plugins"]}
+gfx = {path = "../gfx"}
+gfx_traits = {path = "../gfx_traits"}
+ipc-channel = {git = "https://github.com/servo/ipc-channel"}
+layout_traits = {path = "../layout_traits"}
+log = "0.3.5"
+msg = {path = "../msg"}
+net_traits = {path = "../net_traits"}
+offscreen_gl_context = "0.1.2"
+plugins = {path = "../plugins"}
+profile_traits = {path = "../profile_traits"}
+rand = "0.3"
+script_traits = {path = "../script_traits"}
+serde_macros = "0.7"
+style_traits = {path = "../style_traits"}
+url = {version = "1.0.0", features = ["heap_size"]}
+util = {path = "../util"}
+webrender_traits = {git = "https://github.com/servo/webrender_traits"}
+
+[target.'cfg(not(target_os = "windows"))'.dependencies]
+gaol = {git = "https://github.com/servo/gaol"}
rename from servo/components/compositing/constellation.rs
rename to servo/components/constellation/constellation.rs
--- a/servo/components/compositing/constellation.rs
+++ b/servo/components/constellation/constellation.rs
@@ -4,24 +4,27 @@
 
 //! The `Constellation`, Servo's Grand Central Station
 //!
 //! The primary duty of a `Constellation` is to mediate between the
 //! graphics compositor and the many `Pipeline`s in the browser's
 //! navigation context, each `Pipeline` encompassing a `ScriptThread`,
 //! `LayoutThread`, and `PaintThread`.
 
-use AnimationTickType;
-use CompositorMsg as FromCompositorMsg;
 use canvas::canvas_paint_thread::CanvasPaintThread;
 use canvas::webgl_paint_thread::WebGLPaintThread;
 use canvas_traits::CanvasMsg;
 use clipboard::ClipboardContext;
-use compositor_thread::CompositorProxy;
-use compositor_thread::Msg as ToCompositorMsg;
+use compositing::CompositorMsg as FromCompositorMsg;
+use compositing::compositor_thread::CompositorProxy;
+use compositing::compositor_thread::Msg as ToCompositorMsg;
+use compositing::pipeline::{InitialPipelineState, Pipeline, UnprivilegedPipelineContent};
+#[cfg(not(target_os = "windows"))]
+use compositing::sandboxing;
+use compositing::{AnimationTickType, SendableFrameTree};
 use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlMsg};
 use euclid::scale_factor::ScaleFactor;
 use euclid::size::{Size2D, TypedSize2D};
 #[cfg(not(target_os = "windows"))]
 use gaol;
 #[cfg(not(target_os = "windows"))]
 use gaol::sandbox::{self, Sandbox, SandboxMethods};
 use gfx::font_cache_thread::FontCacheThread;
@@ -38,22 +41,19 @@ use msg::constellation_msg::{PipelineNam
 use msg::constellation_msg::{SubpageId, WindowSizeData, WindowSizeType};
 use msg::constellation_msg::{self, ConstellationChan, PanicMsg};
 use msg::webdriver_msg;
 use net_traits::bluetooth_thread::BluetoothMethodMsg;
 use net_traits::image_cache_thread::ImageCacheThread;
 use net_traits::storage_thread::{StorageThread, StorageThreadMsg};
 use net_traits::{self, ResourceThread};
 use offscreen_gl_context::{GLContextAttributes, GLLimits};
-use pipeline::{CompositionPipeline, InitialPipelineState, Pipeline, UnprivilegedPipelineContent};
 use profile_traits::mem;
 use profile_traits::time;
 use rand::{random, Rng, SeedableRng, StdRng};
-#[cfg(not(target_os = "windows"))]
-use sandboxing;
 use script_traits::{AnimationState, CompositorEvent, ConstellationControlMsg};
 use script_traits::{DocumentState, LayoutControlMsg};
 use script_traits::{IFrameLoadInfo, IFrameSandboxState, TimerEventRequest};
 use script_traits::{LayoutMsg as FromLayoutMsg, ScriptMsg as FromScriptMsg, ScriptThreadFactory};
 use script_traits::{MozBrowserEvent, MozBrowserErrorType};
 use std::borrow::ToOwned;
 use std::collections::HashMap;
 #[cfg(not(target_os = "windows"))]
@@ -291,22 +291,16 @@ impl<'a> Iterator for FrameTreeIterator<
                 },
             };
             self.stack.extend(pipeline.children.iter().map(|&c| c));
             return Some(frame)
         }
     }
 }
 
-pub struct SendableFrameTree {
-    pub pipeline: CompositionPipeline,
-    pub size: Option<TypedSize2D<PagePx, f32>>,
-    pub children: Vec<SendableFrameTree>,
-}
-
 struct WebDriverData {
     load_channel: Option<(PipelineId, IpcSender<webdriver_msg::LoadStatus>)>
 }
 
 impl WebDriverData {
     pub fn new() -> WebDriverData {
         WebDriverData {
             load_channel: None
new file mode 100644
--- /dev/null
+++ b/servo/components/constellation/lib.rs
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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(box_syntax)]
+#![feature(custom_derive)]
+#![feature(plugin)]
+#![feature(mpsc_select)]
+#![feature(plugin)]
+#![plugin(plugins)]
+
+#![deny(unsafe_code)]
+#![plugin(serde_macros)]
+
+extern crate canvas;
+extern crate canvas_traits;
+extern crate clipboard;
+extern crate compositing;
+extern crate devtools_traits;
+extern crate euclid;
+#[cfg(not(target_os = "windows"))]
+extern crate gaol;
+extern crate gfx;
+extern crate gfx_traits;
+extern crate ipc_channel;
+extern crate layout_traits;
+#[macro_use]
+extern crate log;
+extern crate msg;
+extern crate net_traits;
+extern crate offscreen_gl_context;
+#[macro_use]
+extern crate profile_traits;
+extern crate rand;
+extern crate script_traits;
+extern crate style_traits;
+extern crate url;
+#[macro_use]
+extern crate util;
+extern crate webrender_traits;
+
+mod constellation;
+mod timer_scheduler;
+
+pub use constellation::{Constellation, InitialConstellationState};
rename from servo/components/compositing/timer_scheduler.rs
rename to servo/components/constellation/timer_scheduler.rs
--- a/servo/components/servo/Cargo.lock
+++ b/servo/components/servo/Cargo.lock
@@ -3,16 +3,17 @@ name = "servo"
 version = "0.0.1"
 dependencies = [
  "android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "browserhtml 0.1.5 (git+https://github.com/browserhtml/browserhtml?branch=gh-pages)",
  "canvas 0.0.1",
  "canvas_traits 0.0.1",
  "compiletest_helper 0.0.1",
  "compositing 0.0.1",
+ "constellation 0.0.1",
  "devtools 0.0.1",
  "devtools_traits 0.0.1",
  "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gfx_tests 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -301,48 +302,73 @@ dependencies = [
 ]
 
 [[package]]
 name = "compositing"
 version = "0.0.1"
 dependencies = [
  "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "azure 0.4.5 (git+https://github.com/servo/rust-azure)",
- "canvas 0.0.1",
- "canvas_traits 0.0.1",
- "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
  "devtools_traits 0.0.1",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gfx_traits 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
  "layers 0.2.5 (git+https://github.com/servo/rust-layers)",
  "layout_traits 0.0.1",
  "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "msg 0.0.1",
  "net_traits 0.0.1",
- "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "plugins 0.0.1",
  "profile_traits 0.0.1",
- "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "script_traits 0.0.1",
  "serde 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "style_traits 0.0.1",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "util 0.0.1",
  "webrender 0.1.0 (git+https://github.com/servo/webrender)",
  "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
 ]
 
 [[package]]
+name = "constellation"
+version = "0.0.1"
+dependencies = [
+ "canvas 0.0.1",
+ "canvas_traits 0.0.1",
+ "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
+ "compositing 0.0.1",
+ "devtools_traits 0.0.1",
+ "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gaol 0.0.1 (git+https://github.com/servo/gaol)",
+ "gfx 0.0.1",
+ "gfx_traits 0.0.1",
+ "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
+ "layout_traits 0.0.1",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "msg 0.0.1",
+ "net_traits 0.0.1",
+ "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "plugins 0.0.1",
+ "profile_traits 0.0.1",
+ "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "script_traits 0.0.1",
+ "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "style_traits 0.0.1",
+ "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "util 0.0.1",
+ "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
+]
+
+[[package]]
 name = "cookie"
 version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "openssl 0.7.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
--- a/servo/components/servo/Cargo.toml
+++ b/servo/components/servo/Cargo.toml
@@ -42,16 +42,17 @@ style_tests = {path = "../../tests/unit/
 util_tests = {path = "../../tests/unit/util"}
 compiletest_helper = {path = "../../tests/compiletest/helper"}
 plugin_compiletest = {path = "../../tests/compiletest/plugin"}
 
 [dependencies]
 webrender_traits = {git = "https://github.com/servo/webrender_traits"}
 webrender = {git = "https://github.com/servo/webrender"}
 compositing = {path = "../compositing"}
+constellation = {path = "../constellation"}
 net = {path = "../net"}
 net_traits = {path = "../net_traits"}
 msg = {path = "../msg"}
 profile = {path = "../profile"}
 profile_traits = {path = "../profile_traits"}
 util = {path = "../util", features = ["non-geckolib"]}
 script = {path = "../script"}
 script_traits = {path = "../script_traits"}
--- a/servo/components/servo/lib.rs
+++ b/servo/components/servo/lib.rs
@@ -20,16 +20,17 @@
 #[cfg(not(target_os = "windows"))]
 extern crate gaol;
 #[macro_use]
 extern crate gleam;
 
 pub extern crate canvas;
 pub extern crate canvas_traits;
 pub extern crate compositing;
+pub extern crate constellation;
 pub extern crate devtools;
 pub extern crate devtools_traits;
 pub extern crate euclid;
 pub extern crate gfx;
 pub extern crate ipc_channel;
 pub extern crate layout;
 pub extern crate msg;
 pub extern crate net;
@@ -54,23 +55,23 @@ fn webdriver(port: u16, constellation: S
 }
 
 #[cfg(not(feature = "webdriver"))]
 fn webdriver(_port: u16, _constellation: Sender<ConstellationMsg>) { }
 
 use compositing::CompositorEventListener;
 use compositing::CompositorMsg as ConstellationMsg;
 use compositing::compositor_thread::InitialCompositorState;
-use compositing::constellation::InitialConstellationState;
 use compositing::pipeline::UnprivilegedPipelineContent;
 #[cfg(not(target_os = "windows"))]
 use compositing::sandboxing;
 use compositing::windowing::WindowEvent;
 use compositing::windowing::WindowMethods;
-use compositing::{CompositorProxy, CompositorThread, Constellation};
+use compositing::{CompositorProxy, CompositorThread};
+use constellation::{Constellation, InitialConstellationState};
 #[cfg(not(target_os = "windows"))]
 use gaol::sandbox::{ChildSandbox, ChildSandboxMethods};
 use gfx::font_cache_thread::FontCacheThread;
 use ipc_channel::ipc::{self, IpcSender};
 use net::bluetooth_thread::BluetoothThreadFactory;
 use net::image_cache_thread::new_image_cache_thread;
 use net::resource_thread::new_resource_thread;
 use net::storage_thread::StorageThreadFactory;
--- a/servo/ports/cef/Cargo.lock
+++ b/servo/ports/cef/Cargo.lock
@@ -264,48 +264,73 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "compositing"
 version = "0.0.1"
 dependencies = [
  "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "azure 0.4.5 (git+https://github.com/servo/rust-azure)",
- "canvas 0.0.1",
- "canvas_traits 0.0.1",
- "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
  "devtools_traits 0.0.1",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gfx_traits 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
  "layers 0.2.5 (git+https://github.com/servo/rust-layers)",
  "layout_traits 0.0.1",
  "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "msg 0.0.1",
  "net_traits 0.0.1",
- "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "plugins 0.0.1",
  "profile_traits 0.0.1",
- "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "script_traits 0.0.1",
  "serde 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "style_traits 0.0.1",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "util 0.0.1",
  "webrender 0.1.0 (git+https://github.com/servo/webrender)",
  "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
 ]
 
 [[package]]
+name = "constellation"
+version = "0.0.1"
+dependencies = [
+ "canvas 0.0.1",
+ "canvas_traits 0.0.1",
+ "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
+ "compositing 0.0.1",
+ "devtools_traits 0.0.1",
+ "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gaol 0.0.1 (git+https://github.com/servo/gaol)",
+ "gfx 0.0.1",
+ "gfx_traits 0.0.1",
+ "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
+ "layout_traits 0.0.1",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "msg 0.0.1",
+ "net_traits 0.0.1",
+ "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "plugins 0.0.1",
+ "profile_traits 0.0.1",
+ "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "script_traits 0.0.1",
+ "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "style_traits 0.0.1",
+ "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "util 0.0.1",
+ "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
+]
+
+[[package]]
 name = "cookie"
 version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "openssl 0.7.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1811,16 +1836,17 @@ dependencies = [
 name = "servo"
 version = "0.0.1"
 dependencies = [
  "android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "browserhtml 0.1.5 (git+https://github.com/browserhtml/browserhtml?branch=gh-pages)",
  "canvas 0.0.1",
  "canvas_traits 0.0.1",
  "compositing 0.0.1",
+ "constellation 0.0.1",
  "devtools 0.0.1",
  "devtools_traits 0.0.1",
  "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
  "glutin_app 0.0.1",
--- a/servo/ports/gonk/Cargo.lock
+++ b/servo/ports/gonk/Cargo.lock
@@ -266,48 +266,73 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "compositing"
 version = "0.0.1"
 dependencies = [
  "app_units 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "azure 0.4.5 (git+https://github.com/servo/rust-azure)",
- "canvas 0.0.1",
- "canvas_traits 0.0.1",
- "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
  "devtools_traits 0.0.1",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gfx_traits 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
  "image 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
  "layers 0.2.5 (git+https://github.com/servo/rust-layers)",
  "layout_traits 0.0.1",
  "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "msg 0.0.1",
  "net_traits 0.0.1",
- "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "plugins 0.0.1",
  "profile_traits 0.0.1",
- "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
  "script_traits 0.0.1",
  "serde 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "style_traits 0.0.1",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "util 0.0.1",
  "webrender 0.1.0 (git+https://github.com/servo/webrender)",
  "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
 ]
 
 [[package]]
+name = "constellation"
+version = "0.0.1"
+dependencies = [
+ "canvas 0.0.1",
+ "canvas_traits 0.0.1",
+ "clipboard 0.1.2 (git+https://github.com/aweinstock314/rust-clipboard)",
+ "compositing 0.0.1",
+ "devtools_traits 0.0.1",
+ "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gaol 0.0.1 (git+https://github.com/servo/gaol)",
+ "gfx 0.0.1",
+ "gfx_traits 0.0.1",
+ "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
+ "layout_traits 0.0.1",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "msg 0.0.1",
+ "net_traits 0.0.1",
+ "offscreen_gl_context 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "plugins 0.0.1",
+ "profile_traits 0.0.1",
+ "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "script_traits 0.0.1",
+ "serde_macros 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "style_traits 0.0.1",
+ "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "util 0.0.1",
+ "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
+]
+
+[[package]]
 name = "cookie"
 version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "openssl 0.7.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
  "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
  "url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1803,16 +1828,17 @@ dependencies = [
 name = "servo"
 version = "0.0.1"
 dependencies = [
  "android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "browserhtml 0.1.5 (git+https://github.com/browserhtml/browserhtml?branch=gh-pages)",
  "canvas 0.0.1",
  "canvas_traits 0.0.1",
  "compositing 0.0.1",
+ "constellation 0.0.1",
  "devtools 0.0.1",
  "devtools_traits 0.0.1",
  "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "gaol 0.0.1 (git+https://github.com/servo/gaol)",
  "gfx 0.0.1",
  "gleam 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
  "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
--- a/servo/python/tidy/servo_tidy/tidy.py
+++ b/servo/python/tidy/servo_tidy/tidy.py
@@ -580,16 +580,19 @@ def check_spec(file_name, lines):
 
 def collect_errors_for_files(files_to_check, checking_functions, line_checking_functions, print_text=True):
     (has_element, files_to_check) = is_iter_empty(files_to_check)
     if not has_element:
         raise StopIteration
     if print_text:
         print '\rChecking files for tidiness...'
     for filename in files_to_check:
+        if not os.path.exists(filename):
+            continue
+
         with open(filename, "r") as f:
             contents = f.read()
             for check in checking_functions:
                 for error in check(filename, contents):
                     # the result will be: `(filename, line, message)`
                     yield (filename,) + error
             lines = contents.splitlines(True)
             for check in line_checking_functions: