Skip to content

Handle desktop microphone permission without web prompts - #147

Merged
shaohaozhi286 merged 1 commit into
masterfrom
codex/desktop-microphone-permission-20261019
Oct 19, 2026
Merged

shaohaozhi286 merged 1 commit into
masterfrom
codex/desktop-microphone-permission-20261019

Conversation

@shaohaozhi286

Copy link
Copy Markdown
Collaborator

首次点击录音时,原生 Desktop 现在直接处理 ACECode 自身页面的麦克风网页权限,不再额外弹 WebView 确认。普通浏览器仍由浏览器授权;操作系统隐私授权不变。

Windows 校验宿主设置的 loopback origin、当前页面和请求来源(包括端口),仅处理麦克风,并关闭授权持久化。macOS 扩展已有 WKUIDelegate,仅授权同来源主页面的麦克风;文件选择等原行为保留。其他网页、摄像头和其他权限不自动放行。

为保持 web_host.cpp 在已有行数限制内,将 Windows WebView 设置函数提取到 web_host_browser_win.hpp。保留主线刚合入的 Linux WebKit API 修复,更新 OpenSpec 第 9 节及使用说明。

验证:

  • Windows 生产 web_host.cpp 的 microphone_permission_smoke 构建及运行通过。
  • 独立 WebView2 用户目录,只使用模拟音频设备,不启用 fake-ui 自动确认。连续两次启动同一目录,每次首次和再次采集均成功,首次权限仍为 prompt。
  • DesktopMicrophonePermission 4 项 GoogleTest 用例独立使用 MSVC 和仓库 GTest 库编译,全部通过。
  • 分层严格检查、OpenSpec 严格校验及 git diff --check 通过。

原生验证输出(两次启动均相同):

{"ok":true,"states":[{"after":"granted","before":"prompt","live":true},{"after":"granted","before":"granted","live":true}]}

总单测目标触发大量无关重编译后已主动停止,未宣称全量通过。macOS/Linux 真机授权及 macOS 编译未执行;正在运行的 Desktop 尚未替换。

Grant microphone access only to the Desktop host's current loopback origin, preserve browser and OS privacy prompts, and cover the policy and production Windows WebHost with focused tests.
@shaohaozhi286
shaohaozhi286 merged commit 357c4aa into master Oct 19, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants