[webkit-reviews] review requested: [Bug 130767] Connection::dispatchOneMessage() can be re-entered while handling Cmd-key menu equivalents, ASSERT(!_data->_keyDownEventBeingResent) : [Attachment 227831] proposed patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 26 00:10:04 PDT 2014


Alexey Proskuryakov <ap at webkit.org> has asked  for review:
Bug 130767: Connection::dispatchOneMessage() can be re-entered while handling
Cmd-key menu equivalents, ASSERT(!_data->_keyDownEventBeingResent)
https://bugs.webkit.org/show_bug.cgi?id=130767

Attachment 227831: proposed patch
https://bugs.webkit.org/attachment.cgi?id=227831&action=review

------- Additional Comments from Alexey Proskuryakov <ap at webkit.org>
Changed RunLoop to only wake up itself or fire timers in default and modal run
loop modes, removing event tracking one and anything else other frameworks may
have registered.

- This also addresses a problem with modal alerts appearing while menus are
open (setTimeout("alert(0)", 3000), and open a Safari menu).

- I didn't change other instances of kCFRunLoopCommonModes that we have
(notably WebCore timers, LayerFlushScheduler, iOS WebCoreThread code, page
loader scheduling, callOnMainThread()).

- Tested that drag and drop of text and images within contenteditable still
works.

- Tested that showModalDialog() successfully loads a page, and timers run in
this page. Tested that timers are still paused in a page that opened the
dialog.

- Confusingly, I couldn't see any difference in behavior of showModalDialog()
whether I allowed NSModalPanelRunLoopMode or not.

- Timers in web pages behave strangely when menus are open. They keep firing -
and the page keeps repainting - when I'm slowly moving the mouse between menus
or menu items, but the timers stop after I move it quickly!

The last two items concern me. Thoughts? Any other reasons why this may not be
a good change?


More information about the webkit-reviews mailing list