Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add a pref for a default homepage.
  • Loading branch information
jgraham committed Sep 24, 2015
1 parent 79e5489 commit 8d9ab50
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 15 deletions.
27 changes: 17 additions & 10 deletions components/util/opts.rs
Expand Up @@ -10,6 +10,7 @@ use geometry::ScreenPx;
use getopts::Options;
use num_cpus;
use prefs::{self, PrefValue};
use resource_files::set_resources_path;
use std::cmp;
use std::default::Default;
use std::env;
Expand Down Expand Up @@ -155,9 +156,6 @@ pub struct Opts {
/// Whether to show an error when display list geometry escapes flow overflow regions.
pub validate_display_list_geometry: bool,

/// A specific path to find required resources (such as user-agent.css).
pub resources_path: Option<String>,

/// Whether MIME sniffing should be used
pub sniff_mime_types: bool,

Expand Down Expand Up @@ -409,7 +407,6 @@ pub fn default_opts() -> Opts {
validate_display_list_geometry: false,
profile_tasks: false,
profile_script_events: false,
resources_path: None,
sniff_mime_types: false,
disable_share_style_cache: false,
parallel_display_list_building: false,
Expand Down Expand Up @@ -460,6 +457,8 @@ pub fn from_cmdline_args(args: &[String]) {
Err(f) => args_fail(&f.to_string()),
};

set_resources_path(opt_match.opt_str("resources-path"));

if opt_match.opt_present("h") || opt_match.opt_present("help") {
print_usage(app_name, &opts);
process::exit(0);
Expand All @@ -480,12 +479,21 @@ pub fn from_cmdline_args(args: &[String]) {
}

let cwd = env::current_dir().unwrap();
let url = if opt_match.free.is_empty() {
print_usage(app_name, &opts);
args_fail("servo asks that you provide a URL")
let homepage_pref = prefs::get_pref("shell.homepage");
let url_opt = if !opt_match.free.is_empty() {
Some(&opt_match.free[0][..])
} else {
parse_url_or_filename(&cwd, &opt_match.free[0])
.unwrap_or_else(|()| args_fail("URL parsing failed"))
homepage_pref.as_string()
};
let url = match url_opt {
Some(url_string) => {
parse_url_or_filename(&cwd, url_string)
.unwrap_or_else(|()| args_fail("URL parsing failed"))
},
None => {
print_usage(app_name, &opts);
args_fail("servo asks that you provide a URL")
}
};

let tile_size: usize = match opt_match.opt_str("s") {
Expand Down Expand Up @@ -602,7 +610,6 @@ pub fn from_cmdline_args(args: &[String]) {
dump_display_list_optimized: debug_options.dump_display_list_optimized,
relayout_event: debug_options.relayout_event,
validate_display_list_geometry: debug_options.validate_display_list_geometry,
resources_path: opt_match.opt_str("resources-path"),
sniff_mime_types: opt_match.opt_present("sniff-mime-types"),
disable_share_style_cache: debug_options.disable_share_style_cache,
parallel_display_list_building: debug_options.parallel_display_list_building,
Expand Down
15 changes: 13 additions & 2 deletions components/util/resource_files.rs
Expand Up @@ -5,6 +5,18 @@
use std::fs::File;
use std::io::{self, Read};
use std::path::PathBuf;
use std::sync::{Arc, Mutex};

lazy_static! {
static ref CMD_RESOURCE_DIR: Arc<Mutex<Option<String>>> = {
Arc::new(Mutex::new(None))
};
}

pub fn set_resources_path(path: Option<String>) {
let mut dir = CMD_RESOURCE_DIR.lock().unwrap();
*dir = path;
}

#[cfg(target_os = "android")]
pub fn resources_dir_path() -> PathBuf {
Expand All @@ -13,11 +25,10 @@ pub fn resources_dir_path() -> PathBuf {

#[cfg(not(target_os = "android"))]
pub fn resources_dir_path() -> PathBuf {
use opts;
use std::env;
use std::fs::PathExt;

match opts::get().resources_path {
match *CMD_RESOURCE_DIR.lock().unwrap() {
Some(ref path) => PathBuf::from(path),
None => {
// FIXME: Find a way to not rely on the executable being
Expand Down
1 change: 0 additions & 1 deletion ports/cef/core.rs
Expand Up @@ -74,7 +74,6 @@ pub extern "C" fn cef_initialize(args: *const cef_main_args_t,
temp_opts.hard_fail = false;
temp_opts.enable_text_antialiasing = true;
temp_opts.enable_canvas_antialiasing = true;
temp_opts.resources_path = None;
temp_opts.url = None;
opts::set_defaults(temp_opts);

Expand Down
3 changes: 2 additions & 1 deletion resources/prefs.json
Expand Up @@ -9,5 +9,6 @@
"layout.flex-direction.enabled": false,
"layout.text-orientation.enabled": false,
"layout.viewport.enabled": false,
"layout.writing-mode.enabled": false
"layout.writing-mode.enabled": false,
"shell.homepage": "http://doc.servo.org/servo/index.html"
}
15 changes: 14 additions & 1 deletion tests/reftest.rs
Expand Up @@ -25,6 +25,7 @@ use std::io::{self, Read, Result};
use std::path::{Path, PathBuf};
use std::process;
use std::process::{Command, Stdio};
use std::thread::sleep_ms;
use test::run_tests_console;
use test::{AutoColor, DynTestName, DynTestFn, TestDesc, TestOpts, TestDescAndFn, ShouldPanic};
use url::Url;
Expand Down Expand Up @@ -111,10 +112,22 @@ fn run(test_opts: TestOpts, all_tests: Vec<TestDescAndFn>,
// Verify that we're passing in valid servo arguments. Otherwise, servo
// will exit before we've run any tests, and it will appear to us as if
// all the tests are failing.
let output = match Command::new(&servo_path()).args(&servo_args).output() {
let mut command = Command::new(&servo_path());
command
.args(&servo_args)
.arg("-z")
.arg("about:blank");

let mut child = match command.spawn() {
Ok(p) => p,
Err(e) => panic!("failed to execute process: {}", e),
};

// Wait for the shell to launch or to fail
sleep_ms(1000);
child.kill().unwrap();
let output = try!(child.wait_with_output());

let stderr = String::from_utf8(output.stderr).unwrap();

if stderr.contains("Unrecognized") {
Expand Down

0 comments on commit 8d9ab50

Please sign in to comment.