重构:清理 //content 目录下的泄漏型 LazyInstances
Minor
提交哈希:
b9a82bd751ed21f319212a0dbb7d5bc2fa208296
提交时间: 2025-07-23 20:36:43+00:00
影响等级: Minor
生成工具: webview2-upstream-sentry
上游审核链接:
查看上游审核 🔗
📋 摘要
本次提交主要是将 //content 目录下的 19 个文件中的
base::LazyInstance::Leaky
替换为更现代的 base::NoDestructor
实现。这是一次代码现代化重构,目的是替换已废弃的 LazyInstance 模式。变更涉及多个核心模块,包括蓝牙管理(BluetoothBlocklist)、开发者工具(DevTools)、渲染框架管理(RenderFrameHost/RenderViewHost)、文件系统监控、直方图同步、WebUI 控制器、网络服务配置、崩溃报告、字体预热等关键组件。所有变更都是将全局静态实例的初始化方式从旧的 LazyInstance 模式迁移到使用函数作用域内的 NoDestructor 静态变量。
🎯 影响分析
此次变更是纯粹的代码重构,不改变任何业务逻辑或功能行为。从技术角度看,NoDestructor 相比 LazyInstance 提供了更好的线程安全保证、更简洁的语法和更现代的 C++ 实现方式。对于终端用户和开发者而言,这次变更:1)不会影响浏览器的任何功能表现,包括蓝牙设备连接、网页渲染、开发者工具使用等;2)不会改变 API 行为或接口;3)理论上可能带来轻微的性能改善,因为 NoDestructor 避免了 LazyInstance 的一些开销;4)提高代码维护性和现代化程度,为开发者提供更清晰的代码结构;5)符合 Chromium 项目推荐的编码实践,减少了使用已废弃 API 的技术债务。
受影响的类:
BluetoothBlocklist
RenderFrameDevToolsAgentHost
WebContentsDevToolsAgentHost
InotifyReader
HistogramSynchronizer
RenderFrameHostImpl
RenderFrameProxyHost
RenderViewHostImpl
SiteInstanceImpl
WakeLockContextHost
URLDataManager
FakeGdiObjectFactory
WebUIBrowserInterfaceBrokerRegistry
ProfilingThreadControl
ShellCrashReporterClient
MojoInitializer