收紧桌面壳事件注册失败处理
桌面壳新窗口策略增加可测试决策函数 桌面壳 WebView 事件注册失败改为启动阻断或日志记录 桌面壳配置门禁禁止事件注册静默吞错 宿主壳协议和共享决策记录补充事件注册失败规则
This commit is contained in:
@@ -2213,6 +2213,7 @@ const requiredRustHostSnippets = [
|
||||
'should_replay_desktop_webview_state_on_page_load',
|
||||
'PageLoadEvent::Finished',
|
||||
'replay_desktop_webview_state',
|
||||
'log_desktop_webview_state_replay_result',
|
||||
'window.is_focused()',
|
||||
'window.is_visible()',
|
||||
'window.is_minimized()',
|
||||
@@ -2242,6 +2243,8 @@ const requiredRustHostSnippets = [
|
||||
'desktop_external_navigation_url',
|
||||
'open_normalized_desktop_external_url',
|
||||
'open_desktop_external_navigation',
|
||||
'desktop_new_window_external_url',
|
||||
'desktop_new_window_response',
|
||||
'.on_navigation(move |url|',
|
||||
'.on_new_window(move |url, _features|',
|
||||
'.on_page_load(|window, payload|',
|
||||
@@ -2673,6 +2676,11 @@ for (const appSetupSnippet of [
|
||||
'crate::host_bridge::host_bridge_request',
|
||||
'desktop_main_window_config(app)?',
|
||||
'WebviewWindowBuilder::from_config',
|
||||
'desktop_new_window_external_url(&url)',
|
||||
'desktop_new_window_response',
|
||||
'register_desktop_network_events(&window)?',
|
||||
'register_desktop_navigation_events(&window)?',
|
||||
'log_desktop_webview_state_replay_result(',
|
||||
]) {
|
||||
if (!app.includes(appSetupSnippet)) {
|
||||
throw new Error(`desktop shell app.rs missing setup snippet ${appSetupSnippet}`);
|
||||
@@ -2683,6 +2691,9 @@ for (const blockedAppSetupSnippet of [
|
||||
'app.config().app.windows.get(0)',
|
||||
'app.config().app.windows[0]',
|
||||
'if let Some(config) = window_config',
|
||||
'let _ = register_desktop_network_events(&window)',
|
||||
'let _ = register_desktop_navigation_events(&window)',
|
||||
'let _ = emit_current_desktop_lifecycle_event(&window)',
|
||||
]) {
|
||||
if (app.includes(blockedAppSetupSnippet)) {
|
||||
throw new Error(
|
||||
@@ -2691,6 +2702,18 @@ for (const blockedAppSetupSnippet of [
|
||||
}
|
||||
}
|
||||
|
||||
for (const blockedLifecycleSnippet of [
|
||||
'let _ = register_desktop_network_events(window)',
|
||||
'let _ = register_desktop_navigation_events(window)',
|
||||
'let _ = emit_current_desktop_lifecycle_event(window)',
|
||||
]) {
|
||||
if (rustHostSource.includes(blockedLifecycleSnippet)) {
|
||||
throw new Error(
|
||||
`desktop shell WebView state replay failures must be logged or propagated, not ${blockedLifecycleSnippet}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
for (const snippet of requiredRustHostSnippets) {
|
||||
if (!rustHostSource.includes(snippet)) {
|
||||
throw new Error(`desktop shell Rust host bridge missing ${snippet}`);
|
||||
|
||||
Reference in New Issue
Block a user