diff options
133 files changed, 396 insertions, 352 deletions
diff --git a/Cargo.lock b/Cargo.lock index 21aa7ff9519..ae604a4a1d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,9 +14,9 @@ dependencies = [ "regex 0.1.76 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "script_traits 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "webdriver 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -185,7 +185,6 @@ dependencies = [ "ipc-channel 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "tinyfiledialogs 0.1.0 (git+https://github.com/jdm/tinyfiledialogs)", - "util 0.0.1", "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -197,7 +196,7 @@ dependencies = [ "regex 0.1.76 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", + "servo_config 0.0.1", ] [[package]] @@ -265,7 +264,7 @@ dependencies = [ "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", - "util 0.0.1", + "servo_config 0.0.1", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -398,10 +397,11 @@ dependencies = [ "script_traits 0.0.1", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "style_traits 0.0.1", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "webrender 0.11.0 (git+https://github.com/servo/webrender)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -433,9 +433,10 @@ dependencies = [ "script_traits 0.0.1", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", + "servo_remutex 0.0.1", "servo_url 0.0.1", "style_traits 0.0.1", - "util 0.0.1", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -544,7 +545,6 @@ name = "debugger" version = "0.0.1" dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "ws 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -582,7 +582,6 @@ dependencies = [ "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", ] [[package]] @@ -657,9 +656,10 @@ dependencies = [ "objc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "script_traits 0.0.1", + "servo_config 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "style_traits 0.0.1", - "util 0.0.1", "x11 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -941,6 +941,7 @@ dependencies = [ "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "servo-fontconfig 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "servo_atoms 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "simd 0.1.1 (git+https://github.com/huonw/simd)", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -948,7 +949,6 @@ dependencies = [ "style_traits 0.0.1", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-script 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", "xi-unicode 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1026,10 +1026,11 @@ dependencies = [ "script_traits 0.0.1", "servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "servo-glutin 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "style_traits 0.0.1", "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "x11 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1322,13 +1323,13 @@ dependencies = [ "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "servo_atoms 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "style_traits 0.0.1", "unicode-bidi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-script 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -1367,9 +1368,10 @@ dependencies = [ "selectors 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "style 0.0.1", - "util 0.0.1", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", ] @@ -1489,11 +1491,11 @@ dependencies = [ "script 0.0.1", "script_layout_interface 0.0.1", "script_traits 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "sig 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "webdriver_server 0.0.1", "webrender 0.11.0 (git+https://github.com/servo/webrender)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", @@ -1676,13 +1678,13 @@ dependencies = [ "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", "servo_url 0.0.1", "threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "tinyfiledialogs 0.1.0 (git+https://github.com/jdm/tinyfiledialogs)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", "websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1716,11 +1718,11 @@ dependencies = [ "net_traits 0.0.1", "plugins 0.0.1", "profile_traits 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", ] [[package]] @@ -1741,9 +1743,9 @@ dependencies = [ "num-traits 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", "servo_url 0.0.1", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", "websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2088,9 +2090,9 @@ dependencies = [ "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", "task_info 0.0.1", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", ] [[package]] @@ -2113,9 +2115,9 @@ dependencies = [ "plugins 0.0.1", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_config 0.0.1", "signpost 0.1.0 (git+https://github.com/pcwalton/signpost.git)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", ] [[package]] @@ -2292,6 +2294,8 @@ dependencies = [ "selectors 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "servo_atoms 0.0.1", + "servo_config 0.0.1", + "servo_geometry 0.0.1", "servo_url 0.0.1", "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", @@ -2299,7 +2303,6 @@ dependencies = [ "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "tinyfiledialogs 0.1.0 (git+https://github.com/jdm/tinyfiledialogs)", "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "uuid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.11.0 (git+https://github.com/servo/webrender)", "websocket 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2464,9 +2467,10 @@ dependencies = [ "plugin_compiletest 0.0.1", "profile_tests 0.0.1", "script_tests 0.0.1", + "servo_config_tests 0.0.1", + "servo_remutex_tests 0.0.1", "sig 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "style_tests 0.0.1", - "util_tests 0.0.1", ] [[package]] @@ -2563,6 +2567,58 @@ dependencies = [ ] [[package]] +name = "servo_config" +version = "0.0.1" +dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plugins 0.0.1", + "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", + "servo_geometry 0.0.1", + "servo_url 0.0.1", + "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "servo_config_tests" +version = "0.0.1" +dependencies = [ + "servo_config 0.0.1", +] + +[[package]] +name = "servo_geometry" +version = "0.0.1" +dependencies = [ + "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "servo_remutex" +version = "0.0.1" +dependencies = [ + "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "servo_remutex_tests" +version = "0.0.1" +dependencies = [ + "servo_remutex 0.0.1", +] + +[[package]] name = "servo_url" version = "0.0.1" dependencies = [ @@ -2695,12 +2751,12 @@ dependencies = [ "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", "servo_atoms 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "smallvec 0.1.8 (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)", "unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "util 0.0.1", "walkdir 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2718,10 +2774,10 @@ dependencies = [ "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "servo_atoms 0.0.1", + "servo_config 0.0.1", "servo_url 0.0.1", "style 0.0.1", "style_traits 0.0.1", - "util 0.0.1", ] [[package]] @@ -3019,35 +3075,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "util" -version = "0.0.1" -dependencies = [ - "app_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "plugins 0.0.1", - "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 0.8.18 (registry+https://github.com/rust-lang/crates.io-index)", - "servo_url 0.0.1", - "url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "xdg 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "util_tests" -version = "0.0.1" -dependencies = [ - "util 0.0.1", -] - -[[package]] name = "uuid" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/components/bluetooth/Cargo.toml b/components/bluetooth/Cargo.toml index 7ee5f430751..b94363904e1 100644 --- a/components/bluetooth/Cargo.toml +++ b/components/bluetooth/Cargo.toml @@ -15,7 +15,6 @@ bluetooth_traits = {path = "../bluetooth_traits"} device = {git = "https://github.com/servo/devices", features = ["bluetooth-test"]} ipc-channel = "0.5" rand = "0.3" -util = {path = "../util"} uuid = {version = "0.3.1", features = ["v4"]} [target.'cfg(target_os = "linux")'.dependencies] diff --git a/components/bluetooth/lib.rs b/components/bluetooth/lib.rs index 0207c9e6f74..6d0eca81158 100644 --- a/components/bluetooth/lib.rs +++ b/components/bluetooth/lib.rs @@ -10,7 +10,6 @@ extern crate ipc_channel; extern crate rand; #[cfg(target_os = "linux")] extern crate tinyfiledialogs; -extern crate util; extern crate uuid; pub mod test; @@ -29,7 +28,6 @@ use std::collections::{HashMap, HashSet}; use std::string::String; use std::thread; use std::time::Duration; -use util::thread::spawn_named; // A transaction not completed within 30 seconds shall time out. Such a transaction shall be considered to have failed. // https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=286439 (Vol. 3, page 480) @@ -88,9 +86,9 @@ impl BluetoothThreadFactory for IpcSender<BluetoothRequest> { fn new() -> IpcSender<BluetoothRequest> { let (sender, receiver) = ipc::channel().unwrap(); let adapter = BluetoothAdapter::init().ok(); - spawn_named("BluetoothThread".to_owned(), move || { + thread::Builder::new().name("BluetoothThread".to_owned()).spawn(move || { BluetoothManager::new(receiver, adapter).start(); - }); + }).expect("Thread spawning failed"); sender } } diff --git a/components/bluetooth_traits/Cargo.toml b/components/bluetooth_traits/Cargo.toml index 5ac8057c2b2..c2c5a632b2d 100644 --- a/components/bluetooth_traits/Cargo.toml +++ b/components/bluetooth_traits/Cargo.toml @@ -14,4 +14,4 @@ ipc-channel = "0.5" regex = "0.1.43" serde = "0.8" serde_derive = "0.8" -util = {path = "../util"} +servo_config = {path = "../config"} diff --git a/components/bluetooth_traits/blocklist.rs b/components/bluetooth_traits/blocklist.rs index f859def1379..26df3413c10 100644 --- a/components/bluetooth_traits/blocklist.rs +++ b/components/bluetooth_traits/blocklist.rs @@ -3,11 +3,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use regex::Regex; +use servo_config::resource_files::read_resource_file; use std::cell::RefCell; use std::collections::HashMap; use std::io::BufRead; use std::string::String; -use util::resource_files::read_resource_file; const BLOCKLIST_FILE: &'static str = "gatt_blocklist.txt"; const BLOCKLIST_FILE_NOT_FOUND: &'static str = "Could not find gatt_blocklist.txt file"; diff --git a/components/bluetooth_traits/lib.rs b/components/bluetooth_traits/lib.rs index 761173eb32f..68620217d4f 100644 --- a/components/bluetooth_traits/lib.rs +++ b/components/bluetooth_traits/lib.rs @@ -8,7 +8,7 @@ extern crate ipc_channel; extern crate regex; #[macro_use] extern crate serde_derive; -extern crate util; +extern crate servo_config; pub mod blocklist; pub mod scanfilter; diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 41debc4a83a..682e19415b1 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -19,7 +19,7 @@ log = "0.3.5" num-traits = "0.1.32" offscreen_gl_context = "0.5.0" plugins = {path = "../plugins"} -util = {path = "../util"} +servo_config = {path = "../config"} [dependencies.webrender_traits] git = "https://github.com/servo/webrender" diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index 26863482a99..cfc1a11388b 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -15,7 +15,7 @@ use ipc_channel::ipc::{self, IpcSender}; use num_traits::ToPrimitive; use std::borrow::ToOwned; use std::mem; -use util::thread::spawn_named; +use std::thread; use webrender_traits; impl<'a> CanvasPaintThread<'a> { @@ -121,7 +121,7 @@ impl<'a> CanvasPaintThread<'a> { antialias: bool) -> IpcSender<CanvasMsg> { let (sender, receiver) = ipc::channel::<CanvasMsg>().unwrap(); - spawn_named("CanvasThread".to_owned(), move || { + thread::Builder::new().name("CanvasThread".to_owned()).spawn(move || { let mut painter = CanvasPaintThread::new(size, webrender_api_sender, antialias); loop { let msg = receiver.recv(); @@ -211,7 +211,7 @@ impl<'a> CanvasPaintThread<'a> { CanvasMsg::WebGL(_) => panic!("Wrong message sent to Canvas2D thread"), } } - }); + }).expect("Thread spawning failed"); sender } diff --git a/components/canvas/lib.rs b/components/canvas/lib.rs index 752207aa127..25bbed7f4dd 100644 --- a/components/canvas/lib.rs +++ b/components/canvas/lib.rs @@ -17,7 +17,7 @@ extern crate ipc_channel; extern crate log; extern crate num_traits; extern crate offscreen_gl_context; -extern crate util; +extern crate servo_config; extern crate webrender_traits; pub mod canvas_paint_thread; diff --git a/components/canvas/webgl_paint_thread.rs b/components/canvas/webgl_paint_thread.rs index 8a080aa639a..09287d7eb67 100644 --- a/components/canvas/webgl_paint_thread.rs +++ b/components/canvas/webgl_paint_thread.rs @@ -9,10 +9,10 @@ use gleam::gl; use ipc_channel::ipc::{self, IpcSender}; use offscreen_gl_context::{ColorAttachmentType, GLContext, GLLimits}; use offscreen_gl_context::{GLContextAttributes, NativeGLContext, OSMesaContext}; +use servo_config::opts; use std::borrow::ToOwned; use std::sync::mpsc::channel; -use util::opts; -use util::thread::spawn_named; +use std::thread; use webrender_traits; enum GLContextWrapper { @@ -151,7 +151,7 @@ impl WebGLPaintThread { -> Result<(IpcSender<CanvasMsg>, GLLimits), String> { let (sender, receiver) = ipc::channel::<CanvasMsg>().unwrap(); let (result_chan, result_port) = channel(); - spawn_named("WebGLThread".to_owned(), move || { + thread::Builder::new().name("WebGLThread".to_owned()).spawn(move || { let mut painter = match WebGLPaintThread::new(size, attrs, webrender_api_sender) { Ok((thread, limits)) => { result_chan.send(Ok(limits)).unwrap(); @@ -191,7 +191,7 @@ impl WebGLPaintThread { CanvasMsg::Canvas2d(_) => panic!("Wrong message sent to WebGLThread"), } } - }); + }).expect("Thread spawning failed"); result_port.recv().unwrap().map(|limits| (sender, limits)) } diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index 1ba3aa39eb8..37309714e50 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -23,10 +23,11 @@ profile_traits = {path = "../profile_traits"} script_traits = {path = "../script_traits"} serde = "0.8" serde_derive = "0.8" +servo_config = {path = "../config", features = ["servo"]} +servo_geometry = {path = "../geometry", features = ["servo"]} servo_url = {path = "../url", features = ["servo"]} style_traits = {path = "../style_traits"} time = "0.1.17" -util = {path = "../util"} [dependencies.webrender] git = "https://github.com/servo/webrender" diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 4d8cffb7518..f3627937ba9 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -26,6 +26,9 @@ use script_traits::{ConstellationMsg, LayoutControlMsg, LoadData, MouseButton}; use script_traits::{MouseEventType, StackingContextScrollState}; use script_traits::{TouchpadPressurePhase, TouchEventType, TouchId, WindowSizeData, WindowSizeType}; use script_traits::CompositorEvent::{self, MouseMoveEvent, MouseButtonEvent, TouchEvent, TouchpadPressureEvent}; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_geometry::ScreenPx; use servo_url::ServoUrl; use std::collections::HashMap; use std::fs::File; @@ -36,9 +39,6 @@ use style_traits::{PagePx, ViewportPx}; use style_traits::viewport::ViewportConstraints; use time::{precise_time_ns, precise_time_s}; use touch::{TouchHandler, TouchAction}; -use util::geometry::ScreenPx; -use util::opts; -use util::prefs::PREFS; use webrender; use webrender_traits::{self, ScrollEventPhase, ServoScrollRootId}; use windowing::{self, MouseWindowEvent, WindowEvent, WindowMethods, WindowNavigateMsg}; diff --git a/components/compositing/lib.rs b/components/compositing/lib.rs index c5b98a6e679..781f4c4f868 100644 --- a/components/compositing/lib.rs +++ b/components/compositing/lib.rs @@ -23,11 +23,11 @@ extern crate profile_traits; extern crate script_traits; #[macro_use] extern crate serde_derive; +extern crate servo_config; +extern crate servo_geometry; extern crate servo_url; extern crate style_traits; extern crate time; -#[macro_use] -extern crate util; extern crate webrender; extern crate webrender_traits; diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index 33eed7630cc..a6933ce92fd 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -13,10 +13,10 @@ use gfx_traits::DevicePixel; use msg::constellation_msg::{Key, KeyModifiers, KeyState}; use net_traits::net_error_list::NetError; use script_traits::{MouseButton, TouchEventType, TouchId, TouchpadPressurePhase}; +use servo_geometry::ScreenPx; use servo_url::ServoUrl; use std::fmt::{Debug, Error, Formatter}; use style_traits::cursor::Cursor; -use util::geometry::ScreenPx; #[derive(Clone)] pub enum MouseWindowEvent { diff --git a/components/util/Cargo.toml b/components/config/Cargo.toml index 2f9ee4486cf..1ef60b64382 100644 --- a/components/util/Cargo.toml +++ b/components/config/Cargo.toml @@ -1,31 +1,29 @@ [package] -name = "util" +name = "servo_config" version = "0.0.1" authors = ["The Servo Project Developers"] license = "MPL-2.0" publish = false [lib] -name = "util" +name = "servo_config" path = "lib.rs" [features] # servo as opposed to geckolib -servo = ["serde", "serde_derive", "app_units/plugins", - "euclid/unstable", "url/heap_size", "url/serde", "plugins"] +servo = ["serde", "serde_derive", "url/heap_size", "url/serde", "plugins"] [dependencies] -app_units = "0.3" bitflags = "0.7" euclid = "0.10.1" getopts = "0.2.11" -heapsize = "0.3.0" lazy_static = "0.2" log = "0.3.5" num_cpus = "1.1.0" rustc-serialize = "0.3" serde = {version = "0.8", optional = true} serde_derive = {version = "0.8", optional = true} +servo_geometry = {path = "../geometry"} servo_url = {path = "../url"} plugins = {path = "../plugins", optional = true} url = "1.2" diff --git a/components/util/basedir.rs b/components/config/basedir.rs index 5c7896a388b..5c7896a388b 100644 --- a/components/util/basedir.rs +++ b/components/config/basedir.rs diff --git a/components/util/lib.rs b/components/config/lib.rs index 3c72d90d257..e4df206f47a 100644 --- a/components/util/lib.rs +++ b/components/config/lib.rs @@ -2,37 +2,32 @@ * 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/. */ -#![cfg_attr(feature = "servo", feature(nonzero))] #![cfg_attr(feature = "servo", feature(plugin))] #![cfg_attr(feature = "servo", feature(proc_macro))] #![cfg_attr(feature = "servo", plugin(plugins))] #![deny(unsafe_code)] -extern crate app_units; #[allow(unused_extern_crates)] #[macro_use] extern crate bitflags; extern crate core; -#[macro_use] extern crate euclid; +extern crate euclid; extern crate getopts; -#[macro_use] extern crate heapsize; #[allow(unused_extern_crates)] #[macro_use] extern crate lazy_static; #[macro_use] extern crate log; extern crate num_cpus; extern crate rustc_serialize; #[cfg(feature = "servo")] extern crate serde; #[cfg(feature = "servo")] #[macro_use] extern crate serde_derive; +extern crate servo_geometry; extern crate servo_url; extern crate url; #[cfg(all(unix, not(target_os = "macos"), not(target_os = "ios"), not(target_os = "android")))] extern crate xdg; pub mod basedir; -pub mod geometry; #[allow(unsafe_code)] pub mod opts; pub mod prefs; -#[cfg(feature = "servo")] pub mod remutex; pub mod resource_files; -pub mod thread; pub fn servo_version() -> String { let cargo_version = env!("CARGO_PKG_VERSION"); @@ -42,13 +37,3 @@ pub fn servo_version() -> String { None => format!("Servo {}", cargo_version), } } - -pub fn clamp<T: Ord>(lo: T, mid: T, hi: T) -> T { - if mid < lo { - lo - } else if mid > hi { - hi - } else { - mid - } -} diff --git a/components/util/opts.rs b/components/config/opts.rs index 4f1db5d8c50..a59cd56f0d7 100644 --- a/components/util/opts.rs +++ b/components/config/opts.rs @@ -6,11 +6,11 @@ //! from command line arguments. use euclid::size::TypedSize2D; -use geometry::ScreenPx; use getopts::Options; use num_cpus; use prefs::{self, PrefValue, PREFS}; use resource_files::set_resources_path; +use servo_geometry::ScreenPx; use servo_url::ServoUrl; use std::borrow::Cow; use std::cmp; diff --git a/components/util/prefs.rs b/components/config/prefs.rs index c0ad11bfe0b..c0ad11bfe0b 100644 --- a/components/util/prefs.rs +++ b/components/config/prefs.rs diff --git a/components/util/resource_files.rs b/components/config/resource_files.rs index 4a155ecf51e..4a155ecf51e 100644 --- a/components/util/resource_files.rs +++ b/components/config/resource_files.rs diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml index 1734ec27df8..d919cd63af3 100644 --- a/components/constellation/Cargo.toml +++ b/components/constellation/Cargo.toml @@ -33,8 +33,9 @@ script_traits = {path = "../script_traits"} serde = "0.8" serde_derive = "0.8" style_traits = {path = "../style_traits"} +servo_config = {path = "../config", features = ["servo"]} +servo_remutex = {path = "../remutex"} servo_url = {path = "../url", features = ["servo"]} -util = {path = "../util"} [dependencies.webrender_traits] git = "https://github.com/servo/webrender" diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index 2e6b5071d41..22ed1842441 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -47,6 +47,9 @@ use script_traits::{LayoutMsg as FromLayoutMsg, ScriptMsg as FromScriptMsg, Scri use script_traits::{LogEntry, ServiceWorkerMsg, webdriver_msg}; use script_traits::{MozBrowserErrorType, MozBrowserEvent, WebDriverCommandMsg, WindowSizeData}; use script_traits::{SWManagerMsg, ScopeThings, WindowSizeType}; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_remutex::ReentrantMutex; use servo_url::ServoUrl; use std::borrow::ToOwned; use std::collections::{HashMap, VecDeque}; @@ -64,10 +67,6 @@ use style_traits::PagePx; use style_traits::cursor::Cursor; use style_traits::viewport::ViewportConstraints; use timer_scheduler::TimerScheduler; -use util::opts; -use util::prefs::PREFS; -use util::remutex::ReentrantMutex; -use util::thread::spawn_named; use webrender_traits; #[derive(Debug, PartialEq)] @@ -505,7 +504,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF> let (swmanager_sender, swmanager_receiver) = ipc::channel().expect("ipc channel failure"); let sw_mgr_clone = swmanager_sender.clone(); - spawn_named("Constellation".to_owned(), move || { + thread::Builder::new().name("Constellation".to_owned()).spawn(move || { let (ipc_script_sender, ipc_script_receiver) = ipc::channel().expect("ipc channel failure"); let script_receiver = ROUTER.route_ipc_receiver_to_new_mpsc_receiver(ipc_script_receiver); @@ -568,7 +567,8 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF> }; constellation.run(); - }); + }).expect("Thread spawning failed"); + (compositor_sender, swmanager_sender) } diff --git a/components/constellation/lib.rs b/components/constellation/lib.rs index 7d455d954b2..5a731311a7f 100644 --- a/components/constellation/lib.rs +++ b/components/constellation/lib.rs @@ -36,10 +36,10 @@ extern crate script_traits; extern crate serde; #[macro_use] extern crate serde_derive; +extern crate servo_config; +extern crate servo_remutex; extern crate servo_url; extern crate style_traits; -#[macro_use] -extern crate util; extern crate webrender_traits; mod constellation; diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs index 9784a68d57d..4f898e0377b 100644 --- a/components/constellation/pipeline.rs +++ b/components/constellation/pipeline.rs @@ -24,6 +24,8 @@ use script_traits::{ConstellationControlMsg, InitialScriptState}; use script_traits::{LayoutControlMsg, LayoutMsg, LoadData, MozBrowserEvent}; use script_traits::{NewLayoutInfo, SWManagerMsg, SWManagerSenders, ScriptMsg}; use script_traits::{ScriptThreadFactory, TimerEventRequest, WindowSizeData}; +use servo_config::opts::{self, Opts}; +use servo_config::prefs::{PREFS, Pref}; use servo_url::ServoUrl; use std::collections::HashMap; use std::env; @@ -33,8 +35,6 @@ use std::process; use std::rc::Rc; use std::sync::mpsc::Sender; use style_traits::{PagePx, ViewportPx}; -use util::opts::{self, Opts}; -use util::prefs::{PREFS, Pref}; use webrender_traits; /// A uniquely-identifiable pipeline of script thread, layout thread, and paint thread. diff --git a/components/constellation/sandboxing.rs b/components/constellation/sandboxing.rs index 380155b562f..a51fd4b8ef1 100644 --- a/components/constellation/sandboxing.rs +++ b/components/constellation/sandboxing.rs @@ -3,8 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use gaol::profile::{Operation, PathPattern, Profile}; +use servo_config::resource_files; use std::path::PathBuf; -use util::resource_files; /// Our content process sandbox profile on Mac. As restrictive as possible. #[cfg(target_os = "macos")] diff --git a/components/debugger/Cargo.toml b/components/debugger/Cargo.toml index e9b097e5963..b9385d80e1e 100644 --- a/components/debugger/Cargo.toml +++ b/components/debugger/Cargo.toml @@ -12,7 +12,6 @@ crate_type = ["rlib"] [dependencies] log = "0.3.5" -util = {path = "../util"} [target.'cfg(not(target_os = "android"))'.dependencies] ws = "0.5.3" diff --git a/components/debugger/lib.rs b/components/debugger/lib.rs index 25983561d5d..25b3c4890a6 100644 --- a/components/debugger/lib.rs +++ b/components/debugger/lib.rs @@ -4,13 +4,12 @@ #[macro_use] extern crate log; -extern crate util; #[cfg(not(target_os = "android"))] extern crate ws; use std::sync::mpsc; use std::sync::mpsc::channel; -use util::thread::spawn_named; +use std::thread; #[cfg(not(target_os = "android"))] use ws::{Builder, CloseCode, Handler, Handshake}; @@ -45,14 +44,14 @@ impl Handler for Connection { pub fn start_server(port: u16) -> Sender { debug!("Starting server."); let (sender, receiver) = channel(); - spawn_named("debugger".to_owned(), move || { + thread::Builder::new().name("debugger".to_owned()).spawn(move || { let socket = Builder::new().build(|sender: ws::Sender| { Connection { sender: sender } }).unwrap(); let sender = socket.broadcaster(); - spawn_named("debugger-websocket".to_owned(), move || { + thread::Builder::new().name("debugger-websocket".to_owned()).spawn(move || { socket.listen(("127.0.0.1", port)).unwrap(); - }); + }).expect("Thread spawning failed"); while let Ok(message) = receiver.recv() { match message { Message::ShutdownServer => { @@ -61,7 +60,7 @@ pub fn start_server(port: u16) -> Sender { } } sender.shutdown().unwrap(); - }); + }).expect("Thread spawning failed"); Sender(sender) } diff --git a/components/devtools/Cargo.toml b/components/devtools/Cargo.toml index caa5f1755b3..e6b877f1e6d 100644 --- a/components/devtools/Cargo.toml +++ b/components/devtools/Cargo.toml @@ -22,4 +22,3 @@ serde = "0.8" serde_json = "0.8" serde_derive = "0.8" time = "0.1" -util = {path = "../util"} diff --git a/components/devtools/actors/timeline.rs b/components/devtools/actors/timeline.rs index 0d495faf7c2..6285faafabf 100644 --- a/components/devtools/actors/timeline.rs +++ b/components/devtools/actors/timeline.rs @@ -19,7 +19,6 @@ use std::net::TcpStream; use std::sync::{Arc, Mutex}; use std::thread; use std::time::Duration; -use util::thread::spawn_named; pub struct TimelineActor { name: String, @@ -150,7 +149,7 @@ impl TimelineActor { return; } - spawn_named("PullTimelineMarkers".to_owned(), move || { + thread::Builder::new().name("PullTimelineMarkers".to_owned()).spawn(move || { loop { if !*is_recording.lock().unwrap() { break; @@ -164,7 +163,7 @@ impl TimelineActor { thread::sleep(Duration::from_millis(DEFAULT_TIMELINE_DATA_PULL_TIMEOUT)); } - }); + }).expect("Thread spawning failed"); } } diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index 815bee12a88..c98bb270333 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -30,7 +30,6 @@ extern crate serde; extern crate serde_derive; extern crate serde_json; extern crate time; -extern crate util; use actor::{Actor, ActorRegistry}; use actors::console::ConsoleActor; @@ -57,8 +56,8 @@ use std::collections::hash_map::Entry::{Occupied, Vacant}; use std::net::{Shutdown, TcpListener, TcpStream}; use std::sync::{Arc, Mutex}; use std::sync::mpsc::{Receiver, Sender, channel}; +use std::thread; use time::precise_time_ns; -use util::thread::spawn_named; mod actor; /// Corresponds to http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/ @@ -137,9 +136,9 @@ pub fn start_server(port: u16) -> Sender<DevtoolsControlMsg> { let (sender, receiver) = channel(); { let sender = sender.clone(); - spawn_named("Devtools".to_owned(), move || { + thread::Builder::new().name("Devtools".to_owned()).spawn(move || { run_server(sender, receiver, port) - }); + }).expect("Thread spawning failed"); } sender } @@ -485,23 +484,23 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, } let sender_clone = sender.clone(); - spawn_named("DevtoolsClientAcceptor".to_owned(), move || { + thread::Builder::new().name("DevtoolsClientAcceptor".to_owned()).spawn(move || { // accept connections and process them, spawning a new thread for each one for stream in listener.incoming() { // connection succeeded sender_clone.send(DevtoolsControlMsg::FromChrome( ChromeToDevtoolsControlMsg::AddClient(stream.unwrap()))).unwrap(); } - }); + }).expect("Thread spawning failed"); while let Ok(msg) = receiver.recv() { match msg { DevtoolsControlMsg::FromChrome(ChromeToDevtoolsControlMsg::AddClient(stream)) => { let actors = actors.clone(); accepted_connections.push(stream.try_clone().unwrap()); - spawn_named("DevtoolsClientHandler".to_owned(), move || { + thread::Builder::new().name("DevtoolsClientHandler".to_owned()).spawn(move || { handle_client(actors, stream.try_clone().unwrap()) - }) + }).expect("Thread spawning failed"); } DevtoolsControlMsg::FromScript(ScriptToDevtoolsControlMsg::FramerateTick( actor_name, tick)) => diff --git a/components/geometry/Cargo.toml b/components/geometry/Cargo.toml new file mode 100644 index 00000000000..28480439060 --- /dev/null +++ b/components/geometry/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "servo_geometry" +version = "0.0.1" +authors = ["The Servo Project Developers"] +license = "MPL-2.0" +publish = false + +[lib] +name = "servo_geometry" +path = "lib.rs" + +[features] +# servo as opposed to geckolib +servo = ["app_units/plugins", "euclid/unstable"] + +[dependencies] +app_units = "0.3" +euclid = "0.10.1" +heapsize = "0.3.0" diff --git a/components/util/geometry.rs b/components/geometry/lib.rs index 2d102d2d0dc..52fcd420c0e 100644 --- a/components/util/geometry.rs +++ b/components/geometry/lib.rs @@ -2,6 +2,10 @@ * 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/. */ +extern crate app_units; +#[macro_use] extern crate euclid; +#[macro_use] extern crate heapsize; + use app_units::{Au, MAX_AU}; use euclid::point::Point2D; use euclid::rect::Rect; diff --git a/components/gfx/Cargo.toml b/components/gfx/Cargo.toml index c61b2072f15..81bcb81268e 100644 --- a/components/gfx/Cargo.toml +++ b/components/gfx/Cargo.toml @@ -32,6 +32,7 @@ range = {path = "../range"} rustc-serialize = "0.3" serde = "0.8" servo_atoms = {path = "../atoms"} +servo_geometry = {path = "../geometry"} servo_url = {path = "../url"} serde_derive = "0.8" smallvec = "0.1" @@ -39,7 +40,6 @@ style = {path = "../style"} style_traits = {path = "../style_traits"} time = "0.1.12" unicode-script = {version = "0.1", features = ["harfbuzz"]} -util = {path = "../util"} xi-unicode = "0.0.1" [dependencies.webrender_traits] diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs index ab8f1ba7a8f..eeb78f9f9e7 100644 --- a/components/gfx/display_list/mod.rs +++ b/components/gfx/display_list/mod.rs @@ -25,6 +25,7 @@ use ipc_channel::ipc::IpcSharedMemory; use msg::constellation_msg::PipelineId; use net_traits::image::base::{Image, PixelFormat}; use range::Range; +use servo_geometry::{au_rect_to_f32_rect, f32_rect_to_au_rect, max_rect}; use std::cmp::{self, Ordering}; use std::collections::HashMap; use std::fmt; @@ -33,7 +34,6 @@ use style::computed_values::{border_style, filter, image_rendering, mix_blend_mo use style_traits::cursor::Cursor; use text::TextRun; use text::glyph::ByteIndex; -use util::geometry::{self, max_rect}; use webrender_traits::{self, ColorF, GradientStop, WebGLContextId}; pub use style::dom::OpaqueNode; @@ -397,9 +397,9 @@ impl StackingContext { .pre_mul(&self.transform); let transform_2d = transform.to_2d(); - let overflow = geometry::au_rect_to_f32_rect(self.overflow); + let overflow = au_rect_to_f32_rect(self.overflow); let overflow = transform_2d.transform_rect(&overflow); - geometry::f32_rect_to_au_rect(overflow) + f32_rect_to_au_rect(overflow) } pub fn print_with_tree(&self, print_tree: &mut PrintTree) { diff --git a/components/gfx/font_cache_thread.rs b/components/gfx/font_cache_thread.rs index edad5aa56d1..e210d47998f 100644 --- a/components/gfx/font_cache_thread.rs +++ b/components/gfx/font_cache_thread.rs @@ -21,10 +21,10 @@ use std::collections::HashMap; use std::mem; use std::ops::Deref; use std::sync::{Arc, Mutex}; +use std::thread; use std::u32; use style::font_face::{EffectiveSources, Source}; use style::properties::longhands::font_family::computed_value::FontFamily; -use util::thread::spawn_named; use webrender_traits; /// A list of font templates that make up a given font family. @@ -396,7 +396,7 @@ impl FontCacheThread { let (chan, port) = ipc::channel().unwrap(); let channel_to_self = chan.clone(); - spawn_named("FontCacheThread".to_owned(), move || { + thread::Builder::new().name("FontCacheThread".to_owned()).spawn(move || { // TODO: Allow users to specify these. let generic_fonts = populate_generic_fonts(); @@ -414,7 +414,7 @@ impl FontCacheThread { cache.refresh_local_families(); cache.run(); - }); + }).expect("Thread spawning failed"); FontCacheThread { chan: chan, diff --git a/components/gfx/lib.rs b/components/gfx/lib.rs index 32fd79875ea..3095074b126 100644 --- a/components/gfx/lib.rs +++ b/components/gfx/lib.rs @@ -63,6 +63,7 @@ extern crate rustc_serialize; extern crate serde; #[macro_use] extern crate serde_derive; +extern crate servo_geometry; extern crate servo_url; #[macro_use] extern crate servo_atoms; #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] @@ -72,7 +73,6 @@ extern crate style; extern crate style_traits; extern crate time; extern crate unicode_script; -extern crate util; extern crate webrender_traits; extern crate xi_unicode; diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index 6443c4a6aa3..9196f559afa 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -39,13 +39,13 @@ serde = "0.8" serde_derive = "0.8" serde_json = "0.8" servo_atoms = {path = "../atoms"} +servo_config = {path = "../config"} servo_url = {path = "../url"} smallvec = "0.1" style = {path = "../style"} style_traits = {path = "../style_traits"} unicode-bidi = "0.2" unicode-script = {version = "0.1", features = ["harfbuzz"]} -util = {path = "../util"} [dependencies.webrender_traits] git = "https://github.com/servo/webrender" diff --git a/components/layout/block.rs b/components/layout/block.rs index 6db30de9bec..9d38627b80f 100644 --- a/components/layout/block.rs +++ b/components/layout/block.rs @@ -61,7 +61,6 @@ use style::properties::ServoComputedValues; use style::servo::restyle_damage::{BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, REPOSITION}; use style::values::computed::{LengthOrPercentageOrNone, LengthOrPercentage}; use style::values::computed::LengthOrPercentageOrAuto; -use util::clamp; /// Information specific to floated blocks. #[derive(Clone, Serialize)] @@ -1534,7 +1533,7 @@ impl BlockFlow { size + self.fragment.border_padding.inline_start_end(), } } else { - clamp(min_inline_size, available_inline_size, max_inline_size) + max(min_inline_size, min(available_inline_size, max_inline_size)) }; self.base.position.size.inline = inline_size + self.fragment.margin.inline_start_end(); diff --git a/components/layout/construct.rs b/components/layout/construct.rs index b25923d19c2..394b5d91fcf 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -38,6 +38,7 @@ use multicol::{MulticolColumnFlow, MulticolFlow}; use parallel; use script_layout_interface::{LayoutElementType, LayoutNodeType, is_image_data}; use script_layout_interface::wrapper_traits::{PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode}; +use servo_config::opts; use servo_url::ServoUrl; use std::borrow::ToOwned; use std::collections::LinkedList; @@ -64,7 +65,6 @@ use table_rowgroup::TableRowGroupFlow; use table_wrapper::TableWrapperFlow; use text::TextRunScanner; use traversal::PostorderNodeMutTraversal; -use util::opts; use wrapper::{LayoutNodeLayoutData, TextContent, ThreadSafeLayoutNodeHelpers}; /// The results of flow construction for a DOM node. diff --git a/components/layout/context.rs b/components/layout/context.rs index b8d7c8680df..23ec3e41d88 100644 --- a/components/layout/context.rs +++ b/components/layout/context.rs @@ -17,6 +17,7 @@ use net_traits::image::base::Image; use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheThread, ImageResponse, ImageState}; use net_traits::image_cache_thread::{ImageOrMetadataAvailable, UsePlaceholder}; use parking_lot::RwLock; +use servo_config::opts; use servo_url::ServoUrl; use std::borrow::Borrow; use std::cell::{RefCell, RefMut}; @@ -25,7 +26,6 @@ use std::hash::BuildHasherDefault; use std::rc::Rc; use std::sync::{Arc, Mutex}; use style::context::{LocalStyleContext, StyleContext, SharedStyleContext}; -use util::opts; struct LocalLayoutContext { style_context: LocalStyleContext, diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index 60b1ecedc19..f2534729e5f 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -35,6 +35,7 @@ use model::{self, MaybeAuto, ToGfxMatrix}; use net_traits::image::base::PixelFormat; use net_traits::image_cache_thread::UsePlaceholder; use range::Range; +use servo_config::opts; use servo_url::ServoUrl; use std::{cmp, f32}; use std::collections::HashMap; @@ -57,7 +58,6 @@ use style::values::computed::{Gradient, GradientKind, LengthOrPercentage, Length use style::values::specified::{AngleOrCorner, HorizontalDirection, VerticalDirection}; use style_traits::cursor::Cursor; use table_cell::CollapsedBordersForCell; -use util::opts; use webrender_traits::{ColorF, GradientStop}; trait RgbColor { diff --git a/components/layout/lib.rs b/components/layout/lib.rs index a74bea33431..b2aaa006a2a 100644 --- a/components/layout/lib.rs +++ b/components/layout/lib.rs @@ -49,13 +49,13 @@ extern crate serde; extern crate serde_derive; extern crate serde_json; #[macro_use] extern crate servo_atoms; +extern crate servo_config; extern crate servo_url; extern crate smallvec; extern crate style; extern crate style_traits; extern crate unicode_bidi; extern crate unicode_script; -extern crate util; extern crate webrender_traits; #[macro_use] diff --git a/components/layout/parallel.rs b/components/layout/parallel.rs index 03aaa512d3e..6422ab674a9 100644 --- a/components/layout/parallel.rs +++ b/components/layout/parallel.rs @@ -13,13 +13,13 @@ use flow::{self, Flow, MutableFlowUtils, PostorderFlowTraversal, PreorderFlowTra use flow_ref::FlowRef; use profile_traits::time::{self, TimerMetadata, profile}; use rayon; +use servo_config::opts; use std::mem; use std::sync::atomic::{AtomicIsize, Ordering}; use style::dom::UnsafeNode; use style::parallel::CHUNK_SIZE; use traversal::{AssignISizes, BubbleISizes}; use traversal::AssignBSizes; -use util::opts; pub use style::parallel::traverse_dom; diff --git a/components/layout/sequential.rs b/components/layout/sequential.rs index 71626243206..b4d31269629 100644 --- a/components/layout/sequential.rs +++ b/components/layout/sequential.rs @@ -15,10 +15,10 @@ use flow::IS_ABSOLUTELY_POSITIONED; use fragment::FragmentBorderBoxIterator; use generated_content::ResolveGeneratedContent; use gfx_traits::ScrollRootId; +use servo_config::opts; use style::context::StyleContext; use style::servo::restyle_damage::{REFLOW, STORE_OVERFLOW}; use traversal::{AssignBSizes, AssignISizes, BubbleISizes, BuildDisplayList}; -use util::opts; pub use style::sequential::traverse_dom; diff --git a/components/layout/traversal.rs b/components/layout/traversal.rs index 04ea73056aa..bda40df574f 100644 --- a/components/layout/traversal.rs +++ b/components/layout/traversal.rs @@ -11,6 +11,7 @@ use flow::{self, PreorderFlowTraversal}; use flow::{CAN_BE_FRAGMENTED, Flow, ImmutableFlowUtils, PostorderFlowTraversal}; use gfx::display_list::OpaqueNode; use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutNode}; +use servo_config::opts; use std::mem; use style::atomic_refcell::AtomicRefCell; use style::context::{LocalStyleContext, SharedStyleContext, StyleContext}; @@ -20,7 +21,6 @@ use style::selector_parser::RestyleDamage; use style::servo::restyle_damage::{BUBBLE_ISIZES, REFLOW, REFLOW_OUT_OF_FLOW, REPAINT}; use style::traversal::{DomTraversalContext, recalc_style_at, remove_from_bloom_filter}; use style::traversal::PerLevelTraversalData; -use util::opts; use wrapper::{GetRawData, LayoutNodeHelpers, LayoutNodeLayoutData}; pub struct RecalcStyleAndConstructFlows<'lc> { diff --git a/components/layout_thread/Cargo.toml b/components/layout_thread/Cargo.toml index 3f750cf70fa..b145d71ea44 100644 --- a/components/layout_thread/Cargo.toml +++ b/components/layout_thread/Cargo.toml @@ -34,9 +34,10 @@ script_traits = {path = "../script_traits"} selectors = "0.15" serde_derive = "0.8" serde_json = "0.8" +servo_config = {path = "../config"} +servo_geometry = {path = "../geometry"} servo_url = {path = "../url"} style = {path = "../style"} -util = {path = "../util"} [dependencies.webrender_traits] git = "https://github.com/servo/webrender" diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index ea834095e6e..f44207cb367 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -40,9 +40,10 @@ extern crate script_layout_interface; extern crate script_traits; extern crate selectors; extern crate serde_json; +extern crate servo_config; +extern crate servo_geometry; extern crate servo_url; extern crate style; -extern crate util; extern crate webrender_traits; use app_units::Au; @@ -94,6 +95,10 @@ use script_layout_interface::wrapper_traits::LayoutNode; use script_traits::{ConstellationControlMsg, LayoutControlMsg, LayoutMsg as ConstellationMsg}; use script_traits::{StackingContextScrollState, UntrustedNodeAddress}; use selectors::Element; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_config::resource_files::read_resource_file; +use servo_geometry::max_rect; use servo_url::ServoUrl; use std::borrow::ToOwned; use std::collections::HashMap; @@ -103,6 +108,7 @@ use std::process; use std::sync::{Arc, Mutex, MutexGuard}; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::mpsc::{Receiver, Sender, channel}; +use std::thread; use style::animation::Animation; use style::context::{LocalStyleContextCreationInfo, ReflowGoal, SharedStyleContext}; use style::data::StoredRestyleHint; @@ -117,11 +123,6 @@ use style::stylist::Stylist; use style::thread_state; use style::timer::Timer; use style::traversal::DomTraversalContext; -use util::geometry::max_rect; -use util::opts; -use util::prefs::PREFS; -use util::resource_files::read_resource_file; -use util::thread; /// Information needed by the layout thread. pub struct LayoutThread { @@ -229,7 +230,7 @@ pub struct LayoutThread { /// only be a test-mode timer during testing for animations. timer: Timer, - // Number of layout threads. This is copied from `util::opts`, but we'd + // Number of layout threads. This is copied from `servo_config::opts`, but we'd // rather limit the dependency on that module here. layout_threads: usize, } @@ -253,8 +254,7 @@ impl LayoutThreadFactory for LayoutThread { content_process_shutdown_chan: Option<IpcSender<()>>, webrender_api_sender: webrender_traits::RenderApiSender, layout_threads: usize) { - thread::spawn_named(format!("LayoutThread {:?}", id), - move || { + thread::Builder::new().name(format!("LayoutThread {:?}", id)).spawn(move || { thread_state::initialize(thread_state::LAYOUT); if let Some(top_level_frame_id) = top_level_frame_id { @@ -285,7 +285,7 @@ impl LayoutThreadFactory for LayoutThread { if let Some(content_process_shutdown_chan) = content_process_shutdown_chan { let _ = content_process_shutdown_chan.send(()); } - }); + }).expect("Thread spawning failed"); } } diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml index 758f9b3aa20..a6949734bf3 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml @@ -34,12 +34,12 @@ profile_traits = {path = "../profile_traits"} rustc-serialize = "0.3" serde = "0.8" serde_derive = "0.8" +servo_config = {path = "../config"} servo_url = {path = "../url"} threadpool = "1.0" time = "0.1.17" unicase = "1.4.0" url = {version = "1.2", features = ["heap_size", "rustc-serialize"]} -util = {path = "../util"} uuid = {version = "0.3.1", features = ["v4"]} websocket = "0.17" diff --git a/components/net/chrome_loader.rs b/components/net/chrome_loader.rs index 6ddb096548a..83b5b59da4a 100644 --- a/components/net/chrome_loader.rs +++ b/components/net/chrome_loader.rs @@ -2,10 +2,10 @@ * 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 servo_config::resource_files::resources_dir_path; use servo_url::ServoUrl; use std::fs::canonicalize; use url::percent_encoding::percent_decode; -use util::resource_files::resources_dir_path; pub fn resolve_chrome_url(url: &ServoUrl) -> Result<ServoUrl, ()> { assert_eq!(url.scheme(), "chrome"); diff --git a/components/net/connector.rs b/components/net/connector.rs index 4040c929dc5..3e4a8071f28 100644 --- a/components/net/connector.rs +++ b/components/net/connector.rs @@ -6,8 +6,8 @@ use hyper::client::Pool; use hyper::net::{HttpStream, HttpsConnector, SslClient}; use openssl::ssl::{SSL_OP_NO_COMPRESSION, SSL_OP_NO_SSLV2, SSL_OP_NO_SSLV3, SSL_VERIFY_PEER}; use openssl::ssl::{Ssl, SslContext, SslMethod, SslStream}; +use servo_config::resource_files::resources_dir_path; use std::sync::Arc; -use util::resource_files::resources_dir_path; pub type Connector = HttpsConnector<ServoSslClient>; diff --git a/components/net/content_blocker.rs b/components/net/content_blocker.rs index c30961263dc..eb7f8e1a130 100644 --- a/components/net/content_blocker.rs +++ b/components/net/content_blocker.rs @@ -3,9 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use content_blocker_parser::{RuleList, parse_list}; +use servo_config::resource_files::read_resource_file; use std::str; use std::sync::Arc; -use util::resource_files::read_resource_file; lazy_static! { pub static ref BLOCKED_CONTENT_RULES: Arc<Option<RuleList>> = Arc::new(create_rule_list()); diff --git a/components/net/filemanager_thread.rs b/components/net/filemanager_thread.rs index 641b1394539..0fa1aeeca9c 100644 --- a/components/net/filemanager_thread.rs +++ b/components/net/filemanager_thread.rs @@ -7,6 +7,7 @@ use mime_guess::guess_mime_type_opt; use net_traits::blob_url_store::{BlobBuf, BlobURLStoreError}; use net_traits::filemanager_thread::{FileManagerResult, FileManagerThreadMsg, FileOrigin, FilterPattern}; use net_traits::filemanager_thread::{FileManagerThreadError, ReadFileProgress, RelativePos, SelectedFile}; +use servo_config::prefs::PREFS; use std::collections::HashMap; use std::fs::File; use std::io::{Read, Seek, SeekFrom}; @@ -14,11 +15,10 @@ use std::ops::Index; use std::path::{Path, PathBuf}; use std::sync::{Arc, RwLock}; use std::sync::atomic::{self, AtomicBool, AtomicUsize, Ordering}; +use std::thread; #[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))] use tinyfiledialogs; use url::Url; -use util::prefs::PREFS; -use util::thread::spawn_named; use uuid::Uuid; /// The provider of file-dialog UI should implement this trait. @@ -129,12 +129,12 @@ impl FileManager { check_url_validity: bool, origin: FileOrigin) { let store = self.store.clone(); - spawn_named("read file".to_owned(), move || { + thread::Builder::new().name("read file".to_owned()).spawn(move || { if let Err(e) = store.try_read_file(&sender, id, check_url_validity, origin) { let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e))); } - }) + }).expect("Thread spawning failed"); } pub fn promote_memory(&self, @@ -143,9 +143,9 @@ impl FileManager { sender: IpcSender<Result<Uuid, BlobURLStoreError>>, origin: FileOrigin) { let store = self.store.clone(); - spawn_named("transfer memory".to_owned(), move || { + thread::Builder::new().name("transfer memory".to_owned()).spawn(move || { store.promote_memory(blob_buf, set_valid, sender, origin); - }) + }).expect("Thread spawning failed"); } /// Message handler @@ -157,15 +157,15 @@ impl FileManager { match msg { FileManagerThreadMsg::SelectFile(filter, sender, origin, opt_test_path) => { let store = self.store.clone(); - spawn_named("select file".to_owned(), move || { + thread::Builder::new().name("select file".to_owned()).spawn(move || { store.select_file(filter, sender, origin, opt_test_path, ui); - }); + }).expect("Thread spawning failed"); } FileManagerThreadMsg::SelectFiles(filter, sender, origin, opt_test_paths) => { let store = self.store.clone(); - spawn_named("select files".to_owned(), move || { + thread::Builder::new().name("select files".to_owned()).spawn(move || { store.select_files(filter, sender, origin, opt_test_paths, ui); - }) + }).expect("Thread spawning failed"); } FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => { self.read_file(sender, id, check_url_validity, origin); diff --git a/components/net/hsts.rs b/components/net/hsts.rs index 662ec7b8088..6b8665bd2e5 100644 --- a/components/net/hsts.rs +++ b/components/net/hsts.rs @@ -4,11 +4,11 @@ use net_traits::IncludeSubdomains; use rustc_serialize::json::decode; +use servo_config::resource_files::read_resource_file; use std::net::{Ipv4Addr, Ipv6Addr}; use std::str::from_utf8; use time; use url::Url; -use util::resource_files::read_resource_file; #[derive(RustcDecodable, RustcEncodable, Clone)] pub struct HstsEntry { diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 6199c45209f..f42d49617c1 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -47,11 +47,11 @@ use std::ops::Deref; use std::rc::Rc; use std::sync::{Arc, RwLock}; use std::sync::mpsc::{channel, Sender}; +use std::thread; use time; use time::Tm; use unicase::UniCase; use url::Origin as UrlOrigin; -use util::thread::spawn_named; use uuid; fn read_block<R: Read>(reader: &mut R) -> Result<Data, ()> { @@ -1071,7 +1071,7 @@ fn http_network_fetch(request: Rc<Request>, let devtools_sender = context.devtools_chan.clone(); let meta_status = meta.status.clone(); let meta_headers = meta.headers.clone(); - spawn_named(format!("fetch worker thread"), move || { + thread::Builder::new().name(format!("fetch worker thread")).spawn(move || { match StreamedResponse::from_http_response(res) { Ok(mut res) => { *res_body.lock().unwrap() = ResponseBody::Receiving(vec![]); @@ -1123,7 +1123,7 @@ fn http_network_fetch(request: Rc<Request>, let _ = done_sender.send(Data::Done); } } - }); + }).expect("Thread spawning failed"); // TODO these substeps aren't possible yet // Substep 1 diff --git a/components/net/image_cache_thread.rs b/components/net/image_cache_thread.rs index 5976ec50885..b466374d381 100644 --- a/components/net/image_cache_thread.rs +++ b/components/net/image_cache_thread.rs @@ -11,6 +11,7 @@ use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheCommand, ImageCac use net_traits::image_cache_thread::{ImageCacheResult, ImageOrMetadataAvailable, ImageResponse, UsePlaceholder}; use net_traits::image_cache_thread::ImageResponder; use net_traits::request::{Destination, RequestInit, Type as RequestType}; +use servo_config::resource_files::resources_dir_path; use servo_url::ServoUrl; use std::borrow::ToOwned; use std::collections::HashMap; @@ -20,9 +21,8 @@ use std::io::{self, Read}; use std::mem; use std::sync::Arc; use std::sync::mpsc::{Receiver, Sender, channel}; +use std::thread; use threadpool::ThreadPool; -use util::resource_files::resources_dir_path; -use util::thread::spawn_named; use webrender_traits; /// @@ -648,9 +648,9 @@ pub fn new_image_cache_thread(core_resource_thread: CoreResourceThread, webrender_api: webrender_traits::RenderApi) -> ImageCacheThread { let (ipc_command_sender, ipc_command_receiver) = ipc::channel().unwrap(); - spawn_named("ImageCacheThread".to_owned(), move || { + thread::Builder::new().name("ImageCacheThread".to_owned()).spawn(move || { ImageCache::run(core_resource_thread, webrender_api, ipc_command_receiver) - }); + }).expect("Thread spawning failed"); ImageCacheThread::new(ipc_command_sender) } diff --git a/components/net/lib.rs b/components/net/lib.rs index e5f3951d542..c1925df8616 100644 --- a/components/net/lib.rs +++ b/components/net/lib.rs @@ -35,6 +35,7 @@ extern crate profile_traits; extern crate rustc_serialize; #[macro_use] extern crate serde_derive; +extern crate servo_config; extern crate servo_url; extern crate threadpool; extern crate time; @@ -42,7 +43,6 @@ extern crate time; extern crate tinyfiledialogs; extern crate unicase; extern crate url; -extern crate util; extern crate uuid; extern crate webrender_traits; extern crate websocket; diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index aef1ee314d2..7055f928ad7 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -37,8 +37,8 @@ use std::path::{Path, PathBuf}; use std::rc::Rc; use std::sync::{Arc, RwLock}; use std::sync::mpsc::Sender; +use std::thread; use storage_thread::StorageThreadFactory; -use util::thread::spawn_named; use websocket_loader; const TFD_PROVIDER: &'static TFDProvider = &TFDProvider; @@ -76,7 +76,7 @@ pub fn new_core_resource_thread(user_agent: Cow<'static, str>, -> (CoreResourceThread, CoreResourceThread) { let (public_setup_chan, public_setup_port) = ipc::channel().unwrap(); let (private_setup_chan, private_setup_port) = ipc::channel().unwrap(); - spawn_named("ResourceManager".to_owned(), move || { + thread::Builder::new().name("ResourceManager".to_owned()).spawn(move || { let resource_manager = CoreResourceManager::new( user_agent, devtools_chan, profiler_chan ); @@ -87,7 +87,7 @@ pub fn new_core_resource_thread(user_agent: Cow<'static, str>, }; channel_manager.start(public_setup_port, private_setup_port); - }); + }).expect("Thread spawning failed"); (public_setup_chan, private_setup_chan) } @@ -343,7 +343,7 @@ impl CoreResourceManager { let ua = self.user_agent.clone(); let dc = self.devtools_chan.clone(); let filemanager = self.filemanager.clone(); - spawn_named(format!("fetch thread for {}", init.url), move || { + thread::Builder::new().name(format!("fetch thread for {}", init.url)).spawn(move || { let request = Request::from_init(init); // XXXManishearth: Check origin against pipeline id (also ensure that the mode is allowed) // todo load context / mimesniff in fetch @@ -357,7 +357,7 @@ impl CoreResourceManager { filemanager: filemanager, }; fetch(Rc::new(request), &mut target, &context); - }) + }).expect("Thread spawning failed"); } fn websocket_connect(&self, diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs index cdf70aa6b3b..88726d5702b 100644 --- a/components/net/storage_thread.rs +++ b/components/net/storage_thread.rs @@ -10,7 +10,7 @@ use std::borrow::ToOwned; use std::collections::BTreeMap; use std::collections::HashMap; use std::path::PathBuf; -use util::thread::spawn_named; +use std::thread; const QUOTA_SIZE_LIMIT: usize = 5 * 1024 * 1024; @@ -22,9 +22,9 @@ impl StorageThreadFactory for IpcSender<StorageThreadMsg> { /// Create a storage thread fn new(config_dir: Option<PathBuf>) -> IpcSender<StorageThreadMsg> { let (chan, port) = ipc::channel().unwrap(); - spawn_named("StorageManager".to_owned(), move || { + thread::Builder::new().name("StorageManager".to_owned()).spawn(move || { StorageManager::new(port, config_dir).start(); - }); + }).expect("Thread spawning failed"); chan } } diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs index c9b67dc7f0f..d0ce7d61836 100644 --- a/components/net/websocket_loader.rs +++ b/components/net/websocket_loader.rs @@ -14,7 +14,6 @@ use std::ascii::AsciiExt; use std::sync::{Arc, Mutex, RwLock}; use std::sync::atomic::{AtomicBool, Ordering}; use std::thread; -use util::thread::spawn_named; use websocket::{Client, Message}; use websocket::header::{Headers, Origin, WebSocketProtocol}; use websocket::message::Type; @@ -64,7 +63,7 @@ fn establish_a_websocket_connection(resource_url: &ServoUrl, net_url: (Host, Str } pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData, cookie_jar: Arc<RwLock<CookieStorage>>) { - spawn_named(format!("WebSocket connection to {}", connect_data.resource_url), move || { + thread::Builder::new().name(format!("WebSocket connection to {}", connect_data.resource_url)).spawn(move || { // Step 8: Protocols. // Step 9. @@ -162,5 +161,5 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData, c } } }); - }); + }).expect("Thread spawning failed"); } diff --git a/components/net_traits/Cargo.toml b/components/net_traits/Cargo.toml index 71cd286f863..6b7e117ebba 100644 --- a/components/net_traits/Cargo.toml +++ b/components/net_traits/Cargo.toml @@ -11,7 +11,6 @@ path = "lib.rs" [dependencies] bluetooth_traits = {path = "../bluetooth_traits"} -util = {path = "../util"} msg = {path = "../msg"} ipc-channel = "0.5" heapsize = "0.3.0" @@ -24,6 +23,7 @@ log = "0.3.5" num-traits = "0.1.32" serde = "0.8" serde_derive = "0.8" +servo_config = {path = "../config", features = ["servo"]} servo_url = {path = "../url", features = ["servo"]} url = {version = "1.2", features = ["heap_size"]} websocket = "0.17" diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs index b17a33fd421..2c4dd459e20 100644 --- a/components/net_traits/lib.rs +++ b/components/net_traits/lib.rs @@ -27,9 +27,9 @@ extern crate num_traits; extern crate serde; #[macro_use] extern crate serde_derive; +extern crate servo_config; extern crate servo_url; extern crate url; -extern crate util; extern crate uuid; extern crate webrender_traits; extern crate websocket; diff --git a/components/net_traits/pub_domains.rs b/components/net_traits/pub_domains.rs index f40815e100e..8e8864ee6aa 100644 --- a/components/net_traits/pub_domains.rs +++ b/components/net_traits/pub_domains.rs @@ -14,10 +14,10 @@ //! we don't need to make the code more complex for it. The `mach` update command makes sure that //! those cases are not present. +use servo_config::resource_files::read_resource_file; use std::collections::HashSet; use std::iter::FromIterator; use std::str::from_utf8; -use util::resource_files::read_resource_file; #[derive(Clone,Debug)] pub struct PubDomainRules { diff --git a/components/profile/Cargo.toml b/components/profile/Cargo.toml index f542c5a3f03..7ca08bccd6a 100644 --- a/components/profile/Cargo.toml +++ b/components/profile/Cargo.toml @@ -12,13 +12,13 @@ path = "lib.rs" [dependencies] profile_traits = {path = "../profile_traits"} plugins = {path = "../plugins"} -util = {path = "../util", features = ["servo"]} ipc-channel = "0.5" heartbeats-simple = "0.3" log = "0.3.5" serde = "0.8" serde_derive = "0.8" serde_json = "0.8" +servo_config = {path = "../config", features = ["servo"]} time = "0.1.12" [target.'cfg(target_os = "macos")'.dependencies] diff --git a/components/profile/heartbeats.rs b/components/profile/heartbeats.rs index 7579e6f3a39..b05cbf74b71 100644 --- a/components/profile/heartbeats.rs +++ b/components/profile/heartbeats.rs @@ -6,13 +6,13 @@ use heartbeats_simple::HeartbeatPow as Heartbeat; use heartbeats_simple::HeartbeatPowContext as HeartbeatContext; use profile_traits::time::ProfilerCategory; +use servo_config::opts; use std::collections::HashMap; use std::env::var_os; use std::error::Error; use std::fs::File; use std::mem; use std::path::Path; -use util::opts; static mut HBS: Option<*mut HashMap<ProfilerCategory, Heartbeat>> = None; diff --git a/components/profile/lib.rs b/components/profile/lib.rs index 5e1c4804dc9..df5e6706024 100644 --- a/components/profile/lib.rs +++ b/components/profile/lib.rs @@ -27,10 +27,10 @@ extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; +extern crate servo_config; #[cfg(target_os = "macos")] extern crate task_info; extern crate time as std_time; -extern crate util; #[allow(unsafe_code)] mod heartbeats; diff --git a/components/profile/mem.rs b/components/profile/mem.rs index b27ceeb898f..002cd4d1cb7 100644 --- a/components/profile/mem.rs +++ b/components/profile/mem.rs @@ -13,7 +13,6 @@ use std::cmp::Ordering; use std::collections::HashMap; use std::thread; use time::duration_from_seconds; -use util::thread::spawn_named; pub struct Profiler { /// The port through which messages are received. @@ -33,22 +32,22 @@ impl Profiler { // Create the timer thread if a period was provided. if let Some(period) = period { let chan = chan.clone(); - spawn_named("Memory profiler timer".to_owned(), move || { + thread::Builder::new().name("Memory profiler timer".to_owned()).spawn(move || { loop { thread::sleep(duration_from_seconds(period)); if chan.send(ProfilerMsg::Print).is_err() { break; } } - }); + }).expect("Thread spawning failed"); } // Always spawn the memory profiler. If there is no timer thread it won't receive regular // `Print` events, but it will still receive the other events. - spawn_named("Memory profiler".to_owned(), move || { + thread::Builder::new().name("Memory profiler".to_owned()).spawn(move || { let mut mem_profiler = Profiler::new(port); mem_profiler.start(); - }); + }).expect("Thread spawning failed"); let mem_profiler_chan = ProfilerChan(chan); diff --git a/components/profile/time.rs b/components/profile/time.rs index 648c31f83d6..8cb7c9502c3 100644 --- a/components/profile/time.rs +++ b/components/profile/time.rs @@ -9,6 +9,7 @@ use ipc_channel::ipc::{self, IpcReceiver}; use profile_traits::energy::{energy_interval_ms, read_energy_uj}; use profile_traits::time::{ProfilerCategory, ProfilerChan, ProfilerMsg, TimerMetadata}; use profile_traits::time::{TimerMetadataFrameType, TimerMetadataReflowType}; +use servo_config::opts::OutputOptions; use std::{f64, thread, u32, u64}; use std::borrow::ToOwned; use std::cmp::Ordering; @@ -22,8 +23,6 @@ use std::path::Path; use std::time::Duration; use std_time::precise_time_ns; use trace_dump::TraceDump; -use util::opts::OutputOptions; -use util::thread::spawn_named; pub trait Formattable { fn format(&self, output: &Option<OutputOptions>) -> String; @@ -176,28 +175,28 @@ impl Profiler { Some(ref option) => { // Spawn the time profiler thread let outputoption = option.clone(); - spawn_named("Time profiler".to_owned(), move || { + thread::Builder::new().name("Time profiler".to_owned()).spawn(move || { let trace = file_path.as_ref() .map(path::Path::new) .map(fs::File::create) .map(|res| TraceDump::new(res.unwrap())); let mut profiler = Profiler::new(port, trace, Some(outputoption)); profiler.start(); - }); + }).expect("Thread spawning failed"); // decide if we need to spawn the timer thread match option { &OutputOptions::FileName(_) => { /* no timer thread needed */ }, &OutputOptions::Stdout(period) => { // Spawn a timer thread let chan = chan.clone(); - spawn_named("Time profiler timer".to_owned(), move || { + thread::Builder::new().name("Time profiler timer".to_owned()).spawn(move || { loop { thread::sleep(duration_from_seconds(period)); if chan.send(ProfilerMsg::Print).is_err() { break; } } - }); + }).expect("Thread spawning failed"); }, } }, @@ -205,17 +204,17 @@ impl Profiler { // this is when the -p option hasn't been specified if file_path.is_some() { // Spawn the time profiler - spawn_named("Time profiler".to_owned(), move || { + thread::Builder::new().name("Time profiler".to_owned()).spawn(move || { let trace = file_path.as_ref() .map(path::Path::new) .map(fs::File::create) .map(|res| TraceDump::new(res.unwrap())); let mut profiler = Profiler::new(port, trace, None); profiler.start(); - }); + }).expect("Thread spawning failed"); } else { // No-op to handle messages when the time profiler is not printing: - spawn_named("Time profiler".to_owned(), move || { + thread::Builder::new().name("Time profiler".to_owned()).spawn(move || { loop { match port.recv() { Err(_) => break, @@ -226,7 +225,7 @@ impl Profiler { _ => {} } } - }); + }).expect("Thread spawning failed"); } } } @@ -247,7 +246,7 @@ impl Profiler { const MAX_ENERGY_INTERVAL_MS: u32 = 1000; let interval_ms = enforce_range(MIN_ENERGY_INTERVAL_MS, MAX_ENERGY_INTERVAL_MS, energy_interval_ms()); let loop_count: u32 = (interval_ms as f32 / SLEEP_MS as f32).ceil() as u32; - spawn_named("Application heartbeat profiler".to_owned(), move || { + thread::Builder::new().name("Application heartbeat profiler".to_owned()).spawn(move || { let mut start_time = precise_time_ns(); let mut start_energy = read_energy_uj(); loop { @@ -272,7 +271,7 @@ impl Profiler { start_time = end_time; start_energy = end_energy; } - }); + }).expect("Thread spawning failed"); } profiler_chan diff --git a/components/profile_traits/Cargo.toml b/components/profile_traits/Cargo.toml index bf765fa45f2..954fb2907a1 100644 --- a/components/profile_traits/Cargo.toml +++ b/components/profile_traits/Cargo.toml @@ -20,7 +20,7 @@ log = "0.3.5" plugins = {path = "../plugins"} serde = "0.8" serde_derive = "0.8" +servo_config = {path = "../config"} signpost = {git = "https://github.com/pcwalton/signpost.git"} time = "0.1.12" -util = {path = "../util"} diff --git a/components/profile_traits/lib.rs b/components/profile_traits/lib.rs index 7f67575f6cb..ab53e33c4de 100644 --- a/components/profile_traits/lib.rs +++ b/components/profile_traits/lib.rs @@ -18,8 +18,8 @@ extern crate log; extern crate serde; #[macro_use] extern crate serde_derive; +extern crate servo_config; extern crate signpost; -extern crate util; #[allow(unsafe_code)] pub mod energy; diff --git a/components/profile_traits/time.rs b/components/profile_traits/time.rs index ae114f98bc0..f7b62e17139 100644 --- a/components/profile_traits/time.rs +++ b/components/profile_traits/time.rs @@ -7,8 +7,8 @@ extern crate time as std_time; use energy::read_energy_uj; use ipc_channel::ipc::IpcSender; use self::std_time::precise_time_ns; +use servo_config::opts; use signpost; -use util::opts; #[derive(PartialEq, Clone, PartialOrd, Eq, Ord, Debug, Deserialize, Serialize)] pub struct TimerMetadata { diff --git a/components/remutex/Cargo.toml b/components/remutex/Cargo.toml new file mode 100644 index 00000000000..8bb165d40df --- /dev/null +++ b/components/remutex/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "servo_remutex" +version = "0.0.1" +authors = ["The Servo Project Developers"] +license = "MPL-2.0" +publish = false + +[lib] +name = "servo_remutex" +path = "lib.rs" + +[dependencies] +lazy_static = "0.2" +log = "0.3.5" diff --git a/components/util/remutex.rs b/components/remutex/lib.rs index a574de9cfb3..b2ea30d11a4 100644 --- a/components/util/remutex.rs +++ b/components/remutex/lib.rs @@ -10,6 +10,12 @@ //! It provides the same interface as https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/remutex.rs //! so if those types are ever exported, we should be able to replace this implemtation. +#![feature(nonzero)] + +extern crate core; +#[macro_use] extern crate lazy_static; +#[macro_use] extern crate log; + use core::nonzero::NonZero; use std::cell::{Cell, UnsafeCell}; use std::ops::Deref; diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index 293c2aefe02..05af21f1dc1 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -70,13 +70,14 @@ script_traits = {path = "../script_traits"} selectors = "0.15" serde = "0.8" servo_atoms = {path = "../atoms"} +servo_config = {path = "../config", features = ["servo"] } +servo_geometry = {path = "../geometry" } servo_url = {path = "../url", features = ["servo"] } smallvec = "0.1" style = {path = "../style"} style_traits = {path = "../style_traits"} time = "0.1.12" url = {version = "1.2", features = ["heap_size", "query_encoding"]} -util = {path = "../util"} uuid = {version = "0.3.1", features = ["v4"]} websocket = "0.17" xml5ever = {version = "0.2", features = ["unstable"]} diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index dc39048ab40..6329a81048f 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5603,7 +5603,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'dom::globalscope::GlobalScope', 'mem::heap_size_of_raw_self_and_children', 'libc', - 'util::prefs::PREFS', + 'servo_config::prefs::PREFS', 'std::borrow::ToOwned', 'std::cmp', 'std::mem', diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index adfe242b5f8..18a2deb8f0f 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -56,8 +56,8 @@ use js::jsval::{ObjectValue, StringValue}; use js::rust::{ToString, get_object_class, is_dom_class, is_dom_object, maybe_wrap_value}; use libc; use num_traits::Float; +use servo_config::opts; use std::{char, mem, ptr, slice}; -use util::opts; /// A trait to check whether a given `JSObject` implements an IDL interface. pub trait IDLInterface { diff --git a/components/script/dom/bindings/guard.rs b/components/script/dom/bindings/guard.rs index 114045a62e8..25a52fbe84c 100644 --- a/components/script/dom/bindings/guard.rs +++ b/components/script/dom/bindings/guard.rs @@ -5,7 +5,7 @@ //! Machinery to conditionally expose things. use js::jsapi::{HandleObject, JSContext}; -use util::prefs::PREFS; +use servo_config::prefs::PREFS; /// A container with a condition. pub struct Guard<T: Clone + Copy> { diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 01f11e3ac50..a2c456317dc 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -19,8 +19,8 @@ use dom::element::Element; use dom::node::{Node, NodeDamage}; use dom::processinginstruction::ProcessingInstruction; use dom::text::Text; +use servo_config::opts; use std::cell::Ref; -use util::opts; // https://dom.spec.whatwg.org/#characterdata #[dom_struct] diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 42a3c8158a1..cb591e74c55 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -78,7 +78,7 @@ use dom::htmlunknownelement::HTMLUnknownElement; use dom::htmlvideoelement::HTMLVideoElement; use dom::svgsvgelement::SVGSVGElement; use html5ever_atoms::{Prefix, QualName}; -use util::prefs::PREFS; +use servo_config::prefs::PREFS; fn create_svg_element(name: QualName, prefix: Option<DOMString>, diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 96ee1f871eb..911847aadb8 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -38,8 +38,8 @@ use std::mem::replace; use std::sync::{Arc, Mutex}; use std::sync::atomic::AtomicBool; use std::sync::mpsc::{Receiver, RecvError, Select, Sender, channel}; +use std::thread; use style::thread_state; -use util::thread::spawn_named; /// Set the `worker` field of a related DedicatedWorkerGlobalScope object to a particular /// value for the duration of this object's lifetime. This ensures that the related Worker @@ -160,7 +160,7 @@ impl DedicatedWorkerGlobalScope { let name = format!("WebWorker for {}", serialized_worker_url); let top_level_frame_id = FrameId::installed(); - spawn_named(name, move || { + thread::Builder::new().name(name).spawn(move || { thread_state::initialize(thread_state::SCRIPT | thread_state::IN_WORKER); if let Some(top_level_frame_id) = top_level_frame_id { @@ -243,7 +243,7 @@ impl DedicatedWorkerGlobalScope { global.handle_event(event); } }, reporter_name, parent_sender, CommonScriptMsg::CollectReports); - }); + }).expect("Thread spawning failed"); } pub fn script_chan(&self) -> Box<ScriptChan + Send> { diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 8957fcf5ab9..5f5ed341b8f 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -113,6 +113,7 @@ use script_traits::{ScriptMsg as ConstellationMsg, TouchpadPressurePhase}; use script_traits::{TouchEventType, TouchId}; use script_traits::UntrustedNodeAddress; use servo_atoms::Atom; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::ascii::AsciiExt; use std::borrow::ToOwned; @@ -133,7 +134,6 @@ use style::str::{split_html_space_chars, str_join}; use style::stylesheets::Stylesheet; use time; use url::percent_encoding::percent_decode; -use util::prefs::PREFS; pub enum TouchEventResult { Processed(bool), diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index 4227e84d6c0..9b5c39b013c 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -34,9 +34,9 @@ use servo_atoms::Atom; use std::cell::Cell; use std::ptr; use std::sync::Arc; +use std::thread; use task_source::TaskSource; use task_source::file_reading::{FileReadingTaskSource, FileReadingRunnable, FileReadingTask}; -use util::thread::spawn_named; #[derive(PartialEq, Clone, Copy, JSTraceable, HeapSizeOf)] pub enum FileReaderFunction { @@ -401,9 +401,10 @@ impl FileReader { let wrapper = global.get_runnable_wrapper(); let task_source = global.file_reading_task_source(); - spawn_named("file reader async operation".to_owned(), move || { + thread::Builder::new().name("file reader async operation".to_owned()).spawn(move || { perform_annotated_read_operation(gen_id, load_data, blob_contents, fr, task_source, wrapper) - }); + }).expect("Thread spawning failed"); + Ok(()) } diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index b86cd60b8fc..52c355f2bab 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -28,10 +28,10 @@ use html5ever_atoms::LocalName; use net_traits::ReferrerPolicy; use num_traits::ToPrimitive; use script_traits::MozBrowserEvent; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::default::Default; use style::attr::AttrValue; -use util::prefs::PREFS; #[dom_struct] pub struct HTMLAnchorElement { diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 3f3ea8aa52a..53c7e34f94f 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -48,13 +48,13 @@ use script_traits::{IFrameLoadInfo, IFrameLoadInfoWithData, LoadData}; use script_traits::{MozBrowserEvent, NewLayoutInfo, ScriptMsg as ConstellationMsg}; use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed}; use servo_atoms::Atom; +use servo_config::prefs::PREFS; +use servo_config::servo_version; use servo_url::ServoUrl; use std::cell::Cell; use style::attr::{AttrValue, LengthOrPercentageOrAuto}; use style::context::ReflowGoal; use task_source::TaskSource; -use util::prefs::PREFS; -use util::servo_version; bitflags! { #[derive(JSTraceable, HeapSizeOf)] diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index e86f2c4a25a..cf9d078e39f 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -19,6 +19,7 @@ use dom::node::{Node, UnbindContext, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use html5ever_atoms::LocalName; use parking_lot::RwLock; +use servo_config::prefs::PREFS; use std::ascii::AsciiExt; use std::sync::Arc; use std::sync::atomic::AtomicBool; @@ -89,7 +90,7 @@ impl HTMLMetaElement { } fn apply_viewport(&self) { - if !::util::prefs::PREFS.get("layout.viewport.enabled").as_boolean().unwrap_or(false) { + if !PREFS.get("layout.viewport.enabled").as_boolean().unwrap_or(false) { return; } let element = self.upcast::<Element>(); diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs index 9a01fcf1fde..3b0e3fb1710 100644 --- a/components/script/dom/mouseevent.rs +++ b/components/script/dom/mouseevent.rs @@ -14,9 +14,9 @@ use dom::event::{Event, EventBubbles, EventCancelable}; use dom::eventtarget::EventTarget; use dom::uievent::UIEvent; use dom::window::Window; +use servo_config::prefs::PREFS; use std::cell::Cell; use std::default::Default; -use util::prefs::PREFS; #[dom_struct] pub struct MouseEvent { diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs index 54200e7be20..f0b331c49e6 100644 --- a/components/script/dom/navigatorinfo.rs +++ b/components/script/dom/navigatorinfo.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::str::DOMString; -use util::opts; +use servo_config::opts; pub fn Product() -> DOMString { DOMString::from("Gecko") diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs index 4daf07fff20..8dd3da01671 100644 --- a/components/script/dom/serviceworkerglobalscope.rs +++ b/components/script/dom/serviceworkerglobalscope.rs @@ -28,13 +28,12 @@ use net_traits::request::{CredentialsMode, Destination, RequestInit, Type as Req use rand::random; use script_runtime::{CommonScriptMsg, StackRootTLS, get_reports, new_rt_and_cx, ScriptChan}; use script_traits::{TimerEvent, WorkerGlobalScopeInit, ScopeThings, ServiceWorkerMsg, WorkerScriptLoadOrigin}; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::sync::mpsc::{Receiver, RecvError, Select, Sender, channel}; use std::thread; use std::time::Duration; use style::thread_state::{self, IN_WORKER, SCRIPT}; -use util::prefs::PREFS; -use util::thread::spawn_named; /// Messages used to control service worker event loop pub enum ServiceWorkerScriptMsg { @@ -151,7 +150,7 @@ impl ServiceWorkerGlobalScope { .. } = scope_things; let serialized_worker_url = script_url.to_string(); - spawn_named(format!("ServiceWorker for {}", serialized_worker_url), move || { + thread::Builder::new().name(format!("ServiceWorker for {}", serialized_worker_url)).spawn(move || { thread_state::initialize(SCRIPT | IN_WORKER); let roots = RootCollection::new(); let _stack_roots_tls = StackRootTLS::new(&roots); @@ -202,11 +201,11 @@ impl ServiceWorkerGlobalScope { scope.execute_script(DOMString::from(source)); // Service workers are time limited - spawn_named("SWTimeoutThread".to_owned(), move || { + thread::Builder::new().name("SWTimeoutThread".to_owned()).spawn(move || { let sw_lifetime_timeout = PREFS.get("dom.serviceworker.timeout_seconds").as_u64().unwrap(); thread::sleep(Duration::new(sw_lifetime_timeout, 0)); let _ = timer_chan.send(()); - }); + }).expect("Thread spawning failed"); global.dispatch_activate(); let reporter_name = format!("service-worker-reporter-{}", random::<u64>()); @@ -217,7 +216,7 @@ impl ServiceWorkerGlobalScope { } } }, reporter_name, scope.script_chan(), CommonScriptMsg::CollectReports); - }); + }).expect("Thread spawning failed"); } fn handle_event(&self, event: MixedMessage) -> bool { diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index c6f4364925b..2f4f485be12 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -32,10 +32,10 @@ use network_listener::PreInvoke; use profile_traits::time::{TimerMetadata, TimerMetadataFrameType}; use profile_traits::time::{TimerMetadataReflowType, ProfilerCategory, profile}; use script_thread::ScriptThread; +use servo_config::resource_files::read_resource_file; use servo_url::ServoUrl; use std::cell::Cell; use std::mem; -use util::resource_files::read_resource_file; mod html; mod xml; diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 6b0c619749a..9f65d04bbfa 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -37,11 +37,11 @@ use js::jsapi::{HandleObject, HandleValue, JSContext, JSObject, JSAutoCompartmen use js::jsapi::{JS_NewPlainObject, JS_NewUint8ClampedArray}; use js::jsval::{JSVal, NullValue}; use script_traits::MsDuration; +use servo_config::prefs::PREFS; use std::borrow::ToOwned; use std::ptr; use std::rc::Rc; use timers::OneshotTimerCallback; -use util::prefs::PREFS; #[dom_struct] pub struct TestBinding { diff --git a/components/script/dom/userscripts.rs b/components/script/dom/userscripts.rs index a4051f44581..66758afaa98 100644 --- a/components/script/dom/userscripts.rs +++ b/components/script/dom/userscripts.rs @@ -9,11 +9,11 @@ use dom::bindings::js::RootedReference; use dom::bindings::str::DOMString; use dom::htmlheadelement::HTMLHeadElement; use dom::node::Node; +use servo_config::opts; +use servo_config::resource_files::resources_dir_path; use std::borrow::ToOwned; use std::fs::read_dir; use std::path::PathBuf; -use util::opts; -use util::resource_files::resources_dir_path; pub fn load_script(head: &HTMLHeadElement) { diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 3cd48b46590..acd213d4c81 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -77,6 +77,9 @@ use script_traits::{DocumentState, TimerEvent, TimerEventId}; use script_traits::{ScriptMsg as ConstellationMsg, TimerEventRequest, WindowSizeData, WindowSizeType}; use script_traits::webdriver_msg::{WebDriverJSError, WebDriverJSResult}; use servo_atoms::Atom; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_geometry::{f32_rect_to_au_rect, max_rect}; use servo_url::ServoUrl; use std::ascii::AsciiExt; use std::borrow::ToOwned; @@ -106,9 +109,6 @@ use timers::{IsInterval, TimerCallback}; #[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))] use tinyfiledialogs::{self, MessageBoxIcon}; use url::Position; -use util::geometry::{self, max_rect}; -use util::opts; -use util::prefs::PREFS; use webdriver_handlers::jsval_to_webdriver; /// Current state of the window object @@ -1413,13 +1413,13 @@ impl Window { } pub fn set_page_clip_rect_with_new_viewport(&self, viewport: Rect<f32>) -> bool { - let rect = geometry::f32_rect_to_au_rect(viewport.clone()); + let rect = f32_rect_to_au_rect(viewport.clone()); self.current_viewport.set(rect); // We use a clipping rectangle that is five times the size of the of the viewport, // so that we don't collect display list items for areas too far outside the viewport, // but also don't trigger reflows every time the viewport changes. static VIEWPORT_EXPANSION: f32 = 2.0; // 2 lengths on each side plus original length is 5 total. - let proposed_clip_rect = geometry::f32_rect_to_au_rect( + let proposed_clip_rect = f32_rect_to_au_rect( viewport.inflate(viewport.size.width * VIEWPORT_EXPANSION, viewport.size.height * VIEWPORT_EXPANSION)); let clip_rect = self.page_clip_rect.get(); diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 578c8b7b822..f676eac3b64 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -53,6 +53,7 @@ use net_traits::request::{CredentialsMode, Destination, RequestInit, RequestMode use net_traits::trim_http_whitespace; use network_listener::{NetworkListener, PreInvoke}; use servo_atoms::Atom; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::ascii::AsciiExt; use std::borrow::ToOwned; @@ -64,7 +65,6 @@ use task_source::networking::NetworkingTaskSource; use time; use timers::{OneshotTimerCallback, OneshotTimerHandle}; use url::Position; -use util::prefs::PREFS; #[derive(JSTraceable, PartialEq, Copy, Clone, HeapSizeOf)] enum XMLHttpRequestState { diff --git a/components/script/lib.rs b/components/script/lib.rs index e80e9553956..1a751635ea5 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -83,6 +83,8 @@ extern crate script_traits; extern crate selectors; extern crate serde; #[macro_use] extern crate servo_atoms; +#[macro_use] extern crate servo_config; +extern crate servo_geometry; extern crate servo_url; extern crate smallvec; #[macro_use] @@ -93,7 +95,6 @@ extern crate time; extern crate tinyfiledialogs; extern crate url; #[macro_use] -extern crate util; extern crate uuid; extern crate webrender_traits; extern crate websocket; diff --git a/components/script/script_runtime.rs b/components/script/script_runtime.rs index 00e7d3a198e..a21f96c5890 100644 --- a/components/script/script_runtime.rs +++ b/components/script/script_runtime.rs @@ -25,6 +25,8 @@ use js::rust::Runtime; use msg::constellation_msg::PipelineId; use profile_traits::mem::{Report, ReportKind, ReportsChan}; use script_thread::{Runnable, STACK_ROOTS, trace_thread}; +use servo_config::opts; +use servo_config::prefs::PREFS; use std::cell::Cell; use std::io::{Write, stdout}; use std::marker::PhantomData; @@ -35,8 +37,6 @@ use std::ptr; use std::rc::Rc; use style::thread_state; use time::{Tm, now}; -use util::opts; -use util::prefs::PREFS; /// Common messages used to control the event loops in both the script and the worker pub enum CommonScriptMsg { diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 680bf2e8c9a..b719a8faed6 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -91,6 +91,7 @@ use script_traits::CompositorEvent::{KeyEvent, MouseButtonEvent, MouseMoveEvent, use script_traits::CompositorEvent::{TouchEvent, TouchpadPressureEvent}; use script_traits::webdriver_msg::WebDriverScriptCommand; use serviceworkerjob::{Job, JobQueue, AsyncJobHandler, FinishJobHandler, InvokeType, SettleType}; +use servo_config::opts; use servo_url::ServoUrl; use std::cell::Cell; use std::collections::{hash_map, HashMap, HashSet}; @@ -101,6 +102,7 @@ use std::result::Result; use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{Receiver, Select, Sender, channel}; +use std::thread; use style::context::ReflowGoal; use style::dom::{TNode, UnsafeNode}; use style::thread_state; @@ -112,8 +114,6 @@ use task_source::networking::NetworkingTaskSource; use task_source::user_interaction::{UserInteractionTask, UserInteractionTaskSource}; use time::Tm; use url::Position; -use util::opts; -use util::thread; use webdriver_handlers; thread_local!(pub static STACK_ROOTS: Cell<Option<RootCollectionPtr>> = Cell::new(None)); @@ -519,8 +519,7 @@ impl ScriptThreadFactory for ScriptThread { let (sender, receiver) = channel(); let layout_chan = sender.clone(); - thread::spawn_named(format!("ScriptThread {:?}", state.id), - move || { + thread::Builder::new().name(format!("ScriptThread {:?}", state.id)).spawn(move || { thread_state::initialize(thread_state::SCRIPT); PipelineNamespace::install(state.pipeline_namespace_id); FrameId::install(state.top_level_frame_id); @@ -553,7 +552,7 @@ impl ScriptThreadFactory for ScriptThread { // This must always be the very last operation performed before the thread completes failsafe.neuter(); - }); + }).expect("Thread spawning failed"); (sender, receiver) } diff --git a/components/script/serviceworker_manager.rs b/components/script/serviceworker_manager.rs index ac3c2ab4109..793d7ccf370 100644 --- a/components/script/serviceworker_manager.rs +++ b/components/script/serviceworker_manager.rs @@ -16,11 +16,11 @@ use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::router::ROUTER; use net_traits::{CustomResponseMediator, CoreResourceMsg}; use script_traits::{ServiceWorkerMsg, ScopeThings, SWManagerMsg, SWManagerSenders, DOMMessage}; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::collections::HashMap; use std::sync::mpsc::{channel, Sender, Receiver, RecvError}; -use util::prefs::PREFS; -use util::thread::spawn_named; +use std::thread; enum Message { FromResource(CustomResponseMediator), @@ -60,11 +60,11 @@ impl ServiceWorkerManager { let resource_port = ROUTER.route_ipc_receiver_to_new_mpsc_receiver(resource_port); let _ = sw_senders.resource_sender.send(CoreResourceMsg::NetworkMediator(resource_chan)); let _ = sw_senders.swmanager_sender.send(SWManagerMsg::OwnSender(own_sender.clone())); - spawn_named("ServiceWorkerManager".to_owned(), move || { + thread::Builder::new().name("ServiceWorkerManager".to_owned()).spawn(move || { ServiceWorkerManager::new(own_sender, from_constellation, resource_port).handle_message(); - }); + }).expect("Thread spawning failed"); } pub fn get_matching_scope(&self, load_url: &ServoUrl) -> Option<ServoUrl> { diff --git a/components/script/timers.rs b/components/script/timers.rs index db0adfa9557..14c4eb89c13 100644 --- a/components/script/timers.rs +++ b/components/script/timers.rs @@ -18,12 +18,12 @@ use js::jsapi::{HandleValue, Heap}; use js::jsval::{JSVal, UndefinedValue}; use script_traits::{MsDuration, precise_time_ms}; use script_traits::{TimerEvent, TimerEventId, TimerEventRequest, TimerSource}; +use servo_config::prefs::PREFS; use std::cell::Cell; use std::cmp::{self, Ord, Ordering}; use std::collections::HashMap; use std::default::Default; use std::rc::Rc; -use util::prefs::PREFS; #[derive(JSTraceable, PartialEq, Eq, Copy, Clone, HeapSizeOf, Hash, PartialOrd, Ord, Debug)] pub struct OneshotTimerHandle(i32); diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 724ba36214b..759082970d7 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -50,10 +50,10 @@ profile_traits = {path = "../profile_traits"} script = {path = "../script"} script_layout_interface = {path = "../script_layout_interface"} script_traits = {path = "../script_traits"} +servo_config = {path = "../config"} servo_url = {path = "../url"} style = {path = "../style", features = ["servo"]} url = "1.2" -util = {path = "../util"} webdriver_server = {path = "../webdriver_server", optional = true} [dependencies.webrender] diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 3cc549f102f..319bdbb186c 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -45,10 +45,9 @@ pub extern crate profile_traits; pub extern crate script; pub extern crate script_traits; pub extern crate script_layout_interface; +pub extern crate servo_config; pub extern crate servo_url; pub extern crate style; -pub extern crate url; -pub extern crate util; #[cfg(feature = "webdriver")] extern crate webdriver_server; @@ -88,17 +87,19 @@ use profile::time as profile_time; use profile_traits::mem; use profile_traits::time; use script_traits::{ConstellationMsg, SWManagerSenders, ScriptMsg}; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_config::resource_files::resources_dir_path; use servo_url::ServoUrl; use std::borrow::Cow; use std::cmp::max; use std::path::PathBuf; use std::rc::Rc; use std::sync::mpsc::Sender; -use util::opts; -use util::prefs::PREFS; -use util::resource_files::resources_dir_path; pub use gleam::gl; +pub use servo_config as config; +pub use servo_url as url; /// The in-process interface to Servo. /// diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index cb386d1ac7e..d2c9dbb32af 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -50,12 +50,12 @@ selectors = "0.15" serde = {version = "0.8", optional = true} serde_derive = {version = "0.8", optional = true} servo_atoms = {path = "../atoms", optional = true} +servo_config = {path = "../config"} smallvec = "0.1" style_traits = {path = "../style_traits"} servo_url = {path = "../url"} time = "0.1" unicode-segmentation = "0.1.2" -util = {path = "../util"} plugins = {path = "../plugins", optional = true} [dependencies.num_cpus] diff --git a/components/style/lib.rs b/components/style/lib.rs index 50725a52b00..d1b63f02c83 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -80,6 +80,7 @@ extern crate selectors; extern crate serde; #[cfg(feature = "servo")] #[macro_use] extern crate serde_derive; #[cfg(feature = "servo")] #[macro_use] extern crate servo_atoms; +extern crate servo_config; extern crate servo_url; extern crate smallvec; #[macro_use] @@ -87,7 +88,6 @@ extern crate style_traits; extern crate time; #[allow(unused_extern_crates)] extern crate unicode_segmentation; -extern crate util; pub mod animation; pub mod atomic_refcell; diff --git a/components/style/matching.rs b/components/style/matching.rs index fc79e075421..ce04d8fde0f 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -21,13 +21,13 @@ use selector_parser::{PseudoElement, RestyleDamage, SelectorImpl}; use selectors::MatchAttr; use selectors::bloom::BloomFilter; use selectors::matching::{AFFECTED_BY_PSEUDO_ELEMENTS, MatchingReason, StyleRelations}; +use servo_config::opts; use sink::ForgetfulSink; use std::collections::HashMap; use std::hash::BuildHasherDefault; use std::slice::IterMut; use std::sync::Arc; use stylist::ApplicableDeclarationBlock; -use util::opts; fn create_common_style_affecting_attributes_from_element<E: TElement>(element: &E) -> CommonStyleAffectingAttributes { diff --git a/components/style/parallel.rs b/components/style/parallel.rs index 3bc888a5230..19b2af74b59 100644 --- a/components/style/parallel.rs +++ b/components/style/parallel.rs @@ -8,10 +8,10 @@ use dom::{OpaqueNode, TElement, TNode, UnsafeNode}; use rayon; +use servo_config::opts; use std::sync::atomic::Ordering; use traversal::{DomTraversalContext, PerLevelTraversalData, PreTraverseToken}; use traversal::{STYLE_SHARING_CACHE_HITS, STYLE_SHARING_CACHE_MISSES}; -use util::opts; pub const CHUNK_SIZE: usize = 64; diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 21897405c88..59e02b9b9cf 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -28,6 +28,7 @@ use font_metrics::FontMetricsProvider; #[cfg(feature = "servo")] use logical_geometry::{LogicalMargin, PhysicalSide}; use logical_geometry::WritingMode; use parser::{Parse, ParserContext, ParserContextExtraData}; +#[cfg(feature = "servo")] use servo_config::prefs::PREFS; use servo_url::ServoUrl; use style_traits::ToCss; use stylesheets::Origin; @@ -846,7 +847,7 @@ impl PropertyDeclaration { } % endif % if property.experimental and product == "servo": - if !::util::prefs::PREFS.get("${property.experimental}") + if !PREFS.get("${property.experimental}") .as_boolean().unwrap_or(false) { return PropertyDeclarationParseResult::ExperimentalProperty } @@ -878,7 +879,7 @@ impl PropertyDeclaration { } % endif % if shorthand.experimental and product == "servo": - if !::util::prefs::PREFS.get("${shorthand.experimental}") + if !PREFS.get("${shorthand.experimental}") .as_boolean().unwrap_or(false) { return PropertyDeclarationParseResult::ExperimentalProperty } diff --git a/components/style/stylesheets.rs b/components/style/stylesheets.rs index 1156b85731c..247c153c46b 100644 --- a/components/style/stylesheets.rs +++ b/components/style/stylesheets.rs @@ -18,6 +18,7 @@ use parser::{ParserContext, ParserContextExtraData, log_css_error}; use properties::{PropertyDeclarationBlock, parse_property_declaration_list}; use selector_parser::{SelectorImpl, SelectorParser}; use selectors::parser::SelectorList; +use servo_config::prefs::PREFS; use servo_url::ServoUrl; use std::cell::Cell; use std::fmt; @@ -723,7 +724,7 @@ impl<'a, 'b> AtRuleParser for NestedRuleParser<'a, 'b> { Ok(AtRuleType::WithBlock(AtRulePrelude::FontFace)) }, "viewport" => { - if ::util::prefs::PREFS.get("layout.viewport.enabled").as_boolean().unwrap_or(false) || + if PREFS.get("layout.viewport.enabled").as_boolean().unwrap_or(false) || cfg!(feature = "gecko") { Ok(AtRuleType::WithBlock(AtRulePrelude::Viewport)) } else { diff --git a/components/style/traversal.rs b/components/style/traversal.rs index 5de8c726348..9ca232d759a 100644 --- a/components/style/traversal.rs +++ b/components/style/traversal.rs @@ -14,12 +14,12 @@ use restyle_hints::{RESTYLE_DESCENDANTS, RESTYLE_SELF}; use selector_parser::RestyleDamage; use selectors::Element; use selectors::matching::StyleRelations; +use servo_config::opts; use std::borrow::Borrow; use std::cell::RefCell; use std::mem; use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; use stylist::Stylist; -use util::opts; /// Every time we do another layout, the old bloom filters are invalid. This is /// detected by ticking a generation number every layout. diff --git a/components/url/Cargo.toml b/components/url/Cargo.toml index 48184fb702c..11c0cd71a8b 100644 --- a/components/url/Cargo.toml +++ b/components/url/Cargo.toml @@ -11,7 +11,7 @@ path = "lib.rs" [features] servo = ["heapsize", "heapsize_derive", "serde", "serde_derive", - "url/heap_size"] + "url/heap_size", "url/serde"] [dependencies] diff --git a/components/util/thread.rs b/components/util/thread.rs deleted file mode 100644 index 130187244db..00000000000 --- a/components/util/thread.rs +++ /dev/null @@ -1,11 +0,0 @@ -/* 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 std::thread; - -pub fn spawn_named<F>(name: String, f: F) - where F: FnOnce() + Send + 'static -{ - thread::Builder::new().name(name).spawn(f).expect("Thread spawn failed"); -} diff --git a/components/webdriver_server/Cargo.toml b/components/webdriver_server/Cargo.toml index 6bb75d93b60..0cc3b43f637 100644 --- a/components/webdriver_server/Cargo.toml +++ b/components/webdriver_server/Cargo.toml @@ -22,8 +22,8 @@ plugins = {path = "../plugins"} regex = "0.1.55" rustc-serialize = "0.3.4" script_traits = {path = "../script_traits"} +servo_config = {path = "../config", features = ["servo"]} servo_url = {path = "../url", features = ["servo"]} url = {version = "1.2", features = ["heap_size"]} -util = {path = "../util"} uuid = { version = "0.3.1", features = ["v4"] } webdriver = "0.15" diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index e6cf2ac6f62..9994f0b751e 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -22,8 +22,8 @@ extern crate net_traits; extern crate regex; extern crate rustc_serialize; extern crate script_traits; +extern crate servo_config; extern crate servo_url; -extern crate util; extern crate uuid; extern crate webdriver; @@ -42,6 +42,7 @@ use rustc_serialize::json::{Json, ToJson}; use script_traits::{ConstellationMsg, LoadData, WebDriverCommandMsg}; use script_traits::webdriver_msg::{LoadStatus, WebDriverCookieError, WebDriverFrameId}; use script_traits::webdriver_msg::{WebDriverJSError, WebDriverJSResult, WebDriverScriptCommand}; +use servo_config::prefs::{PREFS, PrefValue}; use servo_url::ServoUrl; use std::borrow::ToOwned; use std::collections::BTreeMap; @@ -49,8 +50,6 @@ use std::net::{SocketAddr, SocketAddrV4}; use std::sync::mpsc::Sender; use std::thread; use std::time::Duration; -use util::prefs::{PREFS, PrefValue}; -use util::thread::spawn_named; use uuid::Uuid; use webdriver::command::{AddCookieParameters, GetParameters, JavascriptCommandParameters}; use webdriver::command::{LocatorParameters, Parameters}; @@ -88,13 +87,13 @@ fn cookie_msg_to_cookie(cookie: cookie_rs::Cookie) -> Cookie { pub fn start_server(port: u16, constellation_chan: Sender<ConstellationMsg>) { let handler = Handler::new(constellation_chan); - spawn_named("WebdriverHttpServer".to_owned(), move || { + thread::Builder::new().name("WebdriverHttpServer".to_owned()).spawn(move || { let address = SocketAddrV4::new("0.0.0.0".parse().unwrap(), port); match server::start(SocketAddr::V4(address), handler, extension_routes()) { Ok(listening) => info!("WebDriver server listening on {}", listening.socket), Err(_) => panic!("Unable to start WebDriver HTTPD server"), } - }); + }).expect("Thread spawning failed"); } struct WebDriverSession { diff --git a/ports/cef/Cargo.toml b/ports/cef/Cargo.toml index 3d2625b3aac..6bca49baae4 100644 --- a/ports/cef/Cargo.toml +++ b/ports/cef/Cargo.toml @@ -31,9 +31,10 @@ msg = {path = "../../components/msg"} net_traits = {path = "../../components/net_traits"} plugins = {path = "../../components/plugins"} script_traits = {path = "../../components/script_traits"} +servo_config = {path = "../../components/config"} +servo_geometry = {path = "../../components/geometry"} servo_url = {path = "../../components/url"} style_traits = {path = "../../components/style_traits"} -util = {path = "../../components/util"} [target.'cfg(target_os="macos")'.dependencies] objc = "0.2" diff --git a/ports/cef/browser.rs b/ports/cef/browser.rs index 707c202e545..22affc6f76a 100644 --- a/ports/cef/browser.rs +++ b/ports/cef/browser.rs @@ -10,7 +10,6 @@ use interfaces::{cef_browser_t, cef_browser_host_t, cef_client_t, cef_frame_t}; use interfaces::{cef_request_context_t}; use servo::Browser; use types::{cef_browser_settings_t, cef_string_t, cef_window_info_t, cef_window_handle_t}; -use util::thread::spawn_named; use window; use wrappers::CefWrap; @@ -21,6 +20,7 @@ use std::cell::{Cell, RefCell}; use std::ptr; use std::rc::Rc; use std::sync::atomic::{AtomicIsize, Ordering}; +use std::thread; thread_local!(pub static ID_COUNTER: AtomicIsize = AtomicIsize::new(0)); thread_local!(pub static BROWSERS: RefCell<Vec<CefBrowser>> = RefCell::new(vec!())); @@ -293,9 +293,9 @@ cef_static_method_impls! { let _browser_settings: &cef_browser_settings_t = _browser_settings; let _request_context: CefRequestContext = _request_context; browser_host_create(window_info, client, url, false); - spawn_named("async_browser_creation".to_owned(), move || { + thread::Builder::new().name("async_browser_creation".to_owned()).spawn(move || { window::app_wakeup(); - }); + }).expect("Thread spawning failed"); 1i32 }} fn cef_browser_host_create_browser_sync(window_info: *const cef_window_info_t, @@ -309,4 +309,4 @@ cef_static_method_impls! { let _request_context: CefRequestContext = _request_context; browser_host_create(window_info, client, url, true) }} -}
\ No newline at end of file +} diff --git a/ports/cef/core.rs b/ports/cef/core.rs index e5e70acd7d3..7db9246355c 100644 --- a/ports/cef/core.rs +++ b/ports/cef/core.rs @@ -9,9 +9,9 @@ use window::init_window; use browser; use libc::{c_char, c_int, c_void}; +use servo_config::opts; use std::ffi; use std::str; -use util::opts; const MAX_RENDERING_THREADS: usize = 128; diff --git a/ports/cef/lib.rs b/ports/cef/lib.rs index c0008757dba..e270267b905 100644 --- a/ports/cef/lib.rs +++ b/ports/cef/lib.rs @@ -24,12 +24,13 @@ extern crate gleam; extern crate glutin_app; extern crate rustc_unicode; extern crate script_traits; +extern crate servo_config; +extern crate servo_geometry; extern crate servo_url; extern crate style_traits; extern crate net_traits; extern crate msg; -extern crate util; extern crate libc; diff --git a/ports/cef/window.rs b/ports/cef/window.rs index 33a1c5749c6..f84c0b90d1f 100644 --- a/ports/cef/window.rs +++ b/ports/cef/window.rs @@ -27,6 +27,7 @@ use gfx_traits::DevicePixel; use gleam::gl; use msg::constellation_msg::{Key, KeyModifiers}; use net_traits::net_error_list::NetError; +use servo_geometry::ScreenPx; use std::cell::RefCell; use std::ffi::CString; use std::os::raw::{c_char, c_void}; @@ -35,7 +36,6 @@ use std::rc::Rc; use std::sync::mpsc::{Sender, channel}; use servo_url::ServoUrl; use style_traits::cursor::Cursor; -use util::geometry::ScreenPx; #[cfg(target_os="linux")] extern crate x11; #[cfg(target_os="linux")] diff --git a/ports/glutin/Cargo.toml b/ports/glutin/Cargo.toml index e18061babe0..9afffe6dc66 100644 --- a/ports/glutin/Cargo.toml +++ b/ports/glutin/Cargo.toml @@ -19,9 +19,10 @@ msg = {path = "../../components/msg"} net_traits = {path = "../../components/net_traits"} script_traits = {path = "../../components/script_traits"} servo-glutin = "0.6" +servo_geometry = {path = "../../components/geometry"} +servo_config = {path = "../../components/config"} servo_url = {path = "../../components/url"} style_traits = {path = "../../components/style_traits"} -util = {path = "../../components/util"} [target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies] osmesa-sys = "0.1.2" diff --git a/ports/glutin/lib.rs b/ports/glutin/lib.rs index d44e8952530..3d1bb34a258 100644 --- a/ports/glutin/lib.rs +++ b/ports/glutin/lib.rs @@ -19,16 +19,17 @@ extern crate msg; extern crate net_traits; #[cfg(any(target_os = "linux", target_os = "macos"))] extern crate osmesa_sys; extern crate script_traits; +extern crate servo_config; +extern crate servo_geometry; extern crate servo_url; extern crate style_traits; -extern crate util; #[cfg(target_os = "windows")] extern crate winapi; #[cfg(target_os = "windows")] extern crate user32; #[cfg(target_os = "windows")] extern crate gdi32; use compositing::windowing::WindowEvent; +use servo_config::opts; use std::rc::Rc; -use util::opts; use window::Window; pub mod window; diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index c19836cb4f4..11b77dafb60 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -26,6 +26,10 @@ use net_traits::net_error_list::NetError; #[cfg(any(target_os = "linux", target_os = "macos"))] use osmesa_sys; use script_traits::{TouchEventType, TouchpadPressurePhase}; +use servo_config::opts; +use servo_config::prefs::PREFS; +use servo_config::resource_files; +use servo_geometry::ScreenPx; use servo_url::ServoUrl; use std::cell::{Cell, RefCell}; #[cfg(any(target_os = "linux", target_os = "macos"))] @@ -39,10 +43,6 @@ use std::sync::mpsc::{Sender, channel}; use style_traits::cursor::Cursor; #[cfg(target_os = "windows")] use user32; -use util::geometry::ScreenPx; -use util::opts; -use util::prefs::PREFS; -use util::resource_files; #[cfg(target_os = "windows")] use winapi; diff --git a/ports/servo/Cargo.toml b/ports/servo/Cargo.toml index d9ab8a459c9..23f12909766 100644 --- a/ports/servo/Cargo.toml +++ b/ports/servo/Cargo.toml @@ -22,8 +22,9 @@ net_traits_tests = {path = "../../tests/unit/net_traits"} plugin_compiletest = {path = "../../tests/compiletest/plugin"} profile_tests = {path = "../../tests/unit/profile"} script_tests = {path = "../../tests/unit/script"} +servo_config_tests = {path = "../../tests/unit/servo_config"} +servo_remutex_tests = {path = "../../tests/unit/servo_remutex"} style_tests = {path = "../../tests/unit/style"} -util_tests = {path = "../../tests/unit/util"} [features] default = ["webdriver", "max_log_level"] diff --git a/ports/servo/main.rs b/ports/servo/main.rs index 89bac711f53..cefc093af7a 100644 --- a/ports/servo/main.rs +++ b/ports/servo/main.rs @@ -38,8 +38,8 @@ extern crate sig; use backtrace::Backtrace; use servo::Browser; use servo::compositing::windowing::WindowEvent; -use servo::util::opts::{self, ArgumentParsingResult}; -use servo::util::servo_version; +use servo::config::opts::{self, ArgumentParsingResult}; +use servo::config::servo_version; use std::env; use std::panic; use std::process; @@ -286,10 +286,10 @@ mod android { use self::libc::{pipe, dup2}; use self::libc::fdopen; use self::libc::fgets; - use servo::util::thread::spawn_named; use std::ffi::CStr; use std::ffi::CString; use std::str::from_utf8; + use std::thread; unsafe { let mut pipes: [c_int; 2] = [ 0, 0 ]; @@ -297,7 +297,7 @@ mod android { dup2(pipes[1], file_no); let mode = CString::new("r").unwrap(); let input_file = FilePtr(fdopen(pipes[0], mode.as_ptr())); - spawn_named("android-logger".to_owned(), move || { + thread::Builder::new().name("android-logger".to_owned()).spawn(move || { static READ_SIZE: usize = 1024; let mut read_buffer = vec![0; READ_SIZE]; let FilePtr(input_file) = input_file; diff --git a/tests/unit/net/Cargo.toml b/tests/unit/net/Cargo.toml index aa462c0c156..ea7916b89ef 100644 --- a/tests/unit/net/Cargo.toml +++ b/tests/unit/net/Cargo.toml @@ -22,8 +22,8 @@ net = {path = "../../../components/net"} net_traits = {path = "../../../components/net_traits"} plugins = {path = "../../../components/plugins"} profile_traits = {path = "../../../components/profile_traits"} +servo_config = {path = "../../../components/config"} time = "0.1" unicase = "1.0" url = {version = "1.2", features = ["heap_size"]} servo_url = {path = "../../../components/url"} -util = {path = "../../../components/util"} diff --git a/tests/unit/net/fetch.rs b/tests/unit/net/fetch.rs index bc8ab6439d0..c5eb51b69f8 100644 --- a/tests/unit/net/fetch.rs +++ b/tests/unit/net/fetch.rs @@ -25,6 +25,7 @@ use net::fetch::methods::{fetch, fetch_with_cors_cache}; use net_traits::ReferrerPolicy; use net_traits::request::{Origin, RedirectMode, Referrer, Request, RequestMode}; use net_traits::response::{CacheState, Response, ResponseBody, ResponseType}; +use servo_config::resource_files::resources_dir_path; use servo_url::ServoUrl; use std::fs::File; use std::io::Read; @@ -35,7 +36,6 @@ use std::sync::mpsc::{Sender, channel}; use time::{self, Duration}; use unicase::UniCase; use url::Origin as UrlOrigin; -use util::resource_files::resources_dir_path; // TODO write a struct that impls Handler for storing test values diff --git a/tests/unit/net/lib.rs b/tests/unit/net/lib.rs index c9890544d94..cb8bc2edf89 100644 --- a/tests/unit/net/lib.rs +++ b/tests/unit/net/lib.rs @@ -16,11 +16,11 @@ extern crate msg; extern crate net; extern crate net_traits; extern crate profile_traits; +extern crate servo_config; extern crate servo_url; extern crate time; extern crate unicase; extern crate url; -extern crate util; #[cfg(test)] mod chrome_loader; #[cfg(test)] mod cookie; diff --git a/tests/unit/util/Cargo.toml b/tests/unit/servo_config/Cargo.toml index 28e5415f417..dec49de186a 100644 --- a/tests/unit/util/Cargo.toml +++ b/tests/unit/servo_config/Cargo.toml @@ -1,14 +1,14 @@ [package] -name = "util_tests" +name = "servo_config_tests" version = "0.0.1" authors = ["The Servo Project Developers"] license = "MPL-2.0" [lib] -name = "util_tests" +name = "servo_config_tests" path = "lib.rs" doctest = false [dependencies] -util = {path = "../../../components/util"} +servo_config = {path = "../../../components/config"} diff --git a/tests/unit/util/lib.rs b/tests/unit/servo_config/lib.rs index 96506d5973c..dc2a6446848 100644 --- a/tests/unit/util/lib.rs +++ b/tests/unit/servo_config/lib.rs @@ -4,9 +4,7 @@ #![cfg(test)] -extern crate util; +extern crate servo_config; mod opts; mod prefs; -mod remutex; -mod thread; diff --git a/tests/unit/util/opts.rs b/tests/unit/servo_config/opts.rs index 8367e1d5117..a6827fd05e9 100644 --- a/tests/unit/util/opts.rs +++ b/tests/unit/servo_config/opts.rs @@ -2,8 +2,8 @@ * 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 servo_config::opts::parse_url_or_filename; use std::path::Path; -use util::opts::parse_url_or_filename; #[cfg(not(target_os = "windows"))] const FAKE_CWD: &'static str = "/fake/cwd"; diff --git a/tests/unit/util/prefs.rs b/tests/unit/servo_config/prefs.rs index 295a3e1fe2c..393b5a358d2 100644 --- a/tests/unit/util/prefs.rs +++ b/tests/unit/servo_config/prefs.rs @@ -2,10 +2,10 @@ * 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 servo_config::basedir; +use servo_config::prefs::{PREFS, PrefValue, read_prefs_from_file}; use std::fs::{self, File}; use std::io::{Read, Write}; -use util::basedir; -use util::prefs::{PREFS, PrefValue, read_prefs_from_file}; #[test] fn test_create_pref() { diff --git a/tests/unit/servo_remutex/Cargo.toml b/tests/unit/servo_remutex/Cargo.toml new file mode 100644 index 00000000000..20782b623e2 --- /dev/null +++ b/tests/unit/servo_remutex/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "servo_remutex_tests" +version = "0.0.1" +authors = ["The Servo Project Developers"] +license = "MPL-2.0" + +[lib] +name = "servo_remutex_tests" +path = "lib.rs" +doctest = false + +[dependencies] +servo_remutex = {path = "../../../components/remutex"} + diff --git a/tests/unit/util/remutex.rs b/tests/unit/servo_remutex/lib.rs index a005d761d5f..411c943923c 100644 --- a/tests/unit/util/remutex.rs +++ b/tests/unit/servo_remutex/lib.rs @@ -10,10 +10,14 @@ // These tests came from https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/remutex.rs +#![cfg(test)] + +extern crate servo_remutex; + +use servo_remutex::{ReentrantMutex, ReentrantMutexGuard}; use std::cell::RefCell; use std::sync::Arc; use std::thread; -use util::remutex::{ReentrantMutex, ReentrantMutexGuard}; #[test] fn smoke() { diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml index a7fe7971cf7..4a7cf616d18 100644 --- a/tests/unit/style/Cargo.toml +++ b/tests/unit/style/Cargo.toml @@ -23,7 +23,7 @@ rustc-serialize = "0.3" selectors = "0.15" html5ever-atoms = "0.1" servo_atoms = {path = "../../../components/atoms"} +servo_config = {path = "../../../components/config"} style = {path = "../../../components/style"} style_traits = {path = "../../../components/style_traits"} servo_url = {path = "../../../components/url"} -util = {path = "../../../components/util"} diff --git a/tests/unit/style/lib.rs b/tests/unit/style/lib.rs index 95cd087ccbf..6b0ed472cbd 100644 --- a/tests/unit/style/lib.rs +++ b/tests/unit/style/lib.rs @@ -16,10 +16,10 @@ extern crate parking_lot; extern crate rustc_serialize; extern crate selectors; #[macro_use] extern crate servo_atoms; +extern crate servo_config; extern crate servo_url; extern crate style; extern crate style_traits; -extern crate util; mod atomic_refcell; mod attr; diff --git a/tests/unit/style/viewport.rs b/tests/unit/style/viewport.rs index a430089ba9b..9a3bc773a9c 100644 --- a/tests/unit/style/viewport.rs +++ b/tests/unit/style/viewport.rs @@ -6,6 +6,7 @@ use cssparser::Parser; use euclid::scale_factor::ScaleFactor; use euclid::size::TypedSize2D; use media_queries::CSSErrorReporterTest; +use servo_config::prefs::{PREFS, PrefValue}; use servo_url::ServoUrl; use style::error_reporting::ParseErrorReporter; use style::media_queries::{Device, MediaType}; @@ -35,8 +36,7 @@ fn test_viewport_rule<F>(css: &str, callback: F) where F: Fn(&Vec<ViewportDescriptorDeclaration>, &str) { - ::util::prefs::PREFS.set("layout.viewport.enabled", - ::util::prefs::PrefValue::Boolean(true)); + PREFS.set("layout.viewport.enabled", PrefValue::Boolean(true)); let stylesheet = stylesheet!(css, Author, Box::new(CSSErrorReporterTest)); let mut rule_count = 0; stylesheet.effective_viewport_rules(&device, |rule| { @@ -250,8 +250,7 @@ fn cascading_within_viewport_rule() { #[test] fn multiple_stylesheets_cascading() { - ::util::prefs::PREFS.set("layout.viewport.enabled", - ::util::prefs::PrefValue::Boolean(true)); + PREFS.set("layout.viewport.enabled", PrefValue::Boolean(true)); let device = Device::new(MediaType::Screen, TypedSize2D::new(800., 600.)); let error_reporter = CSSErrorReporterTest; let stylesheets = vec![ diff --git a/tests/unit/util/thread.rs b/tests/unit/util/thread.rs deleted file mode 100644 index e76c39ffd35..00000000000 --- a/tests/unit/util/thread.rs +++ /dev/null @@ -1,13 +0,0 @@ -/* 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 std::borrow::ToOwned; -use util::thread::spawn_named; - -#[test] -fn spawn_named_test() { - spawn_named("Test".to_owned(), move || { - println!("I can run!"); - }); -} |