Title: [200901] trunk/Source
Revision
200901
Author
[email protected]
Date
2016-05-13 17:03:43 -0700 (Fri, 13 May 2016)

Log Message

Unreviewed, rolling out r200894.
https://bugs.webkit.org/show_bug.cgi?id=157695

This change broke the iOS build (Requested by ryanhaddad on
#webkit).

Reverted changeset:

"Remove unused initializer for WebEvent on iOS."
https://bugs.webkit.org/show_bug.cgi?id=157689
http://trac.webkit.org/changeset/200894

Patch by Commit Queue <[email protected]> on 2016-05-13

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (200900 => 200901)


--- trunk/Source/WebCore/ChangeLog	2016-05-14 00:01:21 UTC (rev 200900)
+++ trunk/Source/WebCore/ChangeLog	2016-05-14 00:03:43 UTC (rev 200901)
@@ -1,3 +1,17 @@
+2016-05-13  Commit Queue  <[email protected]>
+
+        Unreviewed, rolling out r200894.
+        https://bugs.webkit.org/show_bug.cgi?id=157695
+
+        This change broke the iOS build (Requested by ryanhaddad on
+        #webkit).
+
+        Reverted changeset:
+
+        "Remove unused initializer for WebEvent on iOS."
+        https://bugs.webkit.org/show_bug.cgi?id=157689
+        http://trac.webkit.org/changeset/200894
+
 2016-05-13  Brady Eidson  <[email protected]>
 
         Rename all protector variables that should be called `protectedThis`

Modified: trunk/Source/WebCore/platform/ios/WebEvent.h (200900 => 200901)


--- trunk/Source/WebCore/platform/ios/WebEvent.h	2016-05-14 00:01:21 UTC (rev 200900)
+++ trunk/Source/WebCore/platform/ios/WebEvent.h	2016-05-14 00:03:43 UTC (rev 200901)
@@ -86,9 +86,11 @@
     NSString *_charactersIgnoringModifiers;
     WebEventFlags _modifierFlags;
     BOOL _keyRepeating;
+    BOOL _popupVariant; // FIXME: to be removed
     NSUInteger _keyboardFlags;
     uint16_t _keyCode;
     BOOL _tabKey;
+    WebEventCharacterSet _characterSet;
     
     float _deltaX;
     float _deltaY;
@@ -125,12 +127,24 @@
                         gestureScale:(float)gestureScale
                      gestureRotation:(float)gestureRotation;
 
+// FIXME: this is deprecated. It will be removed when UIKit adopts the new one below.
 - (WebEvent *)initWithKeyEventType:(WebEventType)type
                          timeStamp:(CFTimeInterval)timeStamp
                         characters:(NSString *)characters
        charactersIgnoringModifiers:(NSString *)charactersIgnoringModifiers
                          modifiers:(WebEventFlags)modifiers
                        isRepeating:(BOOL)repeating
+                    isPopupVariant:(BOOL)popupVariant
+                           keyCode:(uint16_t)keyCode
+                          isTabKey:(BOOL)tabKey
+                      characterSet:(WebEventCharacterSet)characterSet;
+
+- (WebEvent *)initWithKeyEventType:(WebEventType)type
+                         timeStamp:(CFTimeInterval)timeStamp
+                        characters:(NSString *)characters
+       charactersIgnoringModifiers:(NSString *)charactersIgnoringModifiers
+                         modifiers:(WebEventFlags)modifiers
+                       isRepeating:(BOOL)repeating
                          withFlags:(NSUInteger)flags
                            keyCode:(uint16_t)keyCode
                           isTabKey:(BOOL)tabKey
@@ -148,9 +162,12 @@
 @property(nonatomic, readonly) WebEventFlags modifierFlags;
 @property(nonatomic, readonly, getter = isKeyRepeating) BOOL keyRepeating;
 
+// FIXME: this is deprecated. It will be removed when UIKit adopts the new initWithKeyEventType.
+@property(nonatomic, readonly, getter = isPopupVariant) BOOL popupVariant;
 @property(nonatomic, readonly) NSUInteger keyboardFlags;
 @property(nonatomic, readonly) uint16_t keyCode;
 @property(nonatomic, readonly, getter = isTabKey) BOOL tabKey;
+@property(nonatomic, readonly) WebEventCharacterSet characterSet;
 
 // Scroll Wheel
 @property(nonatomic, readonly) float deltaX;

Modified: trunk/Source/WebCore/platform/ios/WebEvent.mm (200900 => 200901)


--- trunk/Source/WebCore/platform/ios/WebEvent.mm	2016-05-14 00:01:21 UTC (rev 200900)
+++ trunk/Source/WebCore/platform/ios/WebEvent.mm	2016-05-14 00:03:43 UTC (rev 200901)
@@ -127,12 +127,54 @@
        charactersIgnoringModifiers:(NSString *)charactersIgnoringModifiers
                          modifiers:(WebEventFlags)modifiers
                        isRepeating:(BOOL)repeating
+                    isPopupVariant:(BOOL)popupVariant
+                           keyCode:(uint16_t)keyCode
+                          isTabKey:(BOOL)tabKey
+                      characterSet:(WebEventCharacterSet)characterSet
+{
+    self = [super init];
+    if (!self)
+        return nil;
+    
+    _type = type;
+    _timestamp = timeStamp;
+
+    _characters = [characters retain];
+    _charactersIgnoringModifiers = [charactersIgnoringModifiers retain];
+    _modifierFlags = modifiers;
+    _keyRepeating = repeating;
+    _popupVariant = popupVariant;
+    _tabKey = tabKey;
+    _characterSet = characterSet;
+
+    if (keyCode)
+        _keyCode = windowsKeyCodeForKeyCode(keyCode);
+
+    // NOTE: this preserves the original semantics which used the
+    // characters string for the keyCode. This should be changed in iOS 4.0 to
+    // allow the client to explicitly specify a keyCode, otherwise default to
+    // mapping the characters string to a keyCode.
+    // e.g. add an 'else' before this 'if'.
+    if ([charactersIgnoringModifiers length] == 1) {
+        unichar ch = [charactersIgnoringModifiers characterAtIndex:0];
+        _keyCode = windowsKeyCodeForCharCodeIOS(ch);
+    }
+
+    return self;
+}
+
+
+- (WebEvent *)initWithKeyEventType:(WebEventType)type
+                         timeStamp:(CFTimeInterval)timeStamp
+                        characters:(NSString *)characters
+       charactersIgnoringModifiers:(NSString *)charactersIgnoringModifiers
+                         modifiers:(WebEventFlags)modifiers
+                       isRepeating:(BOOL)repeating
                          withFlags:(NSUInteger)flags
                            keyCode:(uint16_t)keyCode
                           isTabKey:(BOOL)tabKey
                       characterSet:(WebEventCharacterSet)characterSet
 {
-    UNUSED_PARAM(characterSet);
     self = [super init];
     if (!self)
         return nil;
@@ -146,6 +188,7 @@
     _keyRepeating = repeating;
     _keyboardFlags = flags;
     _tabKey = tabKey;
+    _characterSet = characterSet;
     
     if (keyCode)
         _keyCode = windowsKeyCodeForKeyCode(keyCode);
@@ -233,6 +276,25 @@
     return @"Unknown";
 }
 
+- (NSString *)_characterSetDescription
+{
+    switch (_characterSet) {
+        case WebEventCharacterSetASCII:
+            return @"WebEventCharacterSetASCII";
+        case WebEventCharacterSetSymbol:
+            return @"WebEventCharacterSetSymbol";
+        case WebEventCharacterSetDingbats:
+            return @"WebEventCharacterSetDingbats";
+        case WebEventCharacterSetUnicode:
+            return @"WebEventCharacterSetUnicode";
+        case WebEventCharacterSetFunctionKeys:
+            return @"WebEventCharacterSetFunctionKeys";
+        default:
+            ASSERT_NOT_REACHED();
+    }
+    return @"Unknown";
+}
+
 - (NSString *)_touchLocationsDescription:(NSArray *)locations
 {
     BOOL shouldAddComma = NO;
@@ -297,7 +359,7 @@
             return [NSString stringWithFormat:@"location: (%f, %f) deltaX: %f deltaY: %f", _locationInWindow.x, _locationInWindow.y, _deltaX, _deltaY];
         case WebEventKeyDown:
         case WebEventKeyUp:
-            return [NSString stringWithFormat:@"chars: %@ charsNoModifiers: %@ flags: %d repeating: %d keyboardFlags: %lu keyCode %d, isTab: %d", _characters, _charactersIgnoringModifiers, _modifierFlags, _keyRepeating, static_cast<unsigned long>(_keyboardFlags), _keyCode, _tabKey];
+            return [NSString stringWithFormat:@"chars: %@ charsNoModifiers: %@ flags: %d repeating: %d keyboardFlags: %lu keyCode %d, isTab: %d charSet: %@", _characters, _charactersIgnoringModifiers, _modifierFlags, _keyRepeating, static_cast<unsigned long>(_keyboardFlags), _keyCode, _tabKey, [self _characterSetDescription]];
         case WebEventTouchBegin:
         case WebEventTouchChange:
         case WebEventTouchEnd:
@@ -346,6 +408,13 @@
     return _keyRepeating;
 }
 
+// FIXME: to be removed
+- (BOOL)isPopupVariant
+{
+    ASSERT(_type == WebEventKeyDown || _type == WebEventKeyUp);
+    return _popupVariant;
+}
+
 - (NSUInteger)keyboardFlags
 {
     ASSERT(_type == WebEventKeyDown || _type == WebEventKeyUp);
@@ -364,6 +433,12 @@
     return _tabKey;
 }
 
+- (WebEventCharacterSet)characterSet
+{
+    ASSERT(_type == WebEventKeyDown || _type == WebEventKeyUp);
+    return _characterSet;
+}
+
 - (float)deltaX
 {
     ASSERT(_type == WebEventScrollWheel);

Modified: trunk/Source/WebKit/mac/ChangeLog (200900 => 200901)


--- trunk/Source/WebKit/mac/ChangeLog	2016-05-14 00:01:21 UTC (rev 200900)
+++ trunk/Source/WebKit/mac/ChangeLog	2016-05-14 00:03:43 UTC (rev 200901)
@@ -1,3 +1,17 @@
+2016-05-13  Commit Queue  <[email protected]>
+
+        Unreviewed, rolling out r200894.
+        https://bugs.webkit.org/show_bug.cgi?id=157695
+
+        This change broke the iOS build (Requested by ryanhaddad on
+        #webkit).
+
+        Reverted changeset:
+
+        "Remove unused initializer for WebEvent on iOS."
+        https://bugs.webkit.org/show_bug.cgi?id=157689
+        http://trac.webkit.org/changeset/200894
+
 2016-05-13  Enrica Casucci  <[email protected]>
 
         Remove unused initializer for WebEvent on iOS.

Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (200900 => 200901)


--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm	2016-05-14 00:01:21 UTC (rev 200900)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm	2016-05-14 00:03:43 UTC (rev 200901)
@@ -6511,6 +6511,10 @@
 #define kWebBackspaceKey     0x0008
 #define kWebReturnKey        0x000d
 #define kWebDeleteKey        0x007F
+#define kWebLeftArrowKey     0x00AC
+#define kWebUpArrowKey       0x00AD
+#define kWebRightArrowKey    0x00AE
+#define kWebDownArrowKey     0x00AF
 #define kWebDeleteForwardKey 0xF728
     
 - (BOOL)_handleEditingKeyEvent:(KeyboardEvent *)wcEvent
@@ -6522,36 +6526,79 @@
     // embedded as the whole view, as in Mail, and tabs should input tabs as expected
     // in a text editor.
     
+    // FIXME - this code will break when content editable is supported.
     if (const PlatformKeyboardEvent* platformEvent = wcEvent->keyEvent()) {
         WebEvent *event = platformEvent->event();
         if (![[self _webView] isEditable] && event.isTabKey) 
             return NO;
         
-        NSString *s = [event characters];
-        if (!s.length)
-            return NO;
-        WebView* webView = [self _webView];
-        switch ([s characterAtIndex:0]) {
-        case kWebBackspaceKey:
-        case kWebDeleteKey:
-            [[webView _UIKitDelegateForwarder] deleteFromInputWithFlags:event.keyboardFlags];
-            return YES;
-        case kWebEnterKey:
-        case kWebReturnKey:
-            if (platformEvent->type() == PlatformKeyboardEvent::Char) {
-                // Map \r from HW keyboard to \n to match the behavior of the soft keyboard.
-                [[webView _UIKitDelegateForwarder] addInputString:@"\n" withFlags:0];
-                return YES;
+        // Now process the key normally
+        BOOL shift = platformEvent->shiftKey();
+        
+        switch (event.characterSet) {
+            case WebEventCharacterSetSymbol: {
+                SEL sel = 0;
+                NSString *s = [event charactersIgnoringModifiers];
+                if ([s length] == 0)
+                    break;
+                switch ([s characterAtIndex:0]) {
+                    case kWebLeftArrowKey:
+                        sel = shift ? @selector(moveLeftAndModifySelection:) : @selector(moveLeft:);
+                        break;
+                    case kWebUpArrowKey:
+                        sel = shift ? @selector(moveUpAndModifySelection:) : @selector(moveUp:);
+                        break;
+                    case kWebRightArrowKey:
+                        sel = shift ? @selector(moveRightAndModifySelection:) : @selector(moveRight:);
+                        break;
+                    case kWebDownArrowKey:
+                        sel = shift ? @selector(moveDownAndModifySelection:) : @selector(moveDown:);
+                        break;
+                }
+                if (sel) {
+                    [self performSelector:sel withObject:self];
+                    return YES;
+                }
+                break;
             }
-            break;
-        case kWebDeleteForwardKey:
-            [self deleteForward:self];
-            return YES;
-        default:
-            if (platformEvent->type() == PlatformKeyboardEvent::Char) {
-                [[webView _UIKitDelegateForwarder] addInputString:event.characters withFlags:event.keyboardFlags];
-                return YES;
+            case WebEventCharacterSetASCII:
+            case WebEventCharacterSetUnicode: {
+                NSString *s = [event characters];
+                if ([s length] == 0)
+                    break;
+                WebView* webView = [self _webView];
+                switch ([s characterAtIndex:0]) {
+                    case kWebBackspaceKey:
+                    case kWebDeleteKey:
+                        // FIXME: remove the call to deleteFromInput when UIKit implements deleteFromInputWithFlags.
+                        if ([webView respondsToSelector:@selector(deleteFromInputWithFlags:)])
+                            [[webView _UIKitDelegateForwarder] deleteFromInputWithFlags:event.keyboardFlags];
+                        else
+                            [[webView _UIKitDelegateForwarder] deleteFromInput];
+                        return YES;
+                    case kWebEnterKey:
+                    case kWebReturnKey:
+                        if (platformEvent->type() == PlatformKeyboardEvent::Char) {
+                            // Map \r from HW keyboard to \n to match the behavior of the soft keyboard.
+                            [[webView _UIKitDelegateForwarder] addInputString:@"\n" withFlags:0];
+                            return YES;
+                        }
+                        return NO;
+                    case kWebDeleteForwardKey:
+                        [self deleteForward:self];
+                        return YES;
+                    default: {                    
+                        if (platformEvent->type() == PlatformKeyboardEvent::Char) {
+                            [[webView _UIKitDelegateForwarder] addInputString:event.characters withFlags:event.keyboardFlags];
+                            return YES;
+                        }
+                        return NO;
+                    }
+                }
+                break;
             }
+            default:
+                return NO;
         }
     }
     return NO;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to