mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Add cmd line option to set user agent. Improves github when used.
This commit is contained in:
parent
76d1d78cc0
commit
dc1d66d3ce
3 changed files with 17 additions and 7 deletions
|
@ -164,24 +164,26 @@ pub fn load_whole_resource(resource_task: &ResourceTask, url: Url)
|
||||||
pub type ResourceTask = Sender<ControlMsg>;
|
pub type ResourceTask = Sender<ControlMsg>;
|
||||||
|
|
||||||
/// Create a ResourceTask
|
/// Create a ResourceTask
|
||||||
pub fn new_resource_task() -> ResourceTask {
|
pub fn new_resource_task(user_agent: Option<String>) -> ResourceTask {
|
||||||
let (setup_chan, setup_port) = channel();
|
let (setup_chan, setup_port) = channel();
|
||||||
let builder = TaskBuilder::new().named("ResourceManager");
|
let builder = TaskBuilder::new().named("ResourceManager");
|
||||||
builder.spawn(proc() {
|
builder.spawn(proc() {
|
||||||
ResourceManager::new(setup_port).start();
|
ResourceManager::new(setup_port, user_agent).start();
|
||||||
});
|
});
|
||||||
setup_chan
|
setup_chan
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ResourceManager {
|
struct ResourceManager {
|
||||||
from_client: Receiver<ControlMsg>,
|
from_client: Receiver<ControlMsg>,
|
||||||
|
user_agent: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl ResourceManager {
|
impl ResourceManager {
|
||||||
fn new(from_client: Receiver<ControlMsg>) -> ResourceManager {
|
fn new(from_client: Receiver<ControlMsg>, user_agent: Option<String>) -> ResourceManager {
|
||||||
ResourceManager {
|
ResourceManager {
|
||||||
from_client : from_client,
|
from_client: from_client,
|
||||||
|
user_agent: user_agent,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,6 +204,9 @@ impl ResourceManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load(&self, load_data: LoadData, start_chan: Sender<LoadResponse>) {
|
fn load(&self, load_data: LoadData, start_chan: Sender<LoadResponse>) {
|
||||||
|
let mut load_data = load_data;
|
||||||
|
load_data.headers.user_agent = self.user_agent.clone();
|
||||||
|
|
||||||
let loader = match load_data.url.scheme.as_slice() {
|
let loader = match load_data.url.scheme.as_slice() {
|
||||||
"file" => file_loader::factory,
|
"file" => file_loader::factory,
|
||||||
"http" | "https" => http_loader::factory,
|
"http" | "https" => http_loader::factory,
|
||||||
|
@ -249,13 +254,13 @@ impl Iterator<Vec<u8>> for ProgressMsgPortIterator {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_exit() {
|
fn test_exit() {
|
||||||
let resource_task = new_resource_task();
|
let resource_task = new_resource_task(None);
|
||||||
resource_task.send(Exit);
|
resource_task.send(Exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_bad_scheme() {
|
fn test_bad_scheme() {
|
||||||
let resource_task = new_resource_task();
|
let resource_task = new_resource_task(None);
|
||||||
let (start_chan, start) = channel();
|
let (start_chan, start) = channel();
|
||||||
let url = Url::parse("bogus://whatever").unwrap();
|
let url = Url::parse("bogus://whatever").unwrap();
|
||||||
resource_task.send(Load(LoadData::new(url), start_chan));
|
resource_task.send(Load(LoadData::new(url), start_chan));
|
||||||
|
|
|
@ -90,6 +90,9 @@ pub struct Opts {
|
||||||
|
|
||||||
/// The initial requested size of the window.
|
/// The initial requested size of the window.
|
||||||
pub initial_window_size: TypedSize2D<ScreenPx, uint>,
|
pub initial_window_size: TypedSize2D<ScreenPx, uint>,
|
||||||
|
|
||||||
|
/// An optional string allowing the user agent to be set for testing.
|
||||||
|
pub user_agent: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_usage(app: &str, opts: &[getopts::OptGroup]) {
|
fn print_usage(app: &str, opts: &[getopts::OptGroup]) {
|
||||||
|
@ -126,6 +129,7 @@ pub fn from_cmdline_args(args: &[String]) -> Option<Opts> {
|
||||||
getopts::optflag("", "trace-layout", "Write layout trace to external file for debugging."),
|
getopts::optflag("", "trace-layout", "Write layout trace to external file for debugging."),
|
||||||
getopts::optflag("", "devtools", "Start remote devtools server"),
|
getopts::optflag("", "devtools", "Start remote devtools server"),
|
||||||
getopts::optopt("", "resolution", "Set window resolution.", "800x600"),
|
getopts::optopt("", "resolution", "Set window resolution.", "800x600"),
|
||||||
|
getopts::optopt("u", "user-agent", "Set custom user agent string", "NCSA Mosaic/1.0 (X11;SunOS 4.1.4 sun4m)"),
|
||||||
getopts::optflag("h", "help", "Print this message")
|
getopts::optflag("h", "help", "Print this message")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -238,6 +242,7 @@ pub fn from_cmdline_args(args: &[String]) -> Option<Opts> {
|
||||||
trace_layout: trace_layout,
|
trace_layout: trace_layout,
|
||||||
devtools_server: opt_match.opt_present("devtools"),
|
devtools_server: opt_match.opt_present("devtools"),
|
||||||
initial_window_size: initial_window_size,
|
initial_window_size: initial_window_size,
|
||||||
|
user_agent: opt_match.opt_str("u"),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ pub fn run(opts: opts::Opts) {
|
||||||
.spawn(proc() {
|
.spawn(proc() {
|
||||||
let opts = &opts_clone;
|
let opts = &opts_clone;
|
||||||
// Create a Servo instance.
|
// Create a Servo instance.
|
||||||
let resource_task = new_resource_task();
|
let resource_task = new_resource_task(opts.user_agent.clone());
|
||||||
// If we are emitting an output file, then we need to block on
|
// If we are emitting an output file, then we need to block on
|
||||||
// image load or we risk emitting an output file missing the
|
// image load or we risk emitting an output file missing the
|
||||||
// image.
|
// image.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue