Changeset 53498 in webkit


Ignore:
Timestamp:
Jan 19, 2010 2:50:50 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-01-19 Kent Tamura <tkent@chromium.org>

Reviewed by Darin Adler.

[DRT][Mac] Add modifiers parameter to eventSender.mouseDown() and eventSender.mouseUp()
https://bugs.webkit.org/show_bug.cgi?id=33783

Some listbox tests check selection behavior by click events with
"meta" or "shift" keys. Behaviors for such modifier keys are
platform-dependent. The new parameter of mouseDown() and mouseUp()
allows to specify not only concrete modifier keys such as
"shiftKey" "metaKey", but also functional names like
"addSelectionKey" "rangeSelectionKey".

  • DumpRenderTree/mac/EventSendingController.mm: (+[EventSendingController isSelectorExcludedFromWebScript:]): (+[EventSendingController webScriptNameForSelector:]): (buildModifierFlags): (-[EventSendingController mouseDown:withModifiers:]): (-[EventSendingController mouseDown:]): (-[EventSendingController mouseUp:withModifiers:]): (-[EventSendingController mouseUp:]): (-[EventSendingController keyDown:withModifiers:withLocation:]):
Location:
trunk/WebKitTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r53496 r53498  
     12010-01-19  Kent Tamura  <tkent@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        [DRT][Mac] Add modifiers parameter to eventSender.mouseDown() and eventSender.mouseUp()
     6        https://bugs.webkit.org/show_bug.cgi?id=33783
     7
     8        Some listbox tests check selection behavior by click events with
     9        "meta" or "shift" keys. Behaviors for such modifier keys are
     10        platform-dependent. The new parameter of mouseDown() and mouseUp()
     11        allows to specify not only concrete modifier keys such as
     12        "shiftKey" "metaKey", but also functional names like
     13        "addSelectionKey" "rangeSelectionKey".
     14
     15        * DumpRenderTree/mac/EventSendingController.mm:
     16        (+[EventSendingController isSelectorExcludedFromWebScript:]):
     17        (+[EventSendingController webScriptNameForSelector:]):
     18        (buildModifierFlags):
     19        (-[EventSendingController mouseDown:withModifiers:]):
     20        (-[EventSendingController mouseDown:]):
     21        (-[EventSendingController mouseUp:withModifiers:]):
     22        (-[EventSendingController mouseUp:]):
     23        (-[EventSendingController keyDown:withModifiers:withLocation:]):
     24
    1252010-01-19  Adam Barth  <abarth@webkit.org>
    226
  • trunk/WebKitTools/DumpRenderTree/mac/EventSendingController.mm

    r52608 r53498  
    129129            || aSelector == @selector(leapForward:)
    130130            || aSelector == @selector(mouseDown:)
     131            || aSelector == @selector(mouseDown:withModifiers:)
    131132            || aSelector == @selector(mouseMoveToX:Y:)
    132133            || aSelector == @selector(mouseUp:)
     134            || aSelector == @selector(mouseUp:withModifiers:)
    133135            || aSelector == @selector(scheduleAsynchronousClick)
    134136            || aSelector == @selector(textZoomIn)
     
    159161    if (aSelector == @selector(leapForward:))
    160162        return @"leapForward";
    161     if (aSelector == @selector(mouseDown:))
     163    if (aSelector == @selector(mouseDown:) || aSelector == @selector(mouseDown:withModifiers:))
    162164        return @"mouseDown";
    163     if (aSelector == @selector(mouseUp:))
     165    if (aSelector == @selector(mouseUp:) || aSelector == @selector(mouseUp:withModifiers:))
    164166        return @"mouseUp";
    165167    if (aSelector == @selector(mouseMoveToX:Y:))
     
    286288}
    287289
    288 - (void)mouseDown:(int)buttonNumber
     290static int buildModifierFlags(const WebScriptObject* modifiers)
     291{
     292    int flags = 0;
     293    if (![modifiers isKindOfClass:[WebScriptObject class]])
     294        return flags;
     295    for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
     296        NSString* modifierName = (NSString*)[modifiers webScriptValueAtIndex:i];
     297        if ([modifierName isEqual:@"ctrlKey"])
     298            flags |= NSControlKeyMask;
     299        else if ([modifierName isEqual:@"shiftKey"] || [modifierName isEqual:@"rangeSelectionKey"])
     300            flags |= NSShiftKeyMask;
     301        else if ([modifierName isEqual:@"altKey"])
     302            flags |= NSAlternateKeyMask;
     303        else if ([modifierName isEqual:@"metaKey"] || [modifierName isEqual:@"addSelectionKey"])
     304            flags |= NSCommandKeyMask;
     305    }
     306    return flags;
     307}
     308
     309- (void)mouseDown:(int)buttonNumber withModifiers:(WebScriptObject*)modifiers
    289310{
    290311    [[[mainFrame frameView] documentView] layout];
     
    294315    NSEvent *event = [NSEvent mouseEventWithType:eventType
    295316                                        location:lastMousePosition
    296                                    modifierFlags:0
     317                                   modifierFlags:buildModifierFlags(modifiers)
    297318                                       timestamp:[self currentEventTime]
    298319                                    windowNumber:[[[mainFrame webView] window] windowNumber]
     
    310331}
    311332
     333- (void)mouseDown:(int)buttonNumber
     334{
     335    [self mouseDown:buttonNumber withModifiers:nil];
     336}
     337
    312338- (void)textZoomIn
    313339{
     
    330356}
    331357
    332 - (void)mouseUp:(int)buttonNumber
     358- (void)mouseUp:(int)buttonNumber withModifiers:(WebScriptObject*)modifiers
    333359{
    334360    if (dragMode && !replayingSavedEvents) {
    335         NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(mouseUp:)]];
     361        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(mouseUp:withModifiers:)]];
    336362        [invocation setTarget:self];
    337         [invocation setSelector:@selector(mouseUp:)];
     363        [invocation setSelector:@selector(mouseUp:withModifiers:)];
    338364        [invocation setArgument:&buttonNumber atIndex:2];
     365        [invocation setArgument:&modifiers atIndex:3];
    339366       
    340367        [EventSendingController saveEvent:invocation];
     
    348375    NSEvent *event = [NSEvent mouseEventWithType:eventType
    349376                                        location:lastMousePosition
    350                                    modifierFlags:0
     377                                   modifierFlags:buildModifierFlags(modifiers)
    351378                                       timestamp:[self currentEventTime]
    352379                                    windowNumber:[[[mainFrame webView] window] windowNumber]
     
    384411}
    385412
     413- (void)mouseUp:(int)buttonNumber
     414{
     415    [self mouseUp:buttonNumber withModifiers:nil];
     416}
     417
    386418- (void)mouseMoveToX:(int)x Y:(int)y
    387419{
     
    525557    }
    526558
    527     if ([modifiers isKindOfClass:[WebScriptObject class]]) {
    528         for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
    529             NSString *modifier = (NSString *)[modifiers webScriptValueAtIndex:i];
    530             if ([modifier isEqual:@"ctrlKey"])
    531                 modifierFlags |= NSControlKeyMask;
    532             else if ([modifier isEqual:@"shiftKey"])
    533                 modifierFlags |= NSShiftKeyMask;
    534             else if ([modifier isEqual:@"altKey"])
    535                 modifierFlags |= NSAlternateKeyMask;
    536             else if ([modifier isEqual:@"metaKey"])
    537                 modifierFlags |= NSCommandKeyMask;
    538         }
    539     }
     559    modifierFlags |= buildModifierFlags(modifiers);
    540560
    541561    if (keyLocation == DOM_KEY_LOCATION_NUMPAD)
Note: See TracChangeset for help on using the changeset viewer.