接入宿主壳原生剪贴板复制路径

H5 复制服务在 native_app 中优先调用 clipboard.writeText

保留浏览器 Clipboard API 与 legacy selection copy 回退路径

补充 HostBridge 剪贴板测试和宿主壳能力文档
This commit is contained in:
2026-06-17 23:40:57 +08:00
parent eb9981e67d
commit b03c910f49
7 changed files with 110 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ import {
requestWechatMiniProgramPhoneLogin,
resolveHostRuntime,
setHostShareTarget,
writeHostClipboardText,
} from './hostBridge';
import { resetNativeAppHostBridgeForTest } from './nativeAppHostBridge';
@@ -307,6 +308,9 @@ describe('hostBridge', () => {
shell: 'tauri_desktop',
platform: 'linux',
});
await expect(
writeHostClipboardText({ text: '作品号 PZ-1' }),
).resolves.toBe(true);
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
request: expect.objectContaining({
@@ -328,6 +332,14 @@ describe('hostBridge', () => {
},
}),
});
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
request: expect.objectContaining({
method: 'clipboard.writeText',
payload: {
text: '作品号 PZ-1',
},
}),
});
});
test('原生 App 宿主不支持能力时回退到 H5 路径', async () => {
@@ -358,6 +370,9 @@ describe('hostBridge', () => {
orderId: 'order-1',
}),
).resolves.toBe(false);
await expect(
writeHostClipboardText({ text: '作品号 PZ-1' }),
).resolves.toBe(false);
});
test('普通浏览器不处理宿主文本导出', async () => {