Index: webkit/plugins/npapi/webplugin_delegate_impl.h |
=================================================================== |
--- webkit/plugins/npapi/webplugin_delegate_impl.h (revision 103683) |
+++ webkit/plugins/npapi/webplugin_delegate_impl.h (working copy) |
@@ -55,6 +55,10 @@ |
#endif // NP_NO_QUICKDRAW |
#endif // OS_MACOSX |
+#if defined(OS_WIN) |
+class WebPluginIMEWin; |
+#endif // OS_WIN |
+ |
// An implementation of WebPluginDelegate that runs in the plugin process, |
// proxied from the renderer by WebPluginDelegateProxy. |
class WebPluginDelegateImpl : public WebPluginDelegate { |
@@ -79,6 +83,7 @@ |
PLUGIN_QUIRK_IGNORE_FIRST_SETWINDOW_CALL = 65536, // Windows. |
PLUGIN_QUIRK_REPARENT_IN_BROWSER = 131072, // Windows |
PLUGIN_QUIRK_PATCH_GETKEYSTATE = 262144, // Windows |
+ PLUGIN_QUIRK_EMULATE_IME = 524288, // Windows. |
}; |
static WebPluginDelegateImpl* Create(const FilePath& filename, |
@@ -142,6 +147,21 @@ |
// Informs the plugin that the view it is in has gained or lost focus. |
void SetContentAreaHasFocus(bool has_focus); |
+#if defined(OS_WIN) |
+ // Informs the plug-in that an IME has changed its status. |
+ void ImeCompositionUpdated(const string16& text, |
+ const std::vector<int>& clauses, |
+ const std::vector<int>& target, |
+ int cursor_position); |
+ |
+ // Informs the plugin that IME composition has completed./ If |text| is empty, |
+ // IME was cancelled. |
+ void ImeCompositionCompleted(const string16& text); |
+ |
+ // Returns the IME status retrieved from a plug-in. |
+ bool GetIMEStatus(int* input_type, gfx::Rect* caret_rect); |
+#endif |
+ |
#if defined(OS_MACOSX) |
// Informs the plugin that the geometry has changed, as with UpdateGeometry, |
// but also includes the new buffer context for that new geometry. |
@@ -318,6 +338,10 @@ |
// Used to throttle WM_USER+1 messages in Flash. |
uint32 last_message_; |
bool is_calling_wndproc; |
+ |
+ // An IME emulator used by a windowless plug-in to retrieve IME data through |
+ // IMM32 functions. |
+ scoped_ptr<WebPluginIMEWin> plugin_ime_; |
#endif // defined(OS_WIN) |
#if defined(USE_X11) |
@@ -389,6 +413,9 @@ |
HKEY key, DWORD index, LPWSTR name, LPDWORD name_size, LPDWORD reserved, |
LPWSTR class_name, LPDWORD class_size, PFILETIME last_write_time); |
+ // GetProcAddress intercepter for windowless plugins. |
+ static FARPROC WINAPI GetProcAddressPatch(HMODULE module, LPCSTR name); |
+ |
// The mouse hook proc which handles mouse capture in windowed plugins. |
static LRESULT CALLBACK MouseHookProc(int code, WPARAM wParam, |
LPARAM lParam); |