Skip to content

0.19.1

Choose a tag to compare

@route route released this 16 Oct 16:52
· 30 commits to main since this release

Changed

  • --disable-web-security is no longer among the default Chrome flags, so pages keep the same-origin policy and an
    untrusted page can't read local files with <iframe src="file:///etc/passwd">. Frame#frame_element returns nil
    for a cross-origin frame now. Pass browser_options: { "disable-web-security" => nil } for the old behavior [#472]

Fixed

  • Mouse#move with a button held didn't send which button, so Chrome never started a drag. Native HTML5 drag and drop
    now works with down, move and up, and Input.dragIntercepted fires when drags are intercepted [#635]
  • A paused request with a binary body, e.g. a Blob upload with blacklist=/whitelist= set, hung forever: Chrome
    sends the body with lone UTF-16 surrogates that the json gem rejects, and the fallback that unescaped them broke
    the message further, so Fetch.requestPaused was dropped and the request was never continued. Lone surrogates are
    now replaced with U+FFFD, so broken text from the page reads as � instead of ??? [rubycdp/cuprite#308]
  • Passing a node resolved on the previous page to evaluate, e.g. when the page navigates while Cuprite searches
    within an element, raised Ferrum::BrowserError: Argument should belong to the same JavaScript world as target object. It's Ferrum::NodeNotFoundError now, so callers can treat the node as stale and find it again
    [rubycdp/cuprite#233]