主要观点:作者完成了 Chromium/Google Chrome 浏览器中一个 bug 的修复,首次参与 Chromium 项目,记录了整个过程并分享给其他开发者,包括获取代码、调试、修复、测试、代码审查和发布等环节,最终成功修复并在 Chrome Canary 中上线。
关键信息:
- 修复的 bug 是 Chromium Devtools 中工作线程的网络请求缺失及“禁用缓存”选项被忽略,影响到
AudioWorklet
等。 - 构建 Chromium 需从 scratch 开始,有详细文档,作者在 Linux 系统下进行,虽耗时但增量构建快,未优化构建时运行慢。
- 调试过程中发现
InspectorNetworkAgent
未为工作线程目标创建,原因是工作线程的WorkletGlobalScope
导致类型转换失败,最终在 Devtools 前端代码中找到解决办法。 - 提交代码审查时,创建了 Gerrit 账号,遵循流程创建变更列表(CL),选择了三位 Google 员工作为评审者,添加了测试用例并解决反馈问题,经过两次“LGTM”投票后代码被合并。
- 还需为
devtools_frontend
仓库提交一个 CL 以添加Capability.Network
到工作线程 Devtools 目标,经历了 flaky 测试后最终自动合并。 - 确认修复在 Chrome Canary 中上线,从开始修复到在 Canary 中可用约一个月,稳定版还需数周或数月。
重要细节: - 作者使用
printf
调试,通过打印感兴趣的内容追踪代码路径,找到关键问题所在。 - 测试用例通过设置 Devtools 会话、获取音频工作线程中的 JavaScript 文件并等待后端事件来验证修复。
- Chromium 有多个发布渠道,Chrome Canary 更新频繁,作者等待版本包含其修复内容。
- 作者因参与 Chromium 项目而对寻找更多可修复的 bug 保持关注,但不会刻意去寻找。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。