Various servodriver improvements (#34957)

* Make command line arguments match between servo and servodriver harnesses.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* webdriver: Ensure stylo preferences are updated when modifying pref values.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

* Add a manual delay when launching servodriver to allow attaching a debugger.

Signed-off-by: Josh Matthews <josh@joshmatthews.net>

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
Josh Matthews 2025-01-14 00:04:46 -05:00 committed by GitHub
parent acb6515837
commit 90b41259d2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View file

@ -14,7 +14,7 @@ use std::collections::{BTreeMap, HashMap};
use std::io::Cursor;
use std::net::{SocketAddr, SocketAddrV4};
use std::time::Duration;
use std::{fmt, mem, thread};
use std::{env, fmt, mem, process, thread};
use base::id::{BrowsingContextId, TopLevelBrowsingContextId};
use base64::Engine;
@ -473,6 +473,13 @@ impl Handler {
&mut self,
parameters: &NewSessionParameters,
) -> WebDriverResult<WebDriverResponse> {
if let Ok(value) = env::var("DELAY_AFTER_ACCEPT") {
let seconds = value.parse::<u64>().unwrap_or_default();
println!("Waiting for {} seconds...", seconds);
println!("lldb -p {}", process::id());
thread::sleep(Duration::from_secs(seconds));
}
let mut servo_capabilities = ServoCapabilities::new();
let processed_capabilities = parameters.match_browser(&mut servo_capabilities)?;
@ -1767,6 +1774,7 @@ impl Handler {
parameters: &SetPrefsParameters,
) -> WebDriverResult<WebDriverResponse> {
for (key, value) in parameters.prefs.iter() {
prefs::set_stylo_pref(key, value.0.clone());
prefs::pref_map()
.set(key, value.0.clone())
.expect("Failed to set preference");
@ -1779,6 +1787,7 @@ impl Handler {
parameters: &GetPrefsParameters,
) -> WebDriverResult<WebDriverResponse> {
let prefs = if parameters.prefs.is_empty() {
//TODO: support resetting stylo preferences
prefs::pref_map().reset_all();
BTreeMap::new()
} else {

View file

@ -503811,7 +503811,7 @@
[]
],
"servodriver.py": [
"f8f50537740eea0c169af68becd42c8bc22ae0f7",
"4d86b6c4fa6611a13912f5c7ff867fbd2f6d84f1",
[]
],
"webkit.py": [

View file

@ -62,7 +62,7 @@ def env_extras(**kwargs):
def env_options():
return {"server_host": "127.0.0.1",
"supports_debugger": False}
"supports_debugger": True}
def update_properties():
@ -88,9 +88,18 @@ class ServoWebDriverBrowser(WebDriverBrowser):
env["HOST_FILE"] = hosts_path
env["RUST_BACKTRACE"] = "1"
if debug_info:
env["DELAY_AFTER_ACCEPT"] = env.get("DELAY_SECS", "15")
args = [
"--hard-fail",
"--webdriver=%s" % port,
"-u", "Servo/wptrunner",
# See https://github.com/servo/servo/issues/30080.
# For some reason rustls does not like the certificate generated by the WPT tooling.
"--ignore-certificate-errors",
"--window-size", "800x600",
"-Z", "disable-text-aa,load-webfonts-synchronously,replace-surrogates",
"data:,",
]