收紧窗口标题载荷边界
将 app.setTitle 标题长度和控制字符规则提升到共享 HostBridge 契约 让 H5 facade 和 Tauri 壳按共享窗口标题边界归一化载荷 增加标题边界测试和三端壳总门禁反查 同步宿主壳协议文档和共享决策记录
This commit is contained in:
@@ -1025,6 +1025,12 @@ describe('hostBridge', () => {
|
||||
await expect(setHostAppTitle({ title: ' 拼图 - 陶泥儿 ' })).resolves.toBe(
|
||||
true,
|
||||
);
|
||||
await expect(
|
||||
setHostAppTitle({ title: 'a'.repeat(90) }),
|
||||
).resolves.toBe(true);
|
||||
await expect(setHostAppTitle({ title: '拼图\n陶泥儿' })).resolves.toBe(
|
||||
false,
|
||||
);
|
||||
await expect(setHostAppBadgeCount({ count: 7 })).resolves.toBe(true);
|
||||
await expect(getHostNetworkStatus()).resolves.toEqual({
|
||||
isConnected: true,
|
||||
@@ -1167,6 +1173,14 @@ describe('hostBridge', () => {
|
||||
},
|
||||
}),
|
||||
});
|
||||
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
|
||||
request: expect.objectContaining({
|
||||
method: 'app.setTitle',
|
||||
payload: {
|
||||
title: 'a'.repeat(80),
|
||||
},
|
||||
}),
|
||||
});
|
||||
expect(invoke).toHaveBeenCalledWith('host_bridge_request', {
|
||||
request: expect.objectContaining({
|
||||
method: 'app.setBadgeCount',
|
||||
|
||||
@@ -26,6 +26,7 @@ import type {
|
||||
} from '../../../packages/shared/src/contracts/hostBridge';
|
||||
import {
|
||||
HOST_BRIDGE_AUDIO_MIME_TYPES,
|
||||
HOST_BRIDGE_APP_TITLE_MAX_LENGTH,
|
||||
HOST_BRIDGE_DOCUMENT_MIME_TYPES,
|
||||
HOST_BRIDGE_IMAGE_MIME_TYPES,
|
||||
HOST_BRIDGE_NATIVE_APP_QUERY,
|
||||
@@ -37,6 +38,7 @@ import {
|
||||
HOST_BRIDGE_WECHAT_MINI_PROGRAM_SOURCE_QUERY,
|
||||
isHostBridgeCapability,
|
||||
normalizeHostBridgeBadgeCount,
|
||||
normalizeHostBridgeAppTitle,
|
||||
normalizeHostBridgeClipboardText,
|
||||
normalizeHostBridgeColorScheme,
|
||||
normalizeHostBridgeConnectionType,
|
||||
@@ -1145,15 +1147,13 @@ export async function showHostLocalNotification(
|
||||
}
|
||||
|
||||
export async function setHostAppTitle({ title }: HostAppTitleRequest) {
|
||||
const normalizedTitle = title.trim();
|
||||
const normalizedTitle = normalizeHostBridgeAppTitle(title);
|
||||
if (!normalizedTitle || !canUseNativeHostCapability('app.setTitle')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return await requestNativeHostBoolean('app.setTitle', {
|
||||
title: normalizedTitle,
|
||||
});
|
||||
return await requestNativeHostBoolean('app.setTitle', normalizedTitle);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user