Skip to content

v11.2.3

Choose a tag to compare

@doronz88 doronz88 released this 30 Aug 15:23
· 4 commits to master since this release
cac4d5f

Highlights

🐛 A navigation that swaps process no longer leaves DevTools with a black screen

A navigation that commits in a new process destroys the target the CDP bridge is talking to, and WebKit never answers what was in flight to it. That is exactly the moment Chrome's frontend asks for the resource tree and starts a screencast, so both were left without an answer: Page.getResourceTree raised a KeyError on the missing result and Page.startScreencast a TypeError out of its screen-size probe, and the frontend was handed a request it cannot act on. The screencast was the damaging one — unlike the resource tree the frontend never asks again, so the screen stayed black for the rest of the session — and the bridge additionally kept a screencast that never started, so closing the session then failed on it and left the target's queue-consumer tasks draining the events of every later session on that page.

Both requests are now re-asked of the target that took over. The events that commit the swap are applied by the receive loop, which is paused for the whole of every request wait, so the retry yields to let them through. wait_for_event_id also records the destroyed target as it abandons the wait, so a target that was merely swapped out is no longer misreported as "stopped responding" and backed off.

pymobiledevice3 webinspector cdp
# then open http://127.0.0.1:9222/, pick a page, and navigate it across a process swap

🐛 A JSContext target answers Page requests the way a Node target does

A JSContext debuggable implements no Page domain, and its global object carries no window — so neither the resource tree nor the screencast's size probe can ever succeed there. Both are now refused with a protocol error, which Chrome's frontends absorb exactly as they do from a real Node target, instead of raising out of the translation and leaving the frontend with no answer at all.

What's Changed

Full Changelog: v11.2.2...v11.2.3