Changeset 68988 in webkit
- Timestamp:
- Oct 3, 2010 2:02:19 PM (13 years ago)
- Location:
- trunk/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit2/ChangeLog
r68971 r68988 1 2010-10-03 Anders Carlsson <andersca@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Send keyboard events to plug-ins 6 https://bugs.webkit.org/show_bug.cgi?id=47064 7 <rdar://problem/8507148> 8 9 * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: 10 (WebKit::NetscapePlugin::handleKeyboardEvent): 11 Call platformHandleKeyboardEvent. 12 13 * WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm: 14 (WebKit::modifierFlags): 15 Return the modifier flags given a WebKeyboardEvent. 16 17 (WebKit::initializeKeyboardEvent): 18 Initialize an NPCocoaEvent from a WebKeyboardEvent. 19 20 (WebKit::NetscapePlugin::platformHandleKeyboardEvent): 21 Initialize the event and dispatch it using NPP_HandleEvent. 22 23 * WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp: 24 (WebKit::NetscapePlugin::platformHandleKeyboardEvent): 25 Add stub. 26 27 * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp: 28 (WebKit::NetscapePlugin::platformHandleKeyboardEvent): 29 Add stub. 30 31 * WebProcess/Plugins/Plugin.h: 32 Add handleKeyboardEvent. 33 34 * WebProcess/Plugins/PluginView.cpp: 35 (WebKit::PluginView::handleEvent): 36 Call Plugin::handleKeyboardEvent if we see a keydown or keyup event. 37 1 38 2010-10-01 Mark Rowe <mrowe@apple.com> 2 39 -
trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
r68962 r68988 538 538 } 539 539 540 bool NetscapePlugin::handleKeyboardEvent(const WebKeyboardEvent& keyboardEvent) 541 { 542 return platformHandleKeyboardEvent(keyboardEvent); 543 } 544 540 545 void NetscapePlugin::setFocus(bool hasFocus) 541 546 { -
trunk/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
r68962 r68988 116 116 bool platformHandleMouseEnterEvent(const WebMouseEvent&); 117 117 bool platformHandleMouseLeaveEvent(const WebMouseEvent&); 118 bool platformHandleKeyboardEvent(const WebKeyboardEvent&); 118 119 void platformSetFocus(bool); 119 120 … … 144 145 virtual bool handleMouseEnterEvent(const WebMouseEvent&); 145 146 virtual bool handleMouseLeaveEvent(const WebMouseEvent&); 147 virtual bool handleKeyboardEvent(const WebKeyboardEvent&); 146 148 virtual void setFocus(bool); 147 149 virtual NPObject* pluginScriptableNPObject(); -
trunk/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm
r68299 r68988 299 299 return false; 300 300 } 301 301 302 302 bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& mouseEvent) 303 303 { … … 317 317 } 318 318 319 static unsigned modifierFlags(const WebKeyboardEvent& keyboardEvent) 320 { 321 unsigned modifierFlags = 0; 322 323 if (keyboardEvent.shiftKey()) 324 modifierFlags |= NSShiftKeyMask; 325 if (keyboardEvent.controlKey()) 326 modifierFlags |= NSControlKeyMask; 327 if (keyboardEvent.altKey()) 328 modifierFlags |= NSAlternateKeyMask; 329 if (keyboardEvent.metaKey()) 330 modifierFlags |= NSCommandKeyMask; 331 332 return modifierFlags; 333 } 334 335 static NPCocoaEvent initializeKeyboardEvent(const WebKeyboardEvent& keyboardEvent) 336 { 337 NPCocoaEventType eventType; 338 339 switch (keyboardEvent.type()) { 340 case WebEvent::KeyDown: 341 eventType = NPCocoaEventKeyDown; 342 break; 343 case WebEvent::KeyUp: 344 eventType = NPCocoaEventKeyUp; 345 break; 346 default: 347 ASSERT_NOT_REACHED(); 348 return NPCocoaEvent(); 349 } 350 351 NPCocoaEvent event = initializeEvent(eventType); 352 event.data.key.modifierFlags = modifierFlags(keyboardEvent); 353 event.data.key.characters = reinterpret_cast<NPNSString*>(static_cast<NSString*>(keyboardEvent.text())); 354 event.data.key.charactersIgnoringModifiers = reinterpret_cast<NPNSString*>(static_cast<NSString*>(keyboardEvent.unmodifiedText())); 355 event.data.key.isARepeat = keyboardEvent.isAutoRepeat(); 356 event.data.key.keyCode = keyboardEvent.nativeVirtualKeyCode(); 357 358 return event; 359 } 360 361 bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent& keyboardEvent) 362 { 363 switch (m_eventModel) { 364 case NPEventModelCocoa: { 365 NPCocoaEvent event = initializeKeyboardEvent(keyboardEvent); 366 return NPP_HandleEvent(&event); 367 } 368 369 default: 370 ASSERT_NOT_REACHED(); 371 } 372 373 return false; 374 } 375 319 376 void NetscapePlugin::platformSetFocus(bool hasFocus) 320 377 { -
trunk/WebKit2/WebProcess/Plugins/Netscape/qt/NetscapePluginQt.cpp
r68299 r68988 106 106 } 107 107 108 bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent&) 109 { 110 notImplemented(); 111 return false; 112 } 113 108 114 } // namespace WebKit -
trunk/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
r68891 r68988 256 256 } 257 257 258 bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent&) 259 { 260 notImplemented(); 261 return false; 262 } 263 258 264 } // namespace WebKit -
trunk/WebKit2/WebProcess/Plugins/Plugin.h
r68962 r68988 46 46 namespace WebKit { 47 47 48 class WebKeyboardEvent; 48 49 class WebMouseEvent; 49 50 class WebWheelEvent; … … 132 133 virtual bool handleMouseLeaveEvent(const WebMouseEvent&) = 0; 133 134 135 // Tells the plug-in to handle the passed in keyboard event. The plug-in should return true if it processed the event. 136 virtual bool handleKeyboardEvent(const WebKeyboardEvent&) = 0; 137 134 138 // Tells the plug-in about focus changes. 135 139 virtual void setFocus(bool) = 0; -
trunk/WebKit2/WebProcess/Plugins/PluginView.cpp
r68962 r68988 479 479 bool didHandleEvent = false; 480 480 481 if ((event->type() == eventNames().mousemoveEvent && currentEvent->type() == WebEvent::MouseMove) 481 if ((event->type() == eventNames().mousemoveEvent && currentEvent->type() == WebEvent::MouseMove) 482 482 || (event->type() == eventNames().mousedownEvent && currentEvent->type() == WebEvent::MouseDown) 483 483 || (event->type() == eventNames().mouseupEvent && currentEvent->type() == WebEvent::MouseUp)) { … … 496 496 // We have a mouse leave event. 497 497 didHandleEvent = m_plugin->handleMouseLeaveEvent(static_cast<const WebMouseEvent&>(*currentEvent)); 498 } else if ((event->type() == eventNames().keydownEvent && currentEvent->type() == WebEvent::KeyDown) 499 || (event->type() == eventNames().keyupEvent && currentEvent->type() == WebEvent::KeyUp)) { 500 // We have a keyboard event. 501 didHandleEvent = m_plugin->handleKeyboardEvent(static_cast<const WebKeyboardEvent&>(*currentEvent)); 498 502 } 499 503
Note: See TracChangeset
for help on using the changeset viewer.