]> git.gir.st - VimFx.git/commit
Don't crash on pages with out-of-process iframes when fission is enabled
authorgirst <girst@users.noreply.github.com>
Tue, 5 May 2020 12:18:53 +0000 (14:18 +0200)
committergirst <girst@users.noreply.github.com>
Fri, 30 Oct 2020 15:47:30 +0000 (16:47 +0100)
commit8a33140f484cfe41f6259f7b0387a71d8e3b1f47
tree6dcf37ab9905986df2380c4da245775fb0d6549f
parent419f598caa0c2f211078945efe5415441c0c98b1
Don't crash on pages with out-of-process iframes when fission is enabled

This should be considered at most a workaround; oop iframes are
completely opaque to VimFx. This not only means that hints are not
generated for elements inside them, but also that VimFx can't detect
when an input element is focused. Due to the latter, we switch to insert
mode whenever we detect that focus is inside an OOP iframe, so text
inputs can still be used.

During implementation, a bug (https://bugzilla.mozilla.org/1635530) was
found (and filed) where activeElement was wrong. This is fixed as of
Firefox 78. Given that fission is still disabled by default, earlier
verisons aren't affected.

Note: lib/utils.coffee::getTopOffset() also accesses frameElement, but
that's safe, since this function is only called by
simulateMouseEvents(), which only works on elements that were previously
reached via hints mode (where we already check for oop iframes).

lib/utils.coffee::containsDeep() is also safe, albeit less so. It is
called through lib/scrollable-elements.coffee::addChecked()
by lib/events-frame.coffee's addEventHandler('overflow'), which as of
fx78 does not receive events from OOP frames.
extension/lib/events-frame.coffee
extension/lib/markable-elements.coffee
extension/lib/utils.coffee
extension/lib/viewport.coffee
Imprint / Impressum