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;