Changeset 24517 in webkit
- Timestamp:
- Jul 22, 2007 12:46:15 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 5 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r24512 r24517 1 2007-07-22 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Darin. 4 5 Initial input method test case, this tests the behaviour of the 6 enter key in our "kotoeri" engine. 7 8 * fast/events/inputmethods: Added. 9 * fast/events/inputmethods/kotoeri-enter-to-confirm-and-newline-expected.txt: Added. 10 * fast/events/inputmethods/kotoeri-enter-to-confirm-and-newline.html: Added. 11 * fast/events/inputmethods/kotoeri.js: Added. 12 * fast/events/inputmethods/logger.js: Added. 13 1 14 2007-07-21 Sam Weinig <sam@webkit.org> 2 15 -
trunk/WebKitTools/ChangeLog
r24467 r24517 1 2007-07-22 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Darin. 4 5 http://bugs.webkit.org/show_bug.cgi?id=14710 6 7 Add preliminary support for testing Input Method/WebKit behaviour and interaction 8 in DRT. This provides the NSTextInput API which is most of what should be necessary 9 to mimic the event sequences Input Methods trigger. 10 11 * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: 12 * DumpRenderTree/TextInputController.h: 13 * DumpRenderTree/TextInputController.m: 14 (-[WebHTMLView interpretKeyEvents:]): 15 (+[TextInputController isSelectorExcludedFromWebScript:]): 16 (+[TextInputController webScriptNameForSelector:]): 17 (-[TextInputController initWithWebView:]): 18 (-[TextInputController dealloc]): 19 (-[TextInputController textInput]): 20 (-[TextInputController setInputMethodHandler:]): 21 (-[TextInputController interpretKeyEvents:withSender:]): 22 1 23 2007-07-20 Adam Roben <aroben@apple.com> 2 24 -
trunk/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
r24456 r24517 121 121 6508A26D0BFAB71B00AD2696 /* FrameLoadDelegate.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = FrameLoadDelegate.m; sourceTree = "<group>"; }; 122 122 9335435F03D75502008635CE /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 123 9340995408540CAF007F3BC8 /* DumpRenderTree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DumpRenderTree; sourceTree = BUILT_PRODUCTS_DIR; };123 9340995408540CAF007F3BC8 /* DumpRenderTree */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = file; path = DumpRenderTree; sourceTree = BUILT_PRODUCTS_DIR; }; 124 124 93442CF408F8BA4900BFE8CA /* TextInputController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInputController.h; sourceTree = "<group>"; }; 125 125 93442CF508F8BA4900BFE8CA /* TextInputController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextInputController.m; sourceTree = "<group>"; }; -
trunk/WebKitTools/DumpRenderTree/TextInputController.h
r11962 r24517 30 30 31 31 @class WebView; 32 @class WebHTMLView; 33 @class WebScriptObject; 32 34 33 35 @interface TextInputController : NSObject 34 36 { 35 37 WebView *webView; 38 WebHTMLView *inputMethodView; 39 WebScriptObject *inputMethodHandler; 36 40 } 37 41 - (id)initWithWebView:(WebView *)view; -
trunk/WebKitTools/DumpRenderTree/TextInputController.m
r24075 r24517 1 1 /* 2 * Copyright (C) 2005 Apple Computer,Inc. All rights reserved.2 * Copyright (C) 2005, 2007 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 33 33 #import <WebKit/WebFrame.h> 34 34 #import <WebKit/WebFrameView.h> 35 #import <WebKit/WebHTMLViewPrivate.h> 36 #import <WebKit/WebScriptObject.h> 35 37 #import <WebKit/WebView.h> 38 39 @interface TextInputController (DumpRenderTreeInputMethodHandler) 40 - (BOOL)interpretKeyEvents:(NSArray *)eventArray withSender:(WebHTMLView *)sender; 41 @end 42 43 @interface WebHTMLView (DumpRenderTreeInputMethodHandler) 44 - (void)interpretKeyEvents:(NSArray *)eventArray; 45 @end 46 47 @interface WebHTMLView (WebKitSecretsTextInputControllerIsAwareOf) 48 - (WebFrame *)_frame; 49 @end 50 51 @implementation WebHTMLView (DumpRenderTreeInputMethodHandler) 52 - (void)interpretKeyEvents:(NSArray *)eventArray 53 { 54 WebScriptObject *obj = [[self _frame] windowObject]; 55 TextInputController *tic = [obj valueForKey:@"textInputController"]; 56 if (![tic interpretKeyEvents:eventArray withSender:self]) 57 [super interpretKeyEvents:eventArray]; 58 } 59 @end 36 60 37 61 @implementation NSMutableAttributedString (TextInputController) … … 142 166 || aSelector == @selector(characterIndexForPointX:Y:) 143 167 || aSelector == @selector(validAttributesForMarkedText) 144 || aSelector == @selector(attributedStringWithString:)) 168 || aSelector == @selector(attributedStringWithString:) 169 || aSelector == @selector(setInputMethodHandler:)) 145 170 return NO; 146 171 return YES; … … 165 190 else if (aSelector == @selector(attributedStringWithString:)) 166 191 return @"makeAttributedString"; // just a factory method, doesn't call into NSTextInput 192 else if (aSelector == @selector(setInputMethodHandler:)) 193 return @"setInputMethodHandler"; 167 194 168 195 return nil; … … 173 200 self = [super init]; 174 201 webView = wv; 202 inputMethodView = nil; 203 inputMethodHandler = nil; 175 204 return self; 176 205 } 177 206 207 - (void)dealloc 208 { 209 [inputMethodHandler release]; 210 inputMethodHandler = nil; 211 212 [super dealloc]; 213 } 214 178 215 - (NSObject <NSTextInput> *)textInput 179 216 { 180 NSView <NSTextInput> *view = (id)[[[webView mainFrame] frameView] documentView];217 NSView <NSTextInput> *view = inputMethodView ? inputMethodView : (id)[[[webView mainFrame] frameView] documentView]; 181 218 return [view conformsToProtocol:@protocol(NSTextInput)] ? view : nil; 182 219 } … … 331 368 } 332 369 333 @end 370 - (void)setInputMethodHandler:(WebScriptObject *)handler 371 { 372 if (inputMethodHandler == handler) 373 return; 374 [handler retain]; 375 [inputMethodHandler release]; 376 inputMethodHandler = handler; 377 } 378 379 - (BOOL)interpretKeyEvents:(NSArray *)eventArray withSender:(WebHTMLView *)sender 380 { 381 if (!inputMethodHandler) 382 return NO; 383 384 inputMethodView = sender; 385 386 NSEvent *event = [eventArray objectAtIndex:0]; 387 unsigned modifierFlags = [event modifierFlags]; 388 NSMutableArray *modifiers = [[NSMutableArray alloc] init]; 389 if (modifierFlags & NSAlphaShiftKeyMask) 390 [modifiers addObject:@"NSAlphaShiftKeyMask"]; 391 if (modifierFlags & NSShiftKeyMask) 392 [modifiers addObject:@"NSShiftKeyMask"]; 393 if (modifierFlags & NSControlKeyMask) 394 [modifiers addObject:@"NSControlKeyMask"]; 395 if (modifierFlags & NSAlternateKeyMask) 396 [modifiers addObject:@"NSAlternateKeyMask"]; 397 if (modifierFlags & NSCommandKeyMask) 398 [modifiers addObject:@"NSCommandKeyMask"]; 399 if (modifierFlags & NSNumericPadKeyMask) 400 [modifiers addObject:@"NSNumericPadKeyMask"]; 401 if (modifierFlags & NSHelpKeyMask) 402 [modifiers addObject:@"NSHelpKeyMask"]; 403 if (modifierFlags & NSFunctionKeyMask) 404 [modifiers addObject:@"NSFunctionKeyMask"]; 405 406 WebScriptObject* eventParam = [inputMethodHandler evaluateWebScript:@"new Object();"]; 407 [eventParam setValue:[event characters] forKey:@"characters"]; 408 [eventParam setValue:[event charactersIgnoringModifiers] forKey:@"charactersIgnoringModifiers"]; 409 [eventParam setValue:[NSNumber numberWithBool:[event isARepeat]] forKey:@"isARepeat"]; 410 [eventParam setValue:[NSNumber numberWithUnsignedShort:[event keyCode]] forKey:@"keyCode"]; 411 [eventParam setValue:modifiers forKey:@"modifierFlags"]; 412 413 id result = [inputMethodHandler callWebScriptMethod:@"call" withArguments:[NSArray arrayWithObjects:inputMethodHandler, eventParam, nil]]; 414 if (![result respondsToSelector:@selector(boolValue)] || ![result boolValue]) 415 [sender doCommandBySelector:@selector(noop:)]; // AppKit sends noop: if the ime does not handle an event 416 417 inputMethodView = nil; 418 return YES; 419 } 420 421 @end
Note: See TracChangeset
for help on using the changeset viewer.