33e56fb56f
桌面壳移除未由 Rust 真实驱动的 network.statusChanged 能力 桌面网络状态保留 Rust 主站可达性主动查询 门禁禁止桌面网络事件回退到 WebView online 状态 文档和项目记忆同步桌面网络能力边界
118 lines
3.8 KiB
Rust
118 lines
3.8 KiB
Rust
use crate::host_bridge::capabilities::capabilities;
|
|
use crate::host_bridge::protocol::{
|
|
ok, HostBridgeRequest, HostBridgeResponse, HostBridgeRuntime, HOST_BRIDGE_VERSION,
|
|
};
|
|
use crate::shell::webview::desktop_platform;
|
|
use serde_json::json;
|
|
|
|
pub(crate) fn desktop_runtime() -> HostBridgeRuntime {
|
|
HostBridgeRuntime {
|
|
shell: "tauri_desktop",
|
|
platform: desktop_platform(),
|
|
host_version: env!("CARGO_PKG_VERSION"),
|
|
bridge_version: HOST_BRIDGE_VERSION,
|
|
capabilities: capabilities(),
|
|
}
|
|
}
|
|
|
|
pub(crate) fn desktop_host_bridge_runtime_response(
|
|
request: &HostBridgeRequest,
|
|
) -> HostBridgeResponse {
|
|
ok(request.id.clone(), json!(desktop_runtime()))
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use serde_json::{json, to_value};
|
|
|
|
#[test]
|
|
fn runtime_response_reports_tauri_shell() {
|
|
let result = to_value(desktop_runtime()).expect("runtime result");
|
|
|
|
assert_eq!(result["shell"], "tauri_desktop");
|
|
assert_eq!(result["bridgeVersion"], HOST_BRIDGE_VERSION);
|
|
assert_eq!(result["capabilities"], json!(capabilities()));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("appearance.getColorScheme")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("host.events")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("app.lifecycle")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("network.status")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("share.open")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("share.setTarget")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("navigation.openNativePage")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("app.reloadWebView")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("app.setTitle")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("app.setBadgeCount")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("clipboard.readText")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.exportText")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.importText")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.importDocument")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.exportImage")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.importImage")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.importAudio")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.exportAudio")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("file.imageDropped")));
|
|
assert!(result["capabilities"]
|
|
.as_array()
|
|
.unwrap()
|
|
.contains(&json!("notification.showLocal")));
|
|
}
|
|
}
|