移除 EvalJsResult::value 的直接访问,改用安全的 API 方法
Minor
提交哈希:
7b900492c58858caa9f4bb58018f75606d5d92ce
提交时间: 2025-07-14 18:23:47+00:00
影响等级: Minor
生成工具: webview2-upstream-sentry
上游审核链接:
查看上游审核 🔗
📋 摘要
本次提交主要是对测试代码中 EvalJsResult 使用方式的重构。移除了大部分对 EvalJsResult::value 的直接访问,改为使用更安全的 API 方法,如 ExtractString()、ExtractBool()、ExtractDict()、ExtractList() 等。这些新方法会自动检查错误状态并验证数据类型。同时添加了 ExtractDict() 方法以支持字典类型提取,新增了 IsOkAndHolds 匹配器用于简洁地检查错误并对底层值应用匹配器,并为 JsLiteralHelper 添加了对列表和字典的 Convert 特化,允许 EvalJsResult::operator== 与这些类型一起使用。
🎯 影响分析
此变更主要是内部重构,对 终端用户 没有直接影响。对 开发者 的影响包括:1) 提高了测试代码的安全性和健壮性,通过强制使用类型安全的提取方法,减少了测试中因类型错误导致的问题;2) 改善了测试失败时的错误信息,使调试更加容易;3) 为将来将 EvalJsResult 转换为类并将 value 成员变为私有做好了准备;4) 开发者在编写新的测试代码时需要使用新的 API 模式,但这会让代码更加健壮和易于维护。此变更不影响浏览器功能,仅影响测试基础设施。
受影响的类:
EvalJsResult
JsLiteralHelper
TestNavigationManager
BrowserTestUtils