Prior to my fix for
crbug.com/111059, ctrl+wheel events were handled directly by the browser to implement browser zooming. I've changed this so the events are first sent to the renderer, and only invoke browser zoom when they go unhandled. This is an immediate implication of the PSA I sent below, but probably wasn't obvious from my original message so I figured it was worth bringing up explicitly.
Motivation:
There are many websites that want to do something better for the user than trigger browser zoom. For example, when a use does ctrl+wheel over a map in google maps, they almost certainly want to zoom in on the map, not invoke browser zoom to zoom the page. Giving the page the event first is consistent with our "content not chrome"
core principle, (and with allowing pages to override most keyboard events).
Risk:
Some websites (and Pepper plugins, etc.) are consuming all wheel events regardless of the modifiers and so will now change to cause browser zoom to be disabled (eg. perhaps triggering some application-specific scrolling when the user intended to zoom). This appears to be the case, for example, in Google Sheets.
Behavior in other browsers:
This change matches IE and Firefox on Windows exactly, so sites should already be prepared for it. On Linux and MacOS Firefox appears to disable mousewheel-based zooming whenever there is a wheel event handler (even if the handler doesn't call preventDefault on the event), and so is also consistent with what I've done. Safari on Mac doesn't support zooming with a mouse wheel at all (just trackpad / mouse gestures which do not send events - see PSA below).
Thanks,
Rick