Chromium Code Reviews| Index: content/browser/renderer_host/input/web_input_event_builders_mac.mm |
| diff --git a/content/browser/renderer_host/input/web_input_event_builders_mac.mm b/content/browser/renderer_host/input/web_input_event_builders_mac.mm |
| index 1e116e84b939c24efb5f248caebe1e6f07c4f72f..dbd62743deec22e5d1bdd438320c4d8e4301f483 100644 |
| --- a/content/browser/renderer_host/input/web_input_event_builders_mac.mm |
| +++ b/content/browser/renderer_host/input/web_input_event_builders_mac.mm |
| @@ -117,16 +117,35 @@ bool IsKeyUpEvent(NSEvent* event) { |
| return false; |
| } |
| +inline NSString* FilterSpecialCharacter(NSString* str) { |
| + if ([str length] != 1) |
| + return str; |
| + unichar c = [str characterAtIndex:0]; |
| + NSString* result = str; |
| + if (c == 0x7F) |
| + // Backspace should be 8 |
|
dtapuska
2015/12/11 16:20:30
I'd assume you have braces here because the code f
|
| + result = @"\x8"; |
| + else if (c == NSDeleteFunctionKey) |
| + // Delete should be 0x7F |
| + result = @"\x7F"; |
| + else if (c >= 0xF700 && c <= 0xF7FF) |
| + // Mac private use characters should be @"\0" (@"" won't work) |
| + // Use the range 0xF700~0xF7FF to match |
| + // http://www.opensource.apple.com/source/WebCore/WebCore-7601.1.55/platform/mac/KeyEventMac.mm |
| + result = @"\0"; |
| + return result; |
| +} |
| + |
| inline NSString* TextFromEvent(NSEvent* event) { |
| if ([event type] == NSFlagsChanged) |
| return @""; |
| - return [event characters]; |
| + return FilterSpecialCharacter([event characters]); |
| } |
| inline NSString* UnmodifiedTextFromEvent(NSEvent* event) { |
| if ([event type] == NSFlagsChanged) |
| return @""; |
| - return [event charactersIgnoringModifiers]; |
| + return FilterSpecialCharacter([event charactersIgnoringModifiers]); |
| } |
| NSString* KeyIdentifierForKeyEvent(NSEvent* event) { |
| @@ -614,14 +633,6 @@ blink::WebKeyboardEvent WebKeyboardEventBuilder::Build(NSEvent* event) { |
| unmodified_str = @"\r"; |
| } |
| - // The adjustments below are only needed in backward compatibility mode, |
| - // but we cannot tell what mode we are in from here. |
| - |
| - // Turn 0x7F into 8, because backspace needs to always be 8. |
| - if ([text_str isEqualToString:@"\x7F"]) |
| - text_str = @"\x8"; |
| - if ([unmodified_str isEqualToString:@"\x7F"]) |
| - unmodified_str = @"\x8"; |
| // Always use 9 for tab -- we don't want to use AppKit's different character |
| // for shift-tab. |
| if (result.windowsKeyCode == 9) { |