移除 ResolveHostClient 中不必要的 std::optional 包装器

提交: 1627af9b | 2025-07-22 11:13:38+00:00

← 返回列表

移除 ResolveHostClient 中不必要的 std::optional 包装器

Moderate
提交哈希: 1627af9b798f996ff2f42fe76f52bbcfc47cdb49
提交时间: 2025-07-22 11:13:38+00:00
影响等级: Moderate
生成工具: webview2-upstream-sentry
上游审核链接: 查看上游审核 🔗

📋 摘要

本次提交移除了网络服务层 ResolveHostClient 接口中 resolved_addresses 和 alternative_endpoints 参数的 std::optional 包装器。该变更涉及 61 个文件,主要包括网络诊断工具、DNS 解析器、扩展 API、直接套接字、预连接管理器等模块。变更将这些参数从 std::optional 和 std::optional 改为直接使用 net::AddressList 和 net::HostResolverEndpointResults。同时更新了相关的空值检查逻辑,从检查 has_value() 改为检查 empty()。

🎯 影响分析

对于 终端用户:此次变更不会直接影响终端用户的浏览体验。DNS 解析的功能和性能保持不变,网页加载、连接建立等操作将继续正常工作。变更仅涉及内部 API 的类型简化,不涉及任何用户可见的功能变化。

对于开发者:这个变更对使用 Chromium 网络 API 的开发者具有重要影响。开发者需要更新他们的代码以适应新的 API 签名:1) 在实现 ResolveHostClient 接口时,OnComplete 方法的参数类型从 std::optional 变为直接类型;2) 空值检查逻辑需要从 !optional.has_value() 或 optional == std::nullopt 改为 collection.empty();3) 访问数据时从 optional.value() 或 *optional 改为直接访问;4) 在测试代码中,需要将 std::nullopt 替换为空的集合对象。这种类型系统的简化减少了状态空间的复杂性,使 API 更加一致和易于使用,但可能需要开发者进行代码适配。

受影响的类:

ResolveHostClient ResolveHostRequest DnsLatencyRoutine DnsResolutionRoutine HttpsLatencyRoutine TlsProber UdpProber PortForwardingHostResolver DirectSocketsServiceImpl PrefetchCanaryChecker PrefetchDNSProber PrefetchOriginProber SimpleHostResolver RestrictedUDPSocket