Changeset 64470 in webkit


Ignore:
Timestamp:
Aug 2, 2010 10:07:34 AM (14 years ago)
Author:
Martin Robinson
Message:

2010-08-02 Martin Robinson <mrobinson@igalia.com>

Reviewed by Xan Lopez.

[Gtk] DOM listeners get wrong keycodes for some keys
https://bugs.webkit.org/show_bug.cgi?id=35170

Modify some existing tests to test the generate key code of
the keypad insert and delete keys as well as the print screen key.

  • fast/events/keydown-numpad-keys-expected.txt: Update expectations.
  • fast/events/script-tests/keydown-numpad-keys.js: Add test for keypad insert and delete.
  • fast/events/special-key-events-in-input-text-expected.txt: Update expectations.
  • fast/events/special-key-events-in-input-text.html: Add test for print screen.

2010-08-02 Martin Robinson <mrobinson@igalia.com>

Reviewed by Xan Lopez.

[Gtk] DOM listeners get wrong keycodes for some keys
https://bugs.webkit.org/show_bug.cgi?id=35170

Emit the proper DOM keyCode for the print screen, keypad insert,
and keypad delete keys.

  • platform/gtk/KeyEventGtk.cpp: (WebCore::windowsKeyCodeForKeyEvent): Fix mapping between GDK key codes and Windows key codes.

2010-08-02 Martin Robinson <mrobinson@igalia.com>

Reviewed by Xan Lopez.

[Gtk] DOM listeners get wrong keycodes for some keys
https://bugs.webkit.org/show_bug.cgi?id=35170

