锁定桌面网络状态不可用响应

桌面网络状态探测失败转为稳定 host_error

桌面网络状态单测覆盖不可用响应 code 和 message

桌面壳配置检查反查网络不可用边界
This commit is contained in:
2026-06-20 13:01:59 +08:00
parent 808e9740f8
commit b6b428e531
2 changed files with 24 additions and 2 deletions
+3 -1
View File
@@ -1920,8 +1920,10 @@ if (
for (const snippet of [
'resolve_desktop_host_bridge_network_status',
'resolve_desktop_host_bridge_network_status_payload',
'network_status_unavailable_response',
'spawn_blocking(resolve_desktop_network_status)',
'failed(request.id.clone(), "host_error", error)',
'"network status unavailable"',
'network_status_unavailable_response_is_stable',
]) {
if (!desktopHostBridgeNetworkSource.includes(snippet)) {
throw new Error(`desktop shell network module is missing ${snippet}`);
@@ -13,6 +13,26 @@ pub(crate) async fn resolve_desktop_host_bridge_network_status(
) -> HostBridgeResponse {
match resolve_desktop_host_bridge_network_status_payload().await {
Ok(status) => ok(request.id.clone(), status),
Err(error) => failed(request.id.clone(), "host_error", error),
Err(_) => network_status_unavailable_response(request),
}
}
fn network_status_unavailable_response(request: &HostBridgeRequest) -> HostBridgeResponse {
failed(request.id.clone(), "host_error", "network status unavailable")
}
#[cfg(test)]
mod tests {
use super::*;
use crate::host_bridge::protocol::request;
#[test]
fn network_status_unavailable_response_is_stable() {
let response = network_status_unavailable_response(&request("network.status"));
assert!(!response.ok);
let error = response.error.expect("network status error");
assert_eq!(error.code, "host_error");
assert_eq!(error.message, "network status unavailable");
}
}