Changeset 244183 in webkit


Ignore:
Timestamp:
Apr 10, 2019 11:08:40 PM (5 years ago)
Author:
timothy_horton@apple.com
Message:

REGRESSION (r241734): ⌥⌘↑ and ⌥⌘↓ no longer navigate to previous/next Reading List article
https://bugs.webkit.org/show_bug.cgi?id=196797
<rdar://problem/48484715>

Reviewed by Simon Fraser.

  • UIProcess/ios/WKKeyboardScrollingAnimator.mm:

(-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
Validate the set of modifier keys pressed when handling a key event for scrolling:
Ignore key events with multiple modifier keys pressed.
Ignore key events with an invalid modifier key pressed for a given primary key.

Location:
trunk/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r244182 r244183  
     12019-04-10  Tim Horton  <timothy_horton@apple.com>
     2
     3        REGRESSION (r241734): ⌥⌘↑ and ⌥⌘↓ no longer navigate to previous/next Reading List article
     4        https://bugs.webkit.org/show_bug.cgi?id=196797
     5        <rdar://problem/48484715>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * UIProcess/ios/WKKeyboardScrollingAnimator.mm:
     10        (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
     11        Validate the set of modifier keys pressed when handling a key event for scrolling:
     12        Ignore key events with multiple modifier keys pressed.
     13        Ignore key events with an invalid modifier key pressed for a given primary key.
     14
    1152019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
    216
  • trunk/Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm

    r243480 r244183  
    220220    BOOL cmdPressed = event.modifierFlags & WebEventFlagMaskCommandKey;
    221221
     222    // No shortcuts include more than one modifier; we should not eat key events
     223    // that contain more than one modifier because they might be used for other shortcuts.
     224    if (shiftPressed + altPressed + cmdPressed > 1)
     225        return WTF::nullopt;
     226
     227    auto allowedModifiers = ^ WebEventFlags {
     228        switch (key) {
     229        case Key::LeftArrow:
     230        case Key::RightArrow:
     231            return WebEventFlagMaskOptionKey;
     232        case Key::UpArrow:
     233        case Key::DownArrow:
     234            return WebEventFlagMaskOptionKey | WebEventFlagMaskCommandKey;
     235        case Key::PageUp:
     236        case Key::PageDown:
     237            return 0;
     238        case Key::Space:
     239            return WebEventFlagMaskShiftKey;
     240        case Key::Other:
     241            ASSERT_NOT_REACHED();
     242            return 0;
     243        };
     244    }();
     245
     246    if (event.modifierFlags & ~allowedModifiers)
     247        return WTF::nullopt;
     248
    222249    auto increment = ^{
    223250        switch (key) {
Note: See TracChangeset for help on using the changeset viewer.