windows smoke: fake capture devices in the opt-in test mode
The CI VM has no microphone (getUserMedia → NotFoundError). With LOTUS_WEBVIEW2_DEBUG_PORT set the app also passes --use-fake-device-for-media-stream; permission requests still go through the real PermissionRequested handler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e2e43aa08c
commit
12ad4bf681
+11
-5
@@ -1294,9 +1294,12 @@ pub fn run() {
|
||||
///
|
||||
/// cinny-desktop #19: `LOTUS_WEBVIEW2_DEBUG_PORT=<port>` in the environment
|
||||
/// opens WebView2's DevTools port on localhost so the Windows smoke test can
|
||||
/// drive the installed app. WebView2's own `WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS`
|
||||
/// doesn't apply because the app sets its arguments explicitly. Off unless the
|
||||
/// variable holds a valid port; only whoever launches the app can set it.
|
||||
/// drive the installed app, and gives it Chromium's fake capture devices (the
|
||||
/// CI VM has no microphone; permission requests still go through the app's
|
||||
/// real PermissionRequested handler). WebView2's own
|
||||
/// `WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS` doesn't apply because the app sets
|
||||
/// its arguments explicitly. Off unless the variable holds a valid port; only
|
||||
/// whoever launches the app can set it.
|
||||
pub(crate) fn webview2_browser_args(debug_port: Option<&str>) -> String {
|
||||
let mut args = String::from(
|
||||
"--disable-features=msWebOOUI,msPdfOOUI --disable-background-timer-throttling --disable-renderer-backgrounding --disable-backgrounding-occluded-windows",
|
||||
@@ -1306,7 +1309,9 @@ pub(crate) fn webview2_browser_args(debug_port: Option<&str>) -> String {
|
||||
.filter(|p| *p >= 1024)
|
||||
{
|
||||
eprintln!("webview: DevTools port {port} open (LOTUS_WEBVIEW2_DEBUG_PORT)");
|
||||
args.push_str(&format!(" --remote-debugging-port={port}"));
|
||||
args.push_str(&format!(
|
||||
" --remote-debugging-port={port} --use-fake-device-for-media-stream"
|
||||
));
|
||||
}
|
||||
args
|
||||
}
|
||||
@@ -1320,7 +1325,8 @@ mod webview2_args_tests {
|
||||
let base = webview2_browser_args(None);
|
||||
assert!(base.contains("--disable-renderer-backgrounding"));
|
||||
assert!(!base.contains("remote-debugging"));
|
||||
assert!(webview2_browser_args(Some("9222")).ends_with(" --remote-debugging-port=9222"));
|
||||
assert!(webview2_browser_args(Some("9222"))
|
||||
.ends_with(" --remote-debugging-port=9222 --use-fake-device-for-media-stream"));
|
||||
for bad in ["", "abc", "80", "70000", "9222 --evil", "-1"] {
|
||||
assert_eq!(webview2_browser_args(Some(bad)), base, "{bad}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user