diff --git a/include/wx/gtk/webview_webkit.h b/include/wx/gtk/webview_webkit.h index f207226a59..d9e728b331 100644 --- a/include/wx/gtk/webview_webkit.h +++ b/include/wx/gtk/webview_webkit.h @@ -119,6 +119,9 @@ public: virtual bool RunScript(const wxString& javascript, wxString* output = NULL) const wxOVERRIDE; virtual bool AddScriptMessageHandler(const wxString& name) wxOVERRIDE; virtual bool RemoveScriptMessageHandler(const wxString& name) wxOVERRIDE; + virtual bool AddUserScript(const wxString& javascript, + wxWebViewUserScriptInjectionTime injectionTime = wxWEBVIEW_INJECT_AT_DOCUMENT_START) wxOVERRIDE; + virtual void RemoveAllUserScripts() wxOVERRIDE; //Virtual Filesystem Support virtual void RegisterHandler(wxSharedPtr handler) wxOVERRIDE; diff --git a/src/gtk/webview_webkit2.cpp b/src/gtk/webview_webkit2.cpp index 78fb1a56c5..3d61057b97 100644 --- a/src/gtk/webview_webkit2.cpp +++ b/src/gtk/webview_webkit2.cpp @@ -1317,6 +1317,29 @@ bool wxWebViewWebKit::RemoveScriptMessageHandler(const wxString& name) return true; } +bool wxWebViewWebKit::AddUserScript(const wxString& javascript, + wxWebViewUserScriptInjectionTime injectionTime) +{ + WebKitUserScript* userScript = webkit_user_script_new( + javascript.utf8_str(), + WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, + (injectionTime == wxWEBVIEW_INJECT_AT_DOCUMENT_START) ? + WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START : WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END, + NULL, NULL + ); + WebKitUserContentManager *ucm = webkit_web_view_get_user_content_manager(m_web_view); + webkit_user_content_manager_add_script(ucm, userScript); + webkit_user_script_unref(userScript); + + return true; +} + +void wxWebViewWebKit::RemoveAllUserScripts() +{ + WebKitUserContentManager *ucm = webkit_web_view_get_user_content_manager(m_web_view); + webkit_user_content_manager_remove_all_scripts(ucm); +} + void wxWebViewWebKit::RegisterHandler(wxSharedPtr handler) { m_handlerList.push_back(handler);