From 90b41259d2ff7cb004aee6c913bad55b83d99e75 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 14 Jan 2025 00:04:46 -0500 Subject: [PATCH] Various servodriver improvements (#34957) * Make command line arguments match between servo and servodriver harnesses. Signed-off-by: Josh Matthews * webdriver: Ensure stylo preferences are updated when modifying pref values. Signed-off-by: Josh Matthews * Add a manual delay when launching servodriver to allow attaching a debugger. Signed-off-by: Josh Matthews --------- Signed-off-by: Josh Matthews --- components/webdriver_server/lib.rs | 11 ++++++++++- tests/wpt/meta/MANIFEST.json | 2 +- .../tools/wptrunner/wptrunner/browsers/servodriver.py | 11 ++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 4eb20c06b96..74b0a0b8f23 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -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 { + if let Ok(value) = env::var("DELAY_AFTER_ACCEPT") { + let seconds = value.parse::().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 { 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 { let prefs = if parameters.prefs.is_empty() { + //TODO: support resetting stylo preferences prefs::pref_map().reset_all(); BTreeMap::new() } else { diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index 6f66395b9ab..d5b980c5fc8 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -503811,7 +503811,7 @@ [] ], "servodriver.py": [ - "f8f50537740eea0c169af68becd42c8bc22ae0f7", + "4d86b6c4fa6611a13912f5c7ff867fbd2f6d84f1", [] ], "webkit.py": [ diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py index f8f50537740..4d86b6c4fa6 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/servodriver.py @@ -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:,", ]