移除 EvalJsResult::value 的直接访问,改用安全的 API 方法

提交: 7b900492 | 2025-07-14 18:23:47+00:00

← 返回列表

移除 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