diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:08:59 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:09:20 +0100 |
commit | 061d58bc0fa016cfeed744fd3e4663460635d69b (patch) | |
tree | ad9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp | |
parent | 470286ecfe79d59df14944e5b5d34630fc739391 (diff) | |
download | qtwebkit-061d58bc0fa016cfeed744fd3e4663460635d69b.tar.gz |
Imported WebKit commit 8eb048315f36fa33731f28694630fe4a3c2cbc99 (http://svn.webkit.org/repository/webkit/trunk@135602)
New snapshot that fixes various bugs
Change-Id: Icb6ce541a26a9f500d087821ce4b83a8d8a5474a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp index 2ff70d931..6598b6602 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp @@ -116,6 +116,16 @@ typedef HashMap<uint64_t, GRefPtr<WebKitWebResource> > LoadingResourcesMap; typedef HashMap<String, GRefPtr<WebKitWebResource> > ResourcesMap; struct _WebKitWebViewPrivate { + ~_WebKitWebViewPrivate() + { + if (javascriptGlobalContext) + JSGlobalContextRelease(javascriptGlobalContext); + + // For modal dialogs, make sure the main loop is stopped when finalizing the webView. + if (modalLoop && g_main_loop_is_running(modalLoop.get())) + g_main_loop_quit(modalLoop.get()); + } + WebKitWebContext* context; CString title; CString customTextEncoding; @@ -153,7 +163,7 @@ struct _WebKitWebViewPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitWebView, webkit_web_view, WEBKIT_TYPE_WEB_VIEW_BASE) +WEBKIT_DEFINE_TYPE(WebKitWebView, webkit_web_view, WEBKIT_TYPE_WEB_VIEW_BASE) static inline WebPageProxy* getPage(WebKitWebView* webView) { @@ -441,6 +451,7 @@ static void webkitWebViewConstructed(GObject* object) attachFormClientToView(webView); priv->backForwardList = adoptGRef(webkitBackForwardListCreate(getPage(webView)->backForwardList())); + priv->windowProperties = adoptGRef(webkitWindowPropertiesCreate()); GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new()); webkitWebViewSetSettings(webView, settings.get()); @@ -495,34 +506,15 @@ static void webkitWebViewGetProperty(GObject* object, guint propId, GValue* valu } } -static void webkitWebViewFinalize(GObject* object) +static void webkitWebViewDispose(GObject* object) { WebKitWebView* webView = WEBKIT_WEB_VIEW(object); - WebKitWebViewPrivate* priv = webView->priv; - - if (priv->javascriptGlobalContext) - JSGlobalContextRelease(priv->javascriptGlobalContext); - - // For modal dialogs, make sure the main loop is stopped when finalizing the webView. - if (priv->modalLoop && g_main_loop_is_running(priv->modalLoop.get())) - g_main_loop_quit(priv->modalLoop.get()); - webkitWebViewCancelFaviconRequest(webView); webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(webView); webkitWebViewDisconnectSettingsSignalHandlers(webView); webkitWebViewDisconnectFaviconDatabaseSignalHandlers(webView); - priv->~WebKitWebViewPrivate(); - G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object); -} - -static void webkit_web_view_init(WebKitWebView* webView) -{ - WebKitWebViewPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webView, WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate); - webView->priv = priv; - new (priv) WebKitWebViewPrivate(); - - webView->priv->windowProperties = adoptGRef(webkitWindowPropertiesCreate()); + G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object); } static gboolean webkitWebViewAccumulatorObjectHandled(GSignalInvocationHint*, GValue* returnValue, const GValue* handlerReturn, gpointer) @@ -541,7 +533,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) gObjectClass->constructed = webkitWebViewConstructed; gObjectClass->set_property = webkitWebViewSetProperty; gObjectClass->get_property = webkitWebViewGetProperty; - gObjectClass->finalize = webkitWebViewFinalize; + gObjectClass->dispose = webkitWebViewDispose; webViewClass->load_failed = webkitWebViewLoadFail; webViewClass->create = webkitWebViewCreate; @@ -550,8 +542,6 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) webViewClass->permission_request = webkitWebViewPermissionRequest; webViewClass->run_file_chooser = webkitWebViewRunFileChooser; - g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate)); - /** * WebKitWebView:web-context: * |