diff options
-rw-r--r-- | components/util/opts.rs | 6 | ||||
-rw-r--r-- | components/util/resource_files.rs | 32 | ||||
-rw-r--r-- | ports/cef/core.rs | 11 |
3 files changed, 36 insertions, 13 deletions
diff --git a/components/util/opts.rs b/components/util/opts.rs index 59642a43b81..8ee877bd9fd 100644 --- a/components/util/opts.rs +++ b/components/util/opts.rs @@ -113,6 +113,9 @@ pub struct Opts { pub validate_display_list_geometry: bool, pub render_api: RenderApi, + + /// A specific path to find required resources (such as user-agent.css). + pub resources_path: Option<String>, } fn print_usage(app: &str, opts: &[getopts::OptGroup]) { @@ -180,6 +183,7 @@ pub fn default_opts() -> Opts { validate_display_list_geometry: false, profile_tasks: false, render_api: RenderApi::OpenGL, + resources_path: None, } } @@ -208,6 +212,7 @@ pub fn from_cmdline_args(args: &[String]) -> bool { getopts::optopt("Z", "debug", "A comma-separated string of debug options. Pass help to show available options.", ""), getopts::optflag("h", "help", "Print this message"), getopts::optopt("r", "render-api", "Set the rendering API to use", "gl|mesa"), + getopts::optopt("", "resources-path", "Path to find static resources", "/home/servo/resources"), ); let opt_match = match getopts::getopts(args, opts.as_slice()) { @@ -332,6 +337,7 @@ pub fn from_cmdline_args(args: &[String]) -> bool { dump_flow_tree: debug_options.contains(&"dump-flow-tree"), validate_display_list_geometry: debug_options.contains(&"validate-display-list-geometry"), render_api: render_api, + resources_path: opt_match.opt_str("resources-path"), }; set_opts(opts); diff --git a/components/util/resource_files.rs b/components/util/resource_files.rs index b40c93f2651..9dd0e199ad3 100644 --- a/components/util/resource_files.rs +++ b/components/util/resource_files.rs @@ -4,6 +4,7 @@ use std::io::{File, IoResult}; use std::path::Path; +use opts; #[cfg(not(target_os = "android"))] use std::io::fs::PathExtensions; @@ -17,20 +18,25 @@ pub fn resources_dir_path() -> Path { #[cfg(not(target_os = "android"))] pub fn resources_dir_path() -> Path { - // FIXME: Find a way to not rely on the executable being - // under `<servo source>/components/servo/target` - // or `<servo source>/components/servo/target/release`. - let mut path = os::self_exe_path().expect("can't get exe path"); - path.pop(); - path.pop(); - path.pop(); - path.push("resources"); - if !path.is_dir() { // self_exe_path() is probably in .../target/release - path.pop(); - path.pop(); - path.push("resources"); + match opts::get().resources_path { + Some(ref path) => Path::new(path), + None => { + // FIXME: Find a way to not rely on the executable being + // under `<servo source>/components/servo/target` + // or `<servo source>/components/servo/target/release`. + let mut path = os::self_exe_path().expect("can't get exe path"); + path.pop(); + path.pop(); + path.pop(); + path.push("resources"); + if !path.is_dir() { // self_exe_path() is probably in .../target/release + path.pop(); + path.pop(); + path.push("resources"); + } + path + } } - path } diff --git a/ports/cef/core.rs b/ports/cef/core.rs index 5f1f76bab74..b9541f775a2 100644 --- a/ports/cef/core.rs +++ b/ports/cef/core.rs @@ -43,6 +43,16 @@ static CEF_API_HASH_PLATFORM: &'static [u8] = b"6813214accbf2ebfb6bdcf8d00654650 #[cfg(target_os="linux")] static CEF_API_HASH_PLATFORM: &'static [u8] = b"2bc564c3871965ef3a2531b528bda3e17fa17a6d\0"; +#[cfg(target_os="linux")] +fn resources_path() -> Option<String> { + Some("../../servo/resources".into_string()) +} + +#[cfg(not(target_os="linux"))] +fn resources_path() -> Option<String> { + None +} + #[no_mangle] pub extern "C" fn cef_initialize(args: *const cef_main_args_t, settings: *mut cef_settings_t, @@ -102,6 +112,7 @@ pub extern "C" fn cef_initialize(args: *const cef_main_args_t, dump_flow_tree: false, validate_display_list_geometry: false, render_api: RenderApi::OpenGL, + resources_path: resources_path(), }); return 1 |