收口桌面运行时响应边界

将 Tauri host.getRuntime 成功响应包装收口到 runtime 模块

让桌面 dispatch 只委托运行时请求

同步桌面壳配置门禁和共享记忆
This commit is contained in:
2026-06-20 02:29:09 +08:00
parent 40603e0163
commit 87f2532a02
4 changed files with 21 additions and 8 deletions
+6 -1
View File
@@ -1718,6 +1718,9 @@ if (!rustHostSource.includes('host_version: env!("CARGO_PKG_VERSION")')) {
for (const runtimeSnippet of [
'pub(crate) fn desktop_runtime() -> HostBridgeRuntime',
'pub(crate) fn desktop_host_bridge_runtime_response(',
'request: &HostBridgeRequest',
'ok(request.id.clone(), json!(desktop_runtime()))',
'shell: "tauri_desktop"',
'platform: desktop_platform()',
'host_version: env!("CARGO_PKG_VERSION")',
@@ -1731,8 +1734,10 @@ for (const runtimeSnippet of [
if (
!desktopHostBridgeDispatchSource.includes(
'"host.getRuntime" => ok(request.id, json!(desktop_runtime()))',
'"host.getRuntime" => desktop_host_bridge_runtime_response(&request)',
) ||
desktopHostBridgeDispatchSource.includes('json!(desktop_runtime())') ||
desktopHostBridgeDispatchSource.includes(' ok(') ||
desktopHostBridgeDispatchSource.includes('HostBridgeRuntime') ||
desktopHostBridgeDispatchSource.includes('HOST_BRIDGE_VERSION') ||
desktopHostBridgeDispatchSource.includes('capabilities()') ||
@@ -16,14 +16,13 @@ use crate::host_bridge::navigation::{
use crate::host_bridge::network::resolve_desktop_host_bridge_network_status;
use crate::host_bridge::notifications::show_desktop_local_notification;
use crate::host_bridge::protocol::{
failed, ok, validate_request, HostBridgeRequest, HostBridgeResponse,
failed, validate_request, HostBridgeRequest, HostBridgeResponse,
};
use crate::host_bridge::runtime::desktop_runtime;
use crate::host_bridge::runtime::desktop_host_bridge_runtime_response;
use crate::host_bridge::share::{
open_desktop_host_bridge_share, set_desktop_host_bridge_share_target,
};
use crate::host_bridge::title::set_desktop_host_bridge_window_title;
use serde_json::json;
pub(crate) fn resolve_host_bridge_request(request: HostBridgeRequest) -> HostBridgeResponse {
if let Some(response) = validate_request(&request) {
@@ -31,7 +30,7 @@ pub(crate) fn resolve_host_bridge_request(request: HostBridgeRequest) -> HostBri
}
match request.method.as_str() {
"host.getRuntime" => ok(request.id, json!(desktop_runtime())),
"host.getRuntime" => desktop_host_bridge_runtime_response(&request),
_ => failed(
request.id,
"unsupported_method",
@@ -1,6 +1,9 @@
use crate::host_bridge::capabilities::capabilities;
use crate::host_bridge::protocol::{HostBridgeRuntime, HOST_BRIDGE_VERSION};
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 {
@@ -12,6 +15,12 @@ pub(crate) fn desktop_runtime() -> HostBridgeRuntime {
}
}
pub(crate) fn desktop_host_bridge_runtime_response(
request: &HostBridgeRequest,
) -> HostBridgeResponse {
ok(request.id.clone(), json!(desktop_runtime()))
}
#[cfg(test)]
mod tests {
use super::*;
File diff suppressed because one or more lines are too long