| 76 | | TODO |
| | 76 | |
| | 77 | |
| | 78 | The Symbian port of NPAPI is in http://trac.webkit.org/browser/trunk/WebCore/plugins/symbian . |
| | 79 | |
| | 80 | In Symbian, dlls can be loaded only from \sys\bin, so Symbian requires a different mechanism for loading Netscape plugins. We use QPluginLoader to find and load plugins. In order for WebKit to find Netscape plugins, they must follow these rules: |
| | 81 | * Add template=lib and config+=plugin to the pro file. |
| | 82 | * Implement the interface NPInterface as defined in http://trac.webkit.org/browser/trunk/WebCore/plugins/symbian/npinterface.h . |
| | 83 | * Export the .qtplugin placeholder to \resource\qt\plugins\npqtplugin. |
| | 84 | |
| | 85 | PluginPackageSymbian.cpp - |
| | 86 | Uses QPluginLoader to load and unload the plugin. It also queries the plugin for its mime types, extensions and description. |
| | 87 | |
| | 88 | PluginDatabaseSymbian.cpp - |
| | 89 | Searches for available .qtplugin placeholders in the available drives in the system. |
| | 90 | |
| | 91 | PluginContainerSymbian.cpp - |
| | 92 | A QWidget that hosts a windowed plugin. This class should eventually merge with PluginContainerQt.cpp. |
| | 93 | |
| | 94 | PluginViewSymbian.cpp - |
| | 95 | Does the bulk of the work interacting with the plugin. It creates and destroys the plugin, resizes the plugin and in windowless mode, sends events to the plugin. |
| | 96 | |
| | 97 | Painting and events in windowless mode: |
| | 98 | |
| | 99 | Painting: |
| | 100 | Plugins should draw directly to the surface of the webview. Prior to each QPaintEvent, a plugin will receive a NPN_SetWindow call, that contains the NPWindow structure. The ws_info member of NPWindow will contain a pointer to the QPainter to use for painting. |
| | 101 | |
| | 102 | Keyboard events: |
| | 103 | When the plugin has keyboard focus, triggered e.g. by the user tapping on the plugin, WebKit will pass keyboard events as QKeyEvent to the plugin. |
| | 104 | |
| | 105 | Mouse events: |
| | 106 | When WebKit receives mouse events in the plugin's area, it will pass QMouseEvent to the plugin. |