feat: 实现右键菜单注册与点击分流逻辑

- 新增 utils/contextMenu.ts 封装菜单配置和解析函数
- 在 background.ts 监听 onInstalled 初始化菜单
- 实现 contextMenus.onClicked 点击事件处理
- 分流逻辑:优先发送到侧边栏,否则打开 options 页面
- 添加 contextMenu 单元测试(15个测试用例)
- 更新 vitest.setup.ts 添加 contextMenus mock
This commit is contained in:
雨霖铃
2026-05-20 20:41:24 +08:00
parent 3d375f78f3
commit 3fb99ea49f
4 changed files with 355 additions and 1 deletions
+22
View File
@@ -70,6 +70,28 @@ Object.defineProperty(global, 'chrome', {
getAll: vi.fn().mockResolvedValue([]),
remove: vi.fn().mockResolvedValue(undefined),
},
contextMenus: {
create: vi.fn(),
onClicked: {
addListener: vi.fn(),
removeListener: vi.fn(),
},
ContextType: {
ALL: 'all',
PAGE: 'page',
FRAME: 'frame',
SELECTION: 'selection',
LINK: 'link',
EDITABLE: 'editable',
IMAGE: 'image',
VIDEO: 'video',
AUDIO: 'audio',
LAUNCHER: 'launcher',
BROWSER_ACTION: 'browser_action',
PAGE_ACTION: 'page_action',
ACTION: 'action',
},
},
},
writable: true,
});