清理 Android 平台中 LazyInstance 的泄漏用法

提交: 07c0d6c2 | 2025-07-17 18:36:43+00:00

← 返回列表

清理 Android 平台中 LazyInstance 的泄漏用法

Minor
提交哈希: 07c0d6c25522c568abb7c8ca7c9d49f53bc0fce7
提交时间: 2025-07-17 18:36:43+00:00
影响等级: Minor
生成工具: webview2-upstream-sentry
上游审核链接: 查看上游审核 🔗

📋 摘要

本次提交主要是对 Chromium Android 平台代码进行代码质量改进,将所有使用 base::LazyInstance::Leaky 的实例替换为更现代、更安全的 base::NoDestructor 模式。涉及的变更包括:将全局的 LazyInstance 对象替换为使用 NoDestructor 包装的静态局部变量,通过 getter 函数访问这些单例对象,并相应地更新头文件引用和友元声明。变更覆盖了基础设施、浏览器 UI、内容管理、设备工具等多个 Android 相关模块,共计 18 个源文件。

🎯 影响分析

对 终端用户:此次变更对终端用户完全透明,不会影响任何用户可见的功能或性能。所有被替换的单例对象在功能上保持完全一致,用户体验不会有任何变化。

对 开发者:这次变更带来了代码质量的显著提升。NoDestructor 相比 LazyInstance::Leaky 提供了更好的类型安全性、更清晰的内存管理语义,以及更符合现代 C++ 最佳实践的代码风格。对于 Android 平台的 Chromium 开发者来说,这意味着:1) 减少了内存泄漏的风险;2) 提高了代码的可读性和维护性;3) 与 Chromium 代码库的整体架构更加一致;4) 为后续的代码审查和重构提供了更好的基础。虽然这些改动主要集中在 Android 平台特定的代码中,但它们涉及的是核心的基础设施组件,如标签页管理、资源映射、线程管理等关键模块。

受影响的类:

TrialLogger JavaExceptionFilter ResourceMapper TabModelList ChildProcessSurfaceManager LauncherThread WebContentsAndroid ViewConfigurationData