Changeset 237739 in webkit


Ignore:
Timestamp:
Nov 2, 2018 10:20:28 AM (5 years ago)
Author:
dbates@webkit.org
Message:

[iOS] Normalize character string based on key code
https://bugs.webkit.org/show_bug.cgi?id=191120

Reviewed by Tim Horton.

Source/WebCore:

Following r236417 (https://bugs.webkit.org/show_bug.cgi?id=189604) we always have a valid key code
for a special key (e.g. page up) and can simplify the character string normalization code.

No functionality changed. So, no new tests.

  • platform/ios/WebEvent.mm:

(normalizedStringWithAppKitCompatibilityMapping): Modified to take a key code and wrote algorithm
in terms of it.

(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
(-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
Pass the key code for the event to normalizedStringWithAppKitCompatibilityMapping().

Source/WebCore/PAL:

Remove forward declarations that are no longer needed now that we check key code.

  • pal/spi/ios/UIKitSPI.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r237738 r237739  
     12018-11-02  Daniel Bates  <dabates@apple.com>
     2
     3        [iOS] Normalize character string based on key code
     4        https://bugs.webkit.org/show_bug.cgi?id=191120
     5
     6        Reviewed by Tim Horton.
     7
     8        Following r236417 (https://bugs.webkit.org/show_bug.cgi?id=189604) we always have a valid key code
     9        for a special key (e.g. page up) and can simplify the character string normalization code.
     10
     11        No functionality changed. So, no new tests.
     12
     13        * platform/ios/WebEvent.mm:
     14        (normalizedStringWithAppKitCompatibilityMapping): Modified to take a key code and wrote algorithm
     15        in terms of it.
     16
     17        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:keyCode:isTabKey:characterSet:]):
     18        (-[WebEvent initWithKeyEventType:timeStamp:characters:charactersIgnoringModifiers:modifiers:isRepeating:withFlags:withInputManagerHint:keyCode:isTabKey:]):
     19        Pass the key code for the event to normalizedStringWithAppKitCompatibilityMapping().
     20
    1212018-11-02  Daniel Bates  <dabates@apple.com>
    222
  • trunk/Source/WebCore/PAL/ChangeLog

    r237691 r237739  
     12018-11-02  Daniel Bates  <dabates@apple.com>
     2
     3        [iOS] Normalize character string based on key code
     4        https://bugs.webkit.org/show_bug.cgi?id=191120
     5
     6        Reviewed by Tim Horton.
     7
     8        Remove forward declarations that are no longer needed now that we check key code.
     9
     10        * pal/spi/ios/UIKitSPI.h:
     11
    1122018-11-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
    213
  • trunk/Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h

    r236955 r237739  
    3232#import <UIKit/UIColor_Private.h>
    3333#import <UIKit/UIInterface_Private.h>
    34 #import <UIKit/UIResponder_Private.h>
    3534#import <UIKit/UIScreen_Private.h>
    3635#import <UIKit/UIViewController_Private.h>
     
    154153#endif
    155154
    156 NS_ASSUME_NONNULL_BEGIN
    157 
    158 WTF_EXTERN_C_BEGIN
    159 
    160 extern NSString *const UIKeyInputPageUp;
    161 extern NSString *const UIKeyInputPageDown;
    162 extern NSString *const UIKeyInputEscape;
    163 
    164 WTF_EXTERN_C_END
    165 
    166 NS_ASSUME_NONNULL_END
    167 
    168155#endif
  • trunk/Source/WebCore/platform/ios/WebEvent.mm

    r237738 r237739  
    3636#import "KeyEventCodesIOS.h"
    3737#import "WAKAppKitStubs.h"
    38 #import <pal/spi/ios/UIKitSPI.h>
    39 #import <wtf/SoftLinking.h>
    40 
    41 SOFT_LINK_FRAMEWORK(UIKit)
    42 SOFT_LINK_CONSTANT(UIKit, UIKeyInputUpArrow, NSString *)
    43 SOFT_LINK_CONSTANT(UIKit, UIKeyInputDownArrow, NSString *)
    44 SOFT_LINK_CONSTANT(UIKit, UIKeyInputLeftArrow, NSString *)
    45 SOFT_LINK_CONSTANT(UIKit, UIKeyInputRightArrow, NSString *)
    46 SOFT_LINK_CONSTANT(UIKit, UIKeyInputPageUp, NSString *)
    47 SOFT_LINK_CONSTANT(UIKit, UIKeyInputPageDown, NSString *)
    48 SOFT_LINK_CONSTANT(UIKit, UIKeyInputEscape, NSString *)
    49 
    50 #define UIKeyInputUpArrow getUIKeyInputUpArrow()
    51 #define UIKeyInputDownArrow getUIKeyInputDownArrow()
    52 #define UIKeyInputLeftArrow getUIKeyInputLeftArrow()
    53 #define UIKeyInputRightArrow getUIKeyInputRightArrow()
    54 #define UIKeyInputPageUp getUIKeyInputPageUp()
    55 #define UIKeyInputPageDown getUIKeyInputPageDown()
    56 #define UIKeyInputEscape getUIKeyInputEscape()
     38#import <pal/spi/cocoa/IOKitSPI.h>
    5739
    5840using WebCore::windowsKeyCodeForKeyCode;
     
    143125}
    144126
    145 static NSString* normalizedStringWithAppKitCompatibilityMapping(NSString *characters)
     127static NSString *normalizedStringWithAppKitCompatibilityMapping(NSString *characters, uint16_t keyCode)
    146128{
    147129    auto makeNSStringWithCharacter = [] (unichar c) { return [NSString stringWithCharacters:&c length:1]; };
    148130
    149     if ([characters isEqualToString:UIKeyInputUpArrow])
     131    switch (keyCode) {
     132    case kHIDUsage_KeyboardUpArrow:
    150133        return makeNSStringWithCharacter(NSUpArrowFunctionKey);
    151     if ([characters isEqualToString:UIKeyInputDownArrow])
     134    case kHIDUsage_KeyboardDownArrow:
    152135        return makeNSStringWithCharacter(NSDownArrowFunctionKey);
    153     if ([characters isEqualToString:UIKeyInputLeftArrow])
     136    case kHIDUsage_KeyboardLeftArrow:
    154137        return makeNSStringWithCharacter(NSLeftArrowFunctionKey);
    155     if ([characters isEqualToString:UIKeyInputRightArrow])
     138    case kHIDUsage_KeyboardRightArrow:
    156139        return makeNSStringWithCharacter(NSRightArrowFunctionKey);
    157     if ([characters isEqualToString:UIKeyInputPageUp])
     140    case kHIDUsage_KeyboardPageUp:
    158141        return makeNSStringWithCharacter(NSPageUpFunctionKey);
    159     if ([characters isEqualToString:UIKeyInputPageDown])
     142    case kHIDUsage_KeyboardPageDown:
    160143        return makeNSStringWithCharacter(NSPageDownFunctionKey);
    161     if ([characters isEqualToString:UIKeyInputEscape])
     144    case kHIDUsage_KeyboardEscape:
    162145        return @"\x1B";
    163     if ([characters isEqualToString:@"\x1B"]) // Num Lock / Clear
     146    case kHIDUsage_KeypadNumLock: // Num Lock / Clear
    164147        return makeNSStringWithCharacter(NSClearLineFunctionKey);
     148    }
    165149    return characters;
    166150}
     
    195179
    196180    if (!(_keyboardFlags & WebEventKeyboardInputModifierFlagsChanged)) {
    197         _characters = [normalizedStringWithAppKitCompatibilityMapping(characters) retain];
    198         _charactersIgnoringModifiers = [normalizedStringWithAppKitCompatibilityMapping(charactersIgnoringModifiers) retain];
     181        _characters = [normalizedStringWithAppKitCompatibilityMapping(characters, keyCode) retain];
     182        _charactersIgnoringModifiers = [normalizedStringWithAppKitCompatibilityMapping(charactersIgnoringModifiers, keyCode) retain];
    199183        _tabKey = tabKey;
    200184        _keyRepeating = repeating;
     
    232216
    233217    if (!(_keyboardFlags & WebEventKeyboardInputModifierFlagsChanged)) {
    234         _characters = [normalizedStringWithAppKitCompatibilityMapping(characters) retain];
    235         _charactersIgnoringModifiers = [normalizedStringWithAppKitCompatibilityMapping(charactersIgnoringModifiers) retain];
     218        _characters = [normalizedStringWithAppKitCompatibilityMapping(characters, keyCode) retain];
     219        _charactersIgnoringModifiers = [normalizedStringWithAppKitCompatibilityMapping(charactersIgnoringModifiers, keyCode) retain];
    236220        _tabKey = tabKey;
    237221        _keyRepeating = repeating;
Note: See TracChangeset for help on using the changeset viewer.