Configure devtools server via preferences

This commit is contained in:
Paul Rouget 2020-07-17 08:31:26 +02:00
parent b8d6b1d52d
commit 2c36754bf7
5 changed files with 42 additions and 12 deletions

1
Cargo.lock generated
View file

@ -1242,6 +1242,7 @@ dependencies = [
"msg",
"serde",
"serde_json",
"servo_config",
"servo_rand",
"servo_url",
"time",

View file

@ -112,9 +112,12 @@ pub struct Opts {
/// remote Firefox debugger connections.
pub debugger_port: Option<u16>,
/// `None` to disable devtools or `Some` with a port number to start a server to listen to
/// remote Firefox devtools connections.
pub devtools_port: Option<u16>,
/// Port number to start a server to listen to remote Firefox devtools connections.
/// 0 for random port.
pub devtools_port: u16,
/// Start the devtools server at startup
pub devtools_server_enabled: bool,
/// `None` to disable WebDriver or `Some` with a port number to start a server to listen to
/// remote WebDriver commands.
@ -482,7 +485,8 @@ pub fn default_opts() -> Opts {
enable_canvas_antialiasing: true,
trace_layout: false,
debugger_port: None,
devtools_port: None,
devtools_port: 0,
devtools_server_enabled: false,
webdriver_port: None,
initial_window_size: Size2D::new(1024, 740),
multiprocess: false,
@ -802,11 +806,22 @@ pub fn from_cmdline_args(mut opts: Options, args: &[String]) -> ArgumentParsingR
})
});
// Set default port 0 for a random port to be selected.
let devtools_port = opt_match.opt_default("devtools", "0").map(|port| {
port.parse()
.unwrap_or_else(|err| args_fail(&format!("Error parsing option: --devtools ({})", err)))
});
let (devtools_enabled, devtools_port) = if opt_match.opt_present("devtools") {
let port = opt_match
.opt_str("devtools")
.map(|port| {
port.parse().unwrap_or_else(|err| {
args_fail(&format!("Error parsing option: --devtools ({})", err))
})
})
.unwrap_or(pref!(devtools.server.port));
(true, port as u16)
} else {
(
pref!(devtools.server.enabled),
pref!(devtools.server.port) as u16,
)
};
let webdriver_port = opt_match.opt_default("webdriver", "7000").map(|port| {
port.parse().unwrap_or_else(|err| {
@ -874,6 +889,7 @@ pub fn from_cmdline_args(mut opts: Options, args: &[String]) -> ArgumentParsingR
trace_layout: debug_options.trace_layout,
debugger_port: debugger_port,
devtools_port: devtools_port,
devtools_server_enabled: devtools_enabled,
webdriver_port: webdriver_port,
initial_window_size: initial_window_size,
multiprocess: opt_match.opt_present("M"),

View file

@ -123,6 +123,12 @@ mod gen {
},
},
},
devtools: {
server: {
enabled: bool,
port: i64,
},
},
dom: {
webgpu: {
enabled: bool,

View file

@ -22,6 +22,7 @@ log = "0.4"
msg = { path = "../msg" }
serde = "1.0"
serde_json = "1.0"
servo_config = { path = "../config" }
servo_rand = { path = "../rand" }
servo_url = { path = "../url" }
time = "0.1"

View file

@ -393,9 +393,15 @@ where
let mem_profiler_chan = profile_mem::Profiler::create(opts.mem_profiler_period);
let debugger_chan = opts.debugger_port.map(|port| debugger::start_server(port));
let devtools_chan = opts
.devtools_port
.map(|port| devtools::start_server(port, embedder_proxy.clone()));
let devtools_chan = if opts.devtools_server_enabled {
Some(devtools::start_server(
opts.devtools_port,
embedder_proxy.clone(),
))
} else {
None
};
let coordinates = window.get_coordinates();
let device_pixel_ratio = coordinates.hidpi_factor.get();