Add support to all event senders for simulating keypad insert
and print screen keys.

  • DumpRenderTree/chromium/EventSender.cpp: (EventSender::keyDown): Add support for generating keypad insert and print screen.
  • DumpRenderTree/gtk/EventSender.cpp: (keyDownCallback): Ditto.
  • DumpRenderTree/mac/EventSendingController.mm: (-[EventSendingController keyDown:withModifiers:withLocation:]): Ditto.
  • DumpRenderTree/qt/EventSenderQt.cpp: (EventSender::keyDown): Ditto.
  • DumpRenderTree/win/EventSender.cpp: (keyDownCallback): Ditto.
Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r64468 r64470  
     12010-08-02  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [Gtk] DOM listeners get wrong keycodes for some keys
     6        https://bugs.webkit.org/show_bug.cgi?id=35170
     7
     8        Modify some existing tests to test the generate key code of
     9        the keypad insert and delete keys as well as the print screen key.
     10
     11        * fast/events/keydown-numpad-keys-expected.txt: Update expectations.
     12        * fast/events/script-tests/keydown-numpad-keys.js: Add test for keypad insert and delete.
     13        * fast/events/special-key-events-in-input-text-expected.txt: Update expectations.
     14        * fast/events/special-key-events-in-input-text.html: Add test for print screen.
     15
    1162010-08-02  Martin Robinson  <mrobinson@igalia.com>
    217
  • trunk/LayoutTests/fast/events/keydown-numpad-keys-expected.txt

    r52608 r64470  
    3030PASS lastKeyboardEvent.keyLocation is 0
    3131PASS lastKeyboardEvent.type is "keydown"
     32PASS lastKeyboardEvent.keyCode is 45
     33PASS lastKeyboardEvent.keyLocation is 0
     34PASS lastKeyboardEvent.type is "keydown"
     35PASS lastKeyboardEvent.keyCode is 46
     36PASS lastKeyboardEvent.keyLocation is 0
     37PASS lastKeyboardEvent.type is "keydown"
    3238PASS lastKeyboardEvent.keyCode is 33
    3339PASS lastKeyboardEvent.keyLocation is 3
     
    5359PASS lastKeyboardEvent.keyCode is 40
    5460PASS lastKeyboardEvent.keyLocation is 3
     61PASS lastKeyboardEvent.type is "keydown"
     62PASS lastKeyboardEvent.keyCode is 45
     63PASS lastKeyboardEvent.keyLocation is 3
     64PASS lastKeyboardEvent.type is "keydown"
     65PASS lastKeyboardEvent.keyCode is 46
     66PASS lastKeyboardEvent.keyLocation is 3
    5567PASS successfullyParsed is true
    5668
  • trunk/LayoutTests/fast/events/script-tests/keydown-numpad-keys.js

    r52608 r64470  
    4141    testKeyEventWithLocation("upArrow", 0, 38);
    4242    testKeyEventWithLocation("downArrow", 0, 40);
     43    testKeyEventWithLocation("insert", 0, 45);
     44    testKeyEventWithLocation("delete", 0, 46);
    4345
    4446    // location=3 indicates that we send events as numeric-pad keys.
     
    5153    testKeyEventWithLocation("upArrow", 3, 38);
    5254    testKeyEventWithLocation("downArrow", 3, 40);
     55    testKeyEventWithLocation("insert", 3, 45);
     56    testKeyEventWithLocation("delete", 3, 46);
    5357} else {
    5458    debug("This test requires DumpRenderTree.  To manually test, 1) focus on the textarea above and push numpad keys without locking NumLock and 2) see if the location= value is 3 (DOM_KEY_LOCATION_NUMPAD specified in DOM level 3).");
  • trunk/LayoutTests/fast/events/special-key-events-in-input-text-expected.txt

    r39137 r64470  
    4444INPUT - keyup - false,false,false,false - U+0008 - 8 - 0. Value: "".
    4545
     46Print screen:
     47INPUT - keydown - false,false,false,false - U+0000 - 44 - 0. Value: "".
     48INPUT - keyup - false,false,false,false - U+0000 - 44 - 0. Value: "".
     49
  • trunk/LayoutTests/fast/events/special-key-events-in-input-text.html

    r39110 r64470  
    5757   log("<br>Backspace:");
    5858   eventSender.keyDown("\x08", []);
     59   log("<br>Print screen:");
     60   eventSender.keyDown("printScreen", []);
    5961  }
    6062</script>
  • trunk/WebCore/ChangeLog

    r64467 r64470  
     12010-08-02  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [Gtk] DOM listeners get wrong keycodes for some keys
     6        https://bugs.webkit.org/show_bug.cgi?id=35170
     7
     8        Emit the proper DOM keyCode for the print screen, keypad insert,
     9        and keypad delete keys.
     10
     11        * platform/gtk/KeyEventGtk.cpp:
     12        (WebCore::windowsKeyCodeForKeyEvent): Fix mapping between GDK key codes
     13        and Windows key codes.
     14
    1152010-08-02  Dirk Schulze  <krit@webkit.org>
    216
  • trunk/WebCore/platform/gtk/KeyEventGtk.cpp

    r56704 r64470  
    265265            return VK_SELECT; // (29) SELECT key
    266266        case GDK_Print:
    267             return VK_PRINT; // (2A) PRINT key
     267            return VK_SNAPSHOT; // (2C) PRINT SCREEN key
    268268        case GDK_Execute:
    269269            return VK_EXECUTE;// (2B) EXECUTE key
    270             //dunno on this
    271             //case GDK_PrintScreen:
    272             //      return VK_SNAPSHOT; // (2C) PRINT SCREEN key
    273270        case GDK_Insert:
     271        case GDK_KP_Insert:
    274272            return VK_INSERT; // (2D) INS key
    275273        case GDK_Delete:
     274        case GDK_KP_Delete:
    276275            return VK_DELETE; // (2E) DEL key
    277276        case GDK_Help:
  • trunk/WebKitTools/ChangeLog

    r64469 r64470  
     12010-08-02  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Xan Lopez.
     4
     5        [Gtk] DOM listeners get wrong keycodes for some keys
     6        https://bugs.webkit.org/show_bug.cgi?id=35170
     7
     8        Add support to all event senders for simulating keypad insert
     9        and print screen keys.
     10
     11        * DumpRenderTree/chromium/EventSender.cpp:
     12        (EventSender::keyDown): Add support for generating keypad insert and print screen.
     13        * DumpRenderTree/gtk/EventSender.cpp:
     14        (keyDownCallback): Ditto.
     15        * DumpRenderTree/mac/EventSendingController.mm:
     16        (-[EventSendingController keyDown:withModifiers:withLocation:]): Ditto.
     17        * DumpRenderTree/qt/EventSenderQt.cpp:
     18        (EventSender::keyDown): Ditto.
     19        * DumpRenderTree/win/EventSender.cpp:
     20        (keyDownCallback): Ditto.
     21
    1222010-08-02  Martin Robinson  <mrobinson@igalia.com>
    223
  • trunk/WebKitTools/DumpRenderTree/chromium/EventSender.cpp

    r61157 r64470  
    542542    else if ("upArrow" == codeStr)
    543543        code = base::VKEY_UP;
     544    else if ("insert" == codeStr)
     545        code = base::VKEY_INSERT;
    544546    else if ("delete" == codeStr)
    545547        code = base::VKEY_DELETE;
     
    552554    else if ("end" == codeStr)
    553555        code = base::VKEY_END;
     556    else if ("printScreen" == codeStr)
     557        code = base::VKEY_SNAPSHOT;
    554558    else {
    555559        // Compare the input string with the function-key names defined by the
  • trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp

    r64469 r64470  
    473473        else if (JSStringIsEqualToUTF8CString(character, "end"))
    474474            gdkKeySym = GDK_KP_End;
     475        else if (JSStringIsEqualToUTF8CString(character, "insert"))
     476            gdkKeySym = GDK_KP_Insert;
     477        else if (JSStringIsEqualToUTF8CString(character, "delete"))
     478            gdkKeySym = GDK_KP_Delete;
    475479        else
    476             // Assume we only get arrow/pgUp/pgDn/home/end keys with
    477             // location=NUMPAD for now.
     480            // If we get some other key specified with the numpad location,
     481            // crash here, so we add it sooner rather than later.
    478482            g_assert_not_reached();
    479483    } else {
     
    494498        else if (JSStringIsEqualToUTF8CString(character, "end"))
    495499            gdkKeySym = GDK_End;
     500        else if (JSStringIsEqualToUTF8CString(character, "insert"))
     501            gdkKeySym = GDK_Insert;
    496502        else if (JSStringIsEqualToUTF8CString(character, "delete"))
    497503            gdkKeySym = GDK_Delete;
     504        else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
     505            gdkKeySym = GDK_Print;
    498506        else if (JSStringIsEqualToUTF8CString(character, "F1"))
    499507            gdkKeySym = GDK_F1;
  • trunk/WebKitTools/DumpRenderTree/mac/EventSendingController.mm

    r61153 r64470  
    598598        eventCharacter = [NSString stringWithCharacters:&ch length:1];
    599599        keyCode = 0x77;
     600    } else if ([character isEqualToString:@"insert"]) {
     601        const unichar ch = NSInsertFunctionKey;
     602        eventCharacter = [NSString stringWithCharacters:&ch length:1];
     603        keyCode = 0x72;
    600604    } else if ([character isEqualToString:@"delete"]) {
    601605        const unichar ch = NSDeleteFunctionKey;
    602606        eventCharacter = [NSString stringWithCharacters:&ch length:1];
    603607        keyCode = 0x75;
     608    } else if ([character isEqualToString:@"printScreen"]) {
     609        const unichar ch = NSPrintScreenFunctionKey;
     610        eventCharacter = [NSString stringWithCharacters:&ch length:1];
     611        keyCode = 0x0; // There is no known virtual key code for PrintScreen.
    604612    }
    605613
  • trunk/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp

    r62115 r64470  
    335335            s = QString();
    336336            code = Qt::Key_End;
     337        } else if (string == QLatin1String("insert")) {
     338            s = QString();
     339            code = Qt::Key_Insert;
    337340        } else if (string == QLatin1String("delete")) {
    338341            s = QString();
    339342            code = Qt::Key_Delete;
     343        } else if (string == QLatin1String("printScreen")) {
     344            s = QString();
     345            code = Qt::Key_Print;
    340346        }
    341347    }
  • trunk/WebKitTools/DumpRenderTree/win/EventSender.cpp

    r61153 r64470  
    468468    else if (JSStringIsEqualToUTF8CString(character, "end"))
    469469        virtualKeyCode = VK_END;
     470    else if (JSStringIsEqualToUTF8CString(character, "insert"))
     471        virtualKeyCode = VK_INSERT;
    470472    else if (JSStringIsEqualToUTF8CString(character, "delete"))
    471473        virtualKeyCode = VK_DELETE;
     474    else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
     475        virtualKeyCode = VK_SNAPSHOT;
    472476    else {
    473477        charCode = JSStringGetCharactersPtr(character)[0];
Note: See TracChangeset for help on using the changeset viewer.