diff --git a/Cargo.lock b/Cargo.lock
index 35c513184b9..35444b693a6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2316,6 +2316,7 @@ dependencies = [
"servo_channel 0.0.1",
"servo_config 0.0.1",
"servo_url 0.0.1",
+ "std_test_override 0.0.1",
"threadpool 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2355,6 +2356,7 @@ dependencies = [
"servo_arc 0.1.1",
"servo_config 0.0.1",
"servo_url 0.0.1",
+ "std_test_override 0.0.1",
"url 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"uuid 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender_api 0.57.2 (git+https://github.com/servo/webrender)",
@@ -3392,6 +3394,7 @@ dependencies = [
"serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)",
"servo_geometry 0.0.1",
"servo_url 0.0.1",
+ "std_test_override 0.0.1",
"url 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -3525,6 +3528,13 @@ name = "stable_deref_trait"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+[[package]]
+name = "std_test_override"
+version = "0.0.1"
+dependencies = [
+ "embedder_traits 0.0.1",
+]
+
[[package]]
name = "string_cache"
version = "0.7.3"
@@ -3647,6 +3657,7 @@ dependencies = [
"servo_config 0.0.1",
"servo_url 0.0.1",
"size_of_test 0.0.1",
+ "std_test_override 0.0.1",
"style 0.0.1",
"style_traits 0.0.1",
]
diff --git a/components/bluetooth/Cargo.toml b/components/bluetooth/Cargo.toml
index 91271503090..0d77e584ba1 100644
--- a/components/bluetooth/Cargo.toml
+++ b/components/bluetooth/Cargo.toml
@@ -19,6 +19,3 @@ log = "0.4"
servo_config = {path = "../config"}
servo_rand = {path = "../rand"}
uuid = {version = "0.6", features = ["v4"]}
-
-[dev-dependencies]
-embedder_traits = { path = "../embedder_traits", features = ["tests"]}
diff --git a/components/bluetooth_traits/Cargo.toml b/components/bluetooth_traits/Cargo.toml
index 5446a996ebf..f21f289898c 100644
--- a/components/bluetooth_traits/Cargo.toml
+++ b/components/bluetooth_traits/Cargo.toml
@@ -14,6 +14,3 @@ ipc-channel = "0.11"
regex = "1.0"
serde = "1.0"
embedder_traits = { path = "../embedder_traits" }
-
-[dev-dependencies]
-embedder_traits = { path = "../embedder_traits", features = ["tests"] }
diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml
index 3f2096d9557..afef7de4c03 100644
--- a/components/compositing/Cargo.toml
+++ b/components/compositing/Cargo.toml
@@ -37,6 +37,3 @@ webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
[build-dependencies]
toml = "0.4.5"
-
-[dev-dependencies]
-embedder_traits = { path = "../embedder_traits", features = ["tests"]}
diff --git a/components/config/Cargo.toml b/components/config/Cargo.toml
index 60878c67b48..648a048a03b 100644
--- a/components/config/Cargo.toml
+++ b/components/config/Cargo.toml
@@ -26,7 +26,7 @@ url = "1.2"
[dev-dependencies]
env_logger = "0.5"
-embedder_traits = { path = "../embedder_traits", features = ["tests"] }
+std_test_override = { path = "../std_test_override" }
[target.'cfg(not(target_os = "android"))'.dependencies]
dirs = "1.0"
diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml
index 599f9f7e6e0..6daae904881 100644
--- a/components/constellation/Cargo.toml
+++ b/components/constellation/Cargo.toml
@@ -44,6 +44,3 @@ webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios")))'.dependencies]
gaol = {git = "https://github.com/servo/gaol"}
-
-[dev-dependencies]
-embedder_traits = { path = "../embedder_traits", features = ["tests"] }
diff --git a/components/embedder_traits/Cargo.toml b/components/embedder_traits/Cargo.toml
index da187d7d370..bcb0b1d2084 100644
--- a/components/embedder_traits/Cargo.toml
+++ b/components/embedder_traits/Cargo.toml
@@ -9,9 +9,6 @@ publish = false
name = "embedder_traits"
path = "lib.rs"
-[features]
-tests = []
-
[dependencies]
ipc-channel = "0.11"
lazy_static = "1"
diff --git a/components/embedder_traits/resources.rs b/components/embedder_traits/resources.rs
index b38b36181a0..9aebc11d06d 100644
--- a/components/embedder_traits/resources.rs
+++ b/components/embedder_traits/resources.rs
@@ -3,25 +3,21 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use std::path::PathBuf;
-use std::sync::RwLock;
+use std::sync::{Once, RwLock};
lazy_static! {
- static ref RES: RwLock