确保OOPIF导航中CDP的ExtraInfo事件能正确发送
Moderate
提交哈希:
43efca7cd75b3f08b10b7b7cef453bae8e3bca58
提交时间: 2025-07-15 09:08:34+00:00
影响等级: Moderate
生成工具: webview2-upstream-sentry
上游审核链接:
查看上游审核 🔗
📋 摘要
本次提交修复了在OOPIF(Out-Of-Process iFrame)导航过程中Chrome DevTools Protocol (CDP) 的ExtraInfo事件丢失问题。主要是在将OOPIF转换为进程内iframe时,由于非确定性的执行顺序,有时导航提交会在ExtraInfo事件之前发生,导致RenderFrameDevToolsAgentHost被过早销毁,从而使requestWillBeSentExtraInfo和responseReceivedExtraInfo事件丢失。修复方案是在RenderFrameDevToolsAgentHost中新增GetForWithAncestorFallback()方法,当找不到对应的agent host时,会查找父级frame的agent host作为备选,确保ExtraInfo事件不会丢失,虽然这些事件会通过父级target而不是OOPIF target发送。同时还包含了相关的测试用例补充和一个拼写错误修正。
🎯 影响分析
对终端用户的影响:此次变更主要影响使用Chrome DevTools进行网页调试的开发者。对于普通终端用户,这个变更是不可见的,不会影响正常的网页浏览体验。但对于需要调试包含跨进程子iframe的复杂网页应用的开发者来说,这个修复确保了网络请求调试信息的完整性,提高了调试体验的稳定性。
对开发者的影响:此变更对Web开发者具有积极影响。在调试包含OOPIF的复杂页面时,开发者此前可能会遇到网络请求的ExtraInfo事件随机丢失的问题,导致无法获取完整的请求头信息、Cookie信息等关键调试数据。修复后,这些信息将被可靠地保留和传递,虽然事件的target ID可能从子frame变为父frame,但重要的调试信息不会丢失。这提高了DevTools在处理复杂多进程网页架构时的可靠性,让开发者能够更准确地调试网络相关问题。对于扩展开发者,特别是使用debugger API的扩展,也能获得更稳定的调试数据。
对开发者的影响:此变更对Web开发者具有积极影响。在调试包含OOPIF的复杂页面时,开发者此前可能会遇到网络请求的ExtraInfo事件随机丢失的问题,导致无法获取完整的请求头信息、Cookie信息等关键调试数据。修复后,这些信息将被可靠地保留和传递,虽然事件的target ID可能从子frame变为父frame,但重要的调试信息不会丢失。这提高了DevTools在处理复杂多进程网页架构时的可靠性,让开发者能够更准确地调试网络相关问题。对于扩展开发者,特别是使用debugger API的扩展,也能获得更稳定的调试数据。
受影响的类:
RenderFrameDevToolsAgentHost
NetworkServiceDevToolsObserver