aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorBastien Orivel <eijebong@bananium.fr>2018-12-09 19:11:45 +0100
committerBastien Orivel <eijebong@bananium.fr>2018-12-20 20:53:13 +0100
commit16beb65d497d323ca64d2fd7f98ac11877c5296e (patch)
tree0d9094fbd007dcc08774c0393c1abb840dafbbcf /components
parent71f9619e60cbb47349e48cd679179ebd5678e789 (diff)
downloadservo-16beb65d497d323ca64d2fd7f98ac11877c5296e.tar.gz
servo-16beb65d497d323ca64d2fd7f98ac11877c5296e.zip
Disable gaol on android
Diffstat (limited to 'components')
-rw-r--r--components/constellation/Cargo.toml2
-rw-r--r--components/constellation/lib.rs4
-rw-r--r--components/constellation/pipeline.rs24
-rw-r--r--components/servo/Cargo.toml2
-rw-r--r--components/servo/lib.rs10
5 files changed, 32 insertions, 10 deletions
diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml
index f9e9b351180..e023a2d2044 100644
--- a/components/constellation/Cargo.toml
+++ b/components/constellation/Cargo.toml
@@ -45,5 +45,5 @@ servo_url = {path = "../url"}
webvr_traits = {path = "../webvr_traits"}
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
-[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios")))'.dependencies]
+[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android")))'.dependencies]
gaol = {git = "https://github.com/servo/gaol"}
diff --git a/components/constellation/lib.rs b/components/constellation/lib.rs
index e4278c595cc..77b367d25fd 100644
--- a/components/constellation/lib.rs
+++ b/components/constellation/lib.rs
@@ -17,7 +17,7 @@ mod constellation;
mod event_loop;
mod network_listener;
mod pipeline;
-#[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+#[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
mod sandboxing;
mod session_history;
mod timer_scheduler;
@@ -26,5 +26,5 @@ pub use crate::constellation::{
Constellation, FromCompositorLogger, FromScriptLogger, InitialConstellationState,
};
pub use crate::pipeline::UnprivilegedPipelineContent;
-#[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+#[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
pub use crate::sandboxing::content_process_sandbox_profile;
diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs
index 4a04adec0dd..e1930b379eb 100644
--- a/components/constellation/pipeline.rs
+++ b/components/constellation/pipeline.rs
@@ -571,7 +571,29 @@ impl UnprivilegedPipelineContent {
}
}
- #[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+ #[cfg(target_os = "android")]
+ pub fn spawn_multiprocess(self) -> Result<(), Error> {
+ use ipc_channel::ipc::IpcOneShotServer;
+ // Note that this function can panic, due to process creation,
+ // avoiding this panic would require a mechanism for dealing
+ // with low-resource scenarios.
+ let (server, token) = IpcOneShotServer::<IpcSender<UnprivilegedPipelineContent>>::new()
+ .expect("Failed to create IPC one-shot server.");
+
+ let path_to_self = env::current_exe().expect("Failed to get current executor.");
+ let mut child_process = process::Command::new(path_to_self);
+ self.setup_common(&mut child_process, token);
+ let _ = child_process
+ .spawn()
+ .expect("Failed to start unsandboxed child process!");
+
+ let (_receiver, sender) = server.accept().expect("Server failed to accept.");
+ sender.send(self)?;
+
+ Ok(())
+ }
+
+ #[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
pub fn spawn_multiprocess(self) -> Result<(), Error> {
use crate::sandboxing::content_process_sandbox_profile;
use gaol::sandbox::{self, Sandbox, SandboxMethods};
diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml
index 4be1917cc97..b69dd34da62 100644
--- a/components/servo/Cargo.toml
+++ b/components/servo/Cargo.toml
@@ -71,5 +71,5 @@ webdriver_server = {path = "../webdriver_server", optional = true}
webvr = {path = "../webvr"}
webvr_traits = {path = "../webvr_traits"}
-[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios")))'.dependencies]
+[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android")))'.dependencies]
gaol = {git = "https://github.com/servo/gaol"}
diff --git a/components/servo/lib.rs b/components/servo/lib.rs
index 93cda15c419..a5fe0b5ffda 100644
--- a/components/servo/lib.rs
+++ b/components/servo/lib.rs
@@ -68,14 +68,14 @@ use canvas::webgl_thread::WebGLThreads;
use compositing::compositor_thread::{CompositorProxy, CompositorReceiver, InitialCompositorState};
use compositing::windowing::{WindowEvent, WindowMethods};
use compositing::{IOCompositor, RenderNotifier, ShutdownState};
-#[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+#[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
use constellation::content_process_sandbox_profile;
use constellation::{Constellation, InitialConstellationState, UnprivilegedPipelineContent};
use constellation::{FromCompositorLogger, FromScriptLogger};
use crossbeam_channel::{unbounded, Sender};
use embedder_traits::{EmbedderMsg, EmbedderProxy, EmbedderReceiver, EventLoopWaker};
use env_logger::Builder as EnvLoggerBuilder;
-#[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+#[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
use gaol::sandbox::{ChildSandbox, ChildSandboxMethods};
use gfx::font_cache_thread::FontCacheThread;
use ipc_channel::ipc::{self, IpcSender};
@@ -661,14 +661,14 @@ pub fn run_content_process(token: String) {
);
}
-#[cfg(all(not(target_os = "windows"), not(target_os = "ios")))]
+#[cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android")))]
fn create_sandbox() {
ChildSandbox::new(content_process_sandbox_profile())
.activate()
.expect("Failed to activate sandbox!");
}
-#[cfg(any(target_os = "windows", target_os = "ios"))]
+#[cfg(any(target_os = "windows", target_os = "ios", target_os = "android"))]
fn create_sandbox() {
- panic!("Sandboxing is not supported on Windows or iOS.");
+ panic!("Sandboxing is not supported on Windows, iOS and android.");
}