Files
cdp_hub/docs/tasks/T-405.md
T

34 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-405
title: 设置浏览器 executable 选择与可感知搜索反馈
phase: 4
deps: [T-205, T-206, T-207]
status: DONE
created: 2026-07-27
owner: codex
---
## 需求与背景
设置页的 Chrome 与 Edge executable 路径已经展示“选择”和“搜索”操作,但 Chrome/Edge 的“选择”点击后只写入一条全局提示,没有调用任何文件选择器。标准安装路径搜索能够在后台发现本机浏览器,不过默认路径通常已预填为相同值,成功提示又位于需要滚动才可见的页面下方,用户会误以为两个操作都没有反应。
## 方案与边界
- 在 `internal/platform/files` 新增 `ExecutablePicker`,Windows 实现使用原生 `OpenFileDialog`,只允许已有的绝对 `.exe` 结果;非 Windows 实现返回明确的不支持错误。它不发现、启动、检查、接管或关闭浏览器进程。
- Gio shell 通过后台 `ExecutableChooser` adapter 调用选择器,并按 Chrome/Edge `PathField`、请求代次和取消上下文收取结果;UI frame 与点击回调不得执行系统 I/O。选择成功才覆盖相应 editor;取消、失败或非法结果保留原输入。
- Chrome 与 Edge 路径各自维护选择/搜索状态与字段级反馈。搜索开始、取消、更新、未找到和失败均在发起字段旁显示;搜索结果与当前值一致时明确显示“已确认当前路径可用”。页面底部的运行行为反馈不再承担路径操作的唯一可见反馈。
- 这是已确认 Gio 页面局部行为修复,不改变导航、布局信息架构或视觉组件体系;按 `windows-ui-ux` 评审无需新 HTML 原型。仍需在真实 Windows GUI 中验证文件对话框、取消和同路径搜索反馈。
## 验收要点
- 自动化:为 Windows executable picker、无效/取消结果、Shell 选择结果及同路径搜索反馈新增单元测试;`go test ./...`、`go test -race ./cmd/chub ./internal/ui ./internal/platform/files`、`go vet ./...`、`go build -o build/chub.exe ./cmd/chub` 通过。
- Windows smoke:设置页 Chrome 与 Edge 的“选择”均打开原生文件选择器;选取 `.exe` 后仅更新对应字段;取消、错误与非 `.exe` 结果保留字段输入。搜索标准安装路径时按钮短暂显示“取消”,命中默认路径也会在该字段旁显示确认文字;切换到实例页再返回后输入和反馈仍在。
- 安全与交互:不做全盘扫描,不记录完整路径以外的系统诊断,不进行浏览器进程枚举、启动、停止或接管;同字段重复点击不能并发打开多个对话框,迟到结果不能覆盖较新的同字段操作。
## 执行记录
- 状态:DONE
- 变更:新增 Windows `OpenFileDialog` executable picker 与非 Windows 明确失败实现;`cmd/chub` 已注入 chooser。Gio shell 在后台选择 Chrome/Edge executable,以请求代次丢弃过期结果;选择成功只更新目标字段,取消/失败保留输入。四个路径搜索的反馈均移动至对应字段,Chrome/Edge 搜索命中当前输入时显示明确确认。
- 验证:`go test ./...`、`go test -race ./cmd/chub ./internal/ui ./internal/platform/files`、`go vet ./...`、`go build -o build/chub.exe ./cmd/chub` 和 `cmd /c build.bat` 均通过。确认打包产物 PE subsystem 为 Windows GUI(2);真实 STA `OpenFileDialog` smoke 已自动取消一次,并预填现有 `C:\Program Files\Google\Chrome\Application\chrome.exe` 后返回 `OK` 与该路径。
- 阻塞:无。