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 | |
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')
52 files changed, 644 insertions, 629 deletions
diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog index 987111132..576cd0538 100644 --- a/Source/WebKit2/ChangeLog +++ b/Source/WebKit2/ChangeLog @@ -1,3 +1,320 @@ +2012-11-23 Wojciech Bielawski <w.bielawski@samsung.com> + + [WK2][WKTR] WebKitTestRunner needs eventSender.contextClick() + https://bugs.webkit.org/show_bug.cgi?id=86881 + + Reviewed by Kenneth Rohde Christiansen. + + InjectedBundle API extended to retrieve contextMenu entries names. + WebContextMenu exteded with function to retrieve menu items. + This API is required by layout tests. + Common code in WebContextMenu.cpp moved to separate method menuItemsWithUserData(). + Behaviour of dependend methods is unchanged. + + * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: + (WKBundlePageGetContextMenuEntriesNames): + * WebProcess/InjectedBundle/API/c/WKBundlePage.h: + * WebProcess/WebPage/WebContextMenu.cpp: + (WebKit::WebContextMenu::items): + (WebKit): + * WebProcess/WebPage/WebContextMenu.h: + (WebContextMenu): + +2012-11-22 Pierre Rossi <pierre.rossi@gmail.com> + + [Qt] Avoid initializing PlatformStrategies twice. + + Rubber-stamped by Simon Hausmann. + + This fixes another regression introduced in r135515: + initializeWebKitQt shouldn't implicitely call initializeWebCoreQt + since it can be called from WebKit2 to initialize QStyle for testing. + This would then lead to things such as PlatformStrategies being + initialized twice. + + * qt/MainQt.cpp: No need to initialize anything if we're not using QStyle. + (WebKit): + (main): + +2012-11-22 Carlos Garcia Campos <cgarcia@igalia.com> + + [GTK] Use custom private macros to define GObjects + https://bugs.webkit.org/show_bug.cgi?id=99705 + + Reviewed by Martin Robinson. + + Add WEBKIT_DEFINE_TYPE macros, similar and compatible with + G_DEFINE_TYPE macros, to define GObject types. These macros also + define the init and finalize functions reducing the GObject + boilerplate and hiding the placement new syntax that causes some + confusion. The patch replaces the use of G_DEFINE_TYPE macros by + WEBKIT_DEFINE_TYPE ones and removes the init and finalize + implementations, moving custom code when needed to the private + struct constructor/destructor or constructed/dispose virtual + methods when appropriate. + + * UIProcess/API/gtk/WebKitBackForwardList.cpp: + * UIProcess/API/gtk/WebKitBackForwardListItem.cpp: + (webkit_back_forward_list_item_class_init): + * UIProcess/API/gtk/WebKitContextMenu.cpp: + (webkitContextMenuDispose): + (webkit_context_menu_class_init): + * UIProcess/API/gtk/WebKitContextMenuItem.cpp: + (_WebKitContextMenuItemPrivate::~_WebKitContextMenuItemPrivate): + (_WebKitContextMenuItemPrivate): + (webkit_context_menu_item_class_init): + * UIProcess/API/gtk/WebKitCookieManager.cpp: + (_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate): + (_WebKitCookieManagerPrivate): + * UIProcess/API/gtk/WebKitDownload.cpp: + (webkit_download_class_init): + * UIProcess/API/gtk/WebKitFaviconDatabase.cpp: + (webkit_favicon_database_class_init): + * UIProcess/API/gtk/WebKitFileChooserRequest.cpp: + (webkitFileChooserRequestDispose): + (webkit_file_chooser_request_class_init): + * UIProcess/API/gtk/WebKitFindController.cpp: + (webkit_find_controller_class_init): + * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp: + (webkitFormSubmissionRequestDispose): + (webkit_form_submission_request_class_init): + * UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp: + (webkitGeolocationPermissionRequestDispose): + (webkit_geolocation_permission_request_class_init): + * UIProcess/API/gtk/WebKitHitTestResult.cpp: + (webkit_hit_test_result_class_init): + * UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp: + (webkit_navigation_policy_decision_class_init): + * UIProcess/API/gtk/WebKitPlugin.cpp: + (_WebKitPluginPrivate::~_WebKitPluginPrivate): + (_WebKitPluginPrivate): + (webkit_plugin_class_init): + * UIProcess/API/gtk/WebKitPolicyDecision.cpp: + (webkitPolicyDecisionDispose): + (webkit_policy_decision_class_init): + (webkit_policy_decision_use): + (webkit_policy_decision_ignore): + (webkit_policy_decision_download): + * UIProcess/API/gtk/WebKitPrintOperation.cpp: + (_WebKitPrintOperationPrivate::~_WebKitPrintOperationPrivate): + (_WebKitPrintOperationPrivate): + (webkit_print_operation_class_init): + * UIProcess/API/gtk/WebKitPrivate.h: + * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp: + (webkit_response_policy_decision_class_init): + * UIProcess/API/gtk/WebKitSecurityManager.cpp: + (webkit_security_manager_class_init): + * UIProcess/API/gtk/WebKitSettings.cpp: + (_WebKitSettingsPrivate::_WebKitSettingsPrivate): + (_WebKitSettingsPrivate): + (webkit_settings_class_init): + * UIProcess/API/gtk/WebKitURIRequest.cpp: + (webkit_uri_request_class_init): + * UIProcess/API/gtk/WebKitURIResponse.cpp: + (webkit_uri_response_class_init): + * UIProcess/API/gtk/WebKitURISchemeRequest.cpp: + (webkit_uri_scheme_request_class_init): + * UIProcess/API/gtk/WebKitWebContext.cpp: + * UIProcess/API/gtk/WebKitWebInspector.cpp: + (_WebKitWebInspectorPrivate::~_WebKitWebInspectorPrivate): + (_WebKitWebInspectorPrivate): + (webkit_web_inspector_class_init): + * UIProcess/API/gtk/WebKitWebResource.cpp: + (webkit_web_resource_class_init): + * UIProcess/API/gtk/WebKitWebView.cpp: + (_WebKitWebViewPrivate::~_WebKitWebViewPrivate): + (_WebKitWebViewPrivate): + (webkitWebViewConstructed): + (webkitWebViewDispose): + (webkit_web_view_class_init): + * UIProcess/API/gtk/WebKitWebViewBase.cpp: + (_WebKitWebViewBasePrivate::_WebKitWebViewBasePrivate): + (_WebKitWebViewBasePrivate): + (_WebKitWebViewBasePrivate::~_WebKitWebViewBasePrivate): + (webkitWebViewBaseDispose): + (webkitWebViewBaseConstructed): + (webkit_web_view_base_class_init): + * UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp: + (webkit_web_view_base_accessible_class_init): + * UIProcess/API/gtk/WebKitWindowProperties.cpp: + (webkit_window_properties_class_init): + +2012-11-22 KwangYong Choi <ky0.choi@samsung.com> + + [EFL][WK2] Buildfix when ENABLE_NETSCAPE_PLUGIN_API is disabled + https://bugs.webkit.org/show_bug.cgi?id=103044 + + Reviewed by Kentaro Hara. + + enum ProcessType has PluginProcess only if ENABLE(PLUGIN_PROCESS) is enabled. + So, guard PluginProcess with ENABLE(PLUGIN_PROCESS). + + * UIProcess/Launcher/efl/ProcessLauncherEfl.cpp: + (WebKit::ProcessLauncher::launchProcess): + +2012-09-26 Gustavo Noronha Silva <gns@gnome.org> + + [GTK] Split SVG from WebCore to work-around make limitation + https://bugs.webkit.org/show_bug.cgi?id=97735 + + Reviewed by Carlos Garcia Campos. + + Add a new libtool convenience library, libWebCoreSVG.la, to work-around + make limitation when linking libWebCore. + + * GNUmakefile.am: link libWebCoreSVG.la into libwebkit2gtk. + +2012-11-22 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com> + + [Qt] Separate QWidget dependant code into separate WebKitWidgets static library + https://bugs.webkit.org/show_bug.cgi?id=102800 + + Reviewed by Tor Arne Vestbø. + + This patch separates code that needs to use QWidget related APIs in + WebKit/qt/WebCoreSupport and Api from code that doesn't. This means for + example FrameLoaderClientQt.cpp remains in the WebKit1 static library, + while qwebpage.cpp and qwebframe.cpp become part of the WebKitWidgets + static library. WebKit1 is compiled without QT += widgets and therefore + any widget related dependency has been moved "up" and out of WebKit1 into + the WebKitWidgets library. + + Between the code in WebKit.a and WebKitWidgets.a new adapters and + interfaces have been introduced, such as QWebPageAdapter and + QWebFrameAdapter. QWebPageAdapter, when used from WebKit1, is a way to + call out into the API layer, implemented by QWebPage (QWebPagePrivate). + The other way around if QWebPage wants to access WebCore or + WebCoreSupport related functionality, it will go through + QWebPageAdapater (as base class). The separation in the direction up + into the API layer is complete with this patch, no code in WebKit1 + depends on QtWidgets. The separation the other way around, code in the + API layer not using any WebCore types, is not complete yet. + + Some classes such as QWebSettings, QWebElement or + DumpRenderTreeSupportQt remain in WebKit1. While they are API layer, + they do not depend on widget related Qt APIs and they make much more + use of WebCore internal APIs and therefore are easier to keep in + WebKit1. + + In the future we plan to place a real shared library boundary between + WebKit1 and WebKitWidgets, by keeping the WebKit1 static library as + part of the QtWebKit shared library and by turning the WebKitWidgets + static library into a shared one. + + * qt/MainQt.cpp: + (WebKit): + (main): + +2012-11-22 Kenneth Rohde Christiansen <kenneth@webkit.org> + + [WK2][EFL] No need to remove surface before replacing + https://bugs.webkit.org/show_bug.cgi?id=103055 + + Rubberstamped by Simon Hausmann. + + The surface is stored in a OwnPtr which automatically + frees the existing surface after replacing it with a new + one. For some reason, this also fixes resizing issues on + my Nvidia driver. + + * UIProcess/API/efl/EwkViewImpl.cpp: + (EwkViewImpl::createGLSurface): + * UIProcess/API/efl/EwkViewImpl.h: + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_smart_calculate): + +2012-11-22 Christophe Dumez <christophe.dumez@intel.com> + + WebKitTestRunner needs layoutTestController.setCacheModel + https://bugs.webkit.org/show_bug.cgi?id=42684 + + Reviewed by Kenneth Rohde Christiansen. + + Add Bundle C API for WebKitTestRunner to set the + cache model. + + * WebProcess/InjectedBundle/API/c/WKBundle.cpp: + (WKBundleSetCacheModel): + * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: + * WebProcess/InjectedBundle/InjectedBundle.cpp: + (WebKit::InjectedBundle::setCacheModel): + (WebKit): + * WebProcess/InjectedBundle/InjectedBundle.h: + (InjectedBundle): + * WebProcess/WebProcess.h: + (WebProcess): + +2012-11-22 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> + + REGRESSION(r135399): Wrong assertion causing an assertion failure: m_rawAttributes.initialScale > 0 + https://bugs.webkit.org/show_bug.cgi?id=102971 + + Reviewed by Kenneth Rohde Christiansen. + + m_rawAttributes.initialScale has to be initialized even if m_minimumScaleToFit hasn't changed + it's value. + + * UIProcess/PageViewportController.cpp: + (WebKit::PageViewportController::didChangeViewportAttributes): + +2012-11-22 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Correct the parameters of WebPlatformTouchPoint. + https://bugs.webkit.org/show_bug.cgi?id=102865 + + Reviewed by Kenneth Rohde Christiansen. + + Set the screen position as a third parameter and contents position as + a fourth parameter of WebPlatformTouchPoint(). + + * Shared/efl/WebEventFactory.cpp: + (WebKit::WebEventFactory::createWebTouchEvent): + +2012-11-22 Huang Dongsung <luxtella@company100.net> + + Coordinated Graphics: Remove an invisible TiledBackingStore of CoordinatedGraphicsLayer. + https://bugs.webkit.org/show_bug.cgi?id=102894 + + Reviewed by Kenneth Rohde Christiansen. + + CoordinatedGraphicsLayer does not need to have a backing store + if (!drawsContent() || !contentsAreVisible() || m_size.isEmpty()). + + * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp: + (WebCore::CoordinatedGraphicsLayer::updateContentBuffers): + +2012-11-22 Huang Dongsung <luxtella@company100.net> + + Coordinated Graphics: refactor LayerTreeRenderer. + https://bugs.webkit.org/show_bug.cgi?id=103004 + + Reviewed by Noam Rosenthal. + + This patch changes two subjects. + 1. Add ASSERT(isMainThread()) in all methods that are called in the main thread. + In addition, make dispatchOnMainThread() use callOnMainThread(const Function<void()>& + function) instead of its own implementation. + + 2. Remove setAccelerationMode() because we don't use m_accelerationMode member + except for the setter. + + * UIProcess/API/efl/EwkViewImpl.cpp: + (EwkViewImpl::createGLSurface): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp: + (WebKit): + (WebKit::LayerTreeRenderer::dispatchOnMainThread): + (WebKit::LayerTreeRenderer::LayerTreeRenderer): + (WebKit::LayerTreeRenderer::animationFrameReady): + (WebKit::LayerTreeRenderer::updateViewport): + (WebKit::LayerTreeRenderer::renderNextFrame): + (WebKit::LayerTreeRenderer::purgeGLResources): + (WebKit::LayerTreeRenderer::detach): + (WebKit::LayerTreeRenderer::setActive): + * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h: + (LayerTreeRenderer): + * UIProcess/efl/PageClientBase.cpp: + (WebKit::PageClientBase::createDrawingAreaProxy): + 2012-11-21 Jinwoo Song <jinwoo7.song@samsung.com> [EFL][WK2] Use consistent class names in the clients diff --git a/Source/WebKit2/GNUmakefile.am b/Source/WebKit2/GNUmakefile.am index dfdd49d70..097cdc1fc 100644 --- a/Source/WebKit2/GNUmakefile.am +++ b/Source/WebKit2/GNUmakefile.am @@ -159,11 +159,18 @@ libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LDF $(version_script) \ $(no_undefined) -libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD = \ +libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD := \ -lpthread \ libWebCore.la \ libWebCorePlatform.la \ - libWebCoreModules.la \ + libWebCoreModules.la + +if ENABLE_SVG +libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD += \ + libWebCoreSVG.la +endif + +libwebkit2gtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD += \ libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \ libWebCoreGtk.la \ $(CAIRO_LIBS) \ @@ -533,7 +540,14 @@ Programs_WebKitPluginProcess_SOURCES = \ Programs_WebKitPluginProcess_LDADD = \ -lpthread \ libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \ - libWebCore.la \ + libWebCore.la + +#if ENABLE_SVG +Programs_WebKitPluginProcess_LDADD += \ + libWebCoreSVG.la +#endif + +Programs_WebKitPluginProcess_LDADD += \ libWebCorePlatform.la \ libWebCoreGtk2.la \ $(CAIRO_LIBS) \ diff --git a/Source/WebKit2/Shared/efl/WebEventFactory.cpp b/Source/WebKit2/Shared/efl/WebEventFactory.cpp index 042958714..b99925084 100644 --- a/Source/WebKit2/Shared/efl/WebEventFactory.cpp +++ b/Source/WebKit2/Shared/efl/WebEventFactory.cpp @@ -250,7 +250,7 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(Ewk_Touch_Event_Type type, co } IntPoint pos(point->x, point->y); - touchPoints.append(WebPlatformTouchPoint(point->id, state, toWebContent.mapPoint(pos), toDeviceScreen.mapPoint(pos))); + touchPoints.append(WebPlatformTouchPoint(point->id, state, toDeviceScreen.mapPoint(pos), toWebContent.mapPoint(pos))); } return WebTouchEvent(typeForTouchEvent(type), touchPoints, modifiersForEvent(modifiers), timestamp); diff --git a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp index 2e4462734..e0c59054d 100644 --- a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp +++ b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp @@ -617,7 +617,6 @@ bool EwkViewImpl::createGLSurface(const IntSize& viewSize) if (!m_evasGL) { WARN("Failed to create Evas_GL, falling back to software mode."); m_isHardwareAccelerated = false; - layerTreeRenderer()->setAccelerationMode(TextureMapper::SoftwareMode); #if ENABLE(WEBGL) m_pageProxy->pageGroup()->preferences()->setWebGLEnabled(false); #endif @@ -643,7 +642,7 @@ bool EwkViewImpl::createGLSurface(const IntSize& viewSize) EVAS_GL_MULTISAMPLE_NONE }; - ASSERT(!m_evasGLSurface); + // Replaces if non-null, and frees existing surface after (OwnPtr). m_evasGLSurface = EvasGLSurface::create(evasGL(), &evasGLConfig, viewSize); if (!m_evasGLSurface) return false; diff --git a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h index 545c5ab68..379b57ebe 100644 --- a/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h +++ b/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h @@ -207,7 +207,6 @@ public: Evas_GL* evasGL() { return m_evasGL.get(); } Evas_GL_Context* evasGLContext() { return m_evasGLContext ? m_evasGLContext->context() : 0; } Evas_GL_Surface* evasGLSurface() { return m_evasGLSurface ? m_evasGLSurface->surface() : 0; } - void clearEvasGLSurface() { m_evasGLSurface.clear(); } #endif // FIXME: needs refactoring (split callback invoke) diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp index 42a8b1f29..d5d50ed0a 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp @@ -387,10 +387,6 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView) impl->page()->drawingArea()->setSize(IntSize(width, height), IntSize()); #if USE(ACCELERATED_COMPOSITING) - // Recreate surface if needed. - if (impl->evasGLSurface()) - impl->clearEvasGLSurface(); - if (width && height) impl->createGLSurface(IntSize(width, height)); #endif diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp index 56eae4437..fbf302aa8 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp @@ -63,27 +63,10 @@ struct _WebKitBackForwardListPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitBackForwardList, webkit_back_forward_list, G_TYPE_OBJECT) - -static void webkitBackForwardListFinalize(GObject* object) -{ - WEBKIT_BACK_FORWARD_LIST(object)->priv->~WebKitBackForwardListPrivate(); - G_OBJECT_CLASS(webkit_back_forward_list_parent_class)->finalize(object); -} - -static void webkit_back_forward_list_init(WebKitBackForwardList* list) -{ - WebKitBackForwardListPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(list, WEBKIT_TYPE_BACK_FORWARD_LIST, WebKitBackForwardListPrivate); - list->priv = priv; - new (priv) WebKitBackForwardListPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitBackForwardList, webkit_back_forward_list, G_TYPE_OBJECT) static void webkit_back_forward_list_class_init(WebKitBackForwardListClass* listClass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(listClass); - - gObjectClass->finalize = webkitBackForwardListFinalize; - /** * WebKitBackForwardList::changed: * @back_forward_list: the #WebKitBackForwardList on which the signal was emitted @@ -105,8 +88,6 @@ static void webkit_back_forward_list_class_init(WebKitBackForwardListClass* list G_TYPE_NONE, 2, WEBKIT_TYPE_BACK_FORWARD_LIST_ITEM, G_TYPE_POINTER); - - g_type_class_add_private(listClass, sizeof(WebKitBackForwardListPrivate)); } static WebKitBackForwardListItem* webkitBackForwardListGetOrCreateItem(WebKitBackForwardList* list, WebBackForwardListItem* webListItem) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp index 8b22afc46..53fd1c8c2 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp @@ -35,28 +35,10 @@ struct _WebKitBackForwardListItemPrivate { CString originalURI; }; -G_DEFINE_TYPE(WebKitBackForwardListItem, webkit_back_forward_list_item, G_TYPE_INITIALLY_UNOWNED) - -static void webkitBackForwardListItemFinalize(GObject* object) -{ - WEBKIT_BACK_FORWARD_LIST_ITEM(object)->priv->~WebKitBackForwardListItemPrivate(); - G_OBJECT_CLASS(webkit_back_forward_list_item_parent_class)->finalize(object); -} - -static void webkit_back_forward_list_item_init(WebKitBackForwardListItem* listItem) -{ - WebKitBackForwardListItemPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(listItem, WEBKIT_TYPE_BACK_FORWARD_LIST_ITEM, WebKitBackForwardListItemPrivate); - listItem->priv = priv; - new (priv) WebKitBackForwardListItemPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitBackForwardListItem, webkit_back_forward_list_item, G_TYPE_INITIALLY_UNOWNED) static void webkit_back_forward_list_item_class_init(WebKitBackForwardListItemClass* listItemClass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(listItemClass); - - gObjectClass->finalize = webkitBackForwardListItemFinalize; - - g_type_class_add_private(listItemClass, sizeof(WebKitBackForwardListItemPrivate)); } typedef HashMap<WebBackForwardListItem*, WebKitBackForwardListItem*> HistoryItemsMap; diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp index e65728aac..46ce958ee 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp @@ -33,29 +33,18 @@ struct _WebKitContextMenuPrivate { WebKitContextMenuItem* parentItem; }; -G_DEFINE_TYPE(WebKitContextMenu, webkit_context_menu, G_TYPE_OBJECT) +WEBKIT_DEFINE_TYPE(WebKitContextMenu, webkit_context_menu, G_TYPE_OBJECT) -static void webkitContextMenuFinalize(GObject* object) +static void webkitContextMenuDispose(GObject* object) { - WebKitContextMenu* menu = WEBKIT_CONTEXT_MENU(object); - webkit_context_menu_remove_all(menu); - menu->priv->~WebKitContextMenuPrivate(); - G_OBJECT_CLASS(webkit_context_menu_parent_class)->finalize(object); -} - -static void webkit_context_menu_init(WebKitContextMenu* menu) -{ - WebKitContextMenuPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(menu, WEBKIT_TYPE_CONTEXT_MENU, WebKitContextMenuPrivate); - menu->priv = priv; - new (priv) WebKitContextMenuPrivate(); + webkit_context_menu_remove_all(WEBKIT_CONTEXT_MENU(object)); + G_OBJECT_CLASS(webkit_context_menu_parent_class)->dispose(object); } static void webkit_context_menu_class_init(WebKitContextMenuClass* listClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(listClass); - gObjectClass->finalize = webkitContextMenuFinalize; - - g_type_class_add_private(listClass, sizeof(WebKitContextMenuPrivate)); + gObjectClass->dispose = webkitContextMenuDispose; } void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<ContextMenuItem>& contextMenuItems) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp index a73f07575..aa89b990b 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuItem.cpp @@ -38,33 +38,20 @@ using namespace WebKit; using namespace WebCore; struct _WebKitContextMenuItemPrivate { + ~_WebKitContextMenuItemPrivate() + { + if (subMenu) + webkitContextMenuSetParentItem(subMenu.get(), 0); + } + OwnPtr<ContextMenuItem> menuItem; GRefPtr<WebKitContextMenu> subMenu; }; -G_DEFINE_TYPE(WebKitContextMenuItem, webkit_context_menu_item, G_TYPE_INITIALLY_UNOWNED) - -static void webkitContextMenuItemFinalize(GObject* object) -{ - WebKitContextMenuItemPrivate* priv = WEBKIT_CONTEXT_MENU_ITEM(object)->priv; - if (priv->subMenu) - webkitContextMenuSetParentItem(priv->subMenu.get(), 0); - priv->~WebKitContextMenuItemPrivate(); - G_OBJECT_CLASS(webkit_context_menu_item_parent_class)->finalize(object); -} - -static void webkit_context_menu_item_init(WebKitContextMenuItem* item) -{ - WebKitContextMenuItemPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(item, WEBKIT_TYPE_CONTEXT_MENU_ITEM, WebKitContextMenuItemPrivate); - item->priv = priv; - new (priv) WebKitContextMenuItemPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitContextMenuItem, webkit_context_menu_item, G_TYPE_INITIALLY_UNOWNED) static void webkit_context_menu_item_class_init(WebKitContextMenuItemClass* itemClass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(itemClass); - gObjectClass->finalize = webkitContextMenuItemFinalize; - g_type_class_add_private(itemClass, sizeof(WebKitContextMenuItemPrivate)); } static bool checkAndWarnIfMenuHasParentItem(WebKitContextMenu* menu) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp index 66db1cc5b..29a37ebd3 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.cpp @@ -36,12 +36,17 @@ enum { }; struct _WebKitCookieManagerPrivate { + ~_WebKitCookieManagerPrivate() + { + webCookieManager->stopObservingCookieChanges(); + } + RefPtr<WebCookieManagerProxy> webCookieManager; }; static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitCookieManager, webkit_cookie_manager, G_TYPE_OBJECT) +WEBKIT_DEFINE_TYPE(WebKitCookieManager, webkit_cookie_manager, G_TYPE_OBJECT) COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT, SoupCookiePersistentStorageText); COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE, SoupCookiePersistentStorageSQLite); @@ -50,27 +55,9 @@ COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS, HTTPCookieAccep COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_COOKIE_POLICY_ACCEPT_NEVER, HTTPCookieAcceptPolicyNever); COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY, HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain); -static void webkit_cookie_manager_init(WebKitCookieManager* manager) -{ - WebKitCookieManagerPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(manager, WEBKIT_TYPE_COOKIE_MANAGER, WebKitCookieManagerPrivate); - manager->priv = priv; - new (priv) WebKitCookieManagerPrivate(); -} - -static void webkitCookieManagerFinalize(GObject* object) -{ - WebKitCookieManagerPrivate* priv = WEBKIT_COOKIE_MANAGER(object)->priv; - priv->webCookieManager->stopObservingCookieChanges(); - priv->~WebKitCookieManagerPrivate(); - G_OBJECT_CLASS(webkit_cookie_manager_parent_class)->finalize(object); -} - static void webkit_cookie_manager_class_init(WebKitCookieManagerClass* findClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(findClass); - gObjectClass->finalize = webkitCookieManagerFinalize; - - g_type_class_add_private(findClass, sizeof(WebKitCookieManagerPrivate)); /** * WebKitCookieManager::changed: diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp index a6754de06..245f1a61b 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitDownload.cpp @@ -53,6 +53,12 @@ enum { }; struct _WebKitDownloadPrivate { + ~_WebKitDownloadPrivate() + { + if (webView) + g_object_remove_weak_pointer(G_OBJECT(webView), reinterpret_cast<void**>(&webView)); + } + RefPtr<DownloadProxy> download; GRefPtr<WebKitURIRequest> request; @@ -68,16 +74,7 @@ struct _WebKitDownloadPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitDownload, webkit_download, G_TYPE_OBJECT) - -static void webkitDownloadFinalize(GObject* object) -{ - WebKitDownloadPrivate* priv = WEBKIT_DOWNLOAD(object)->priv; - if (priv->webView) - g_object_remove_weak_pointer(G_OBJECT(priv->webView), reinterpret_cast<void**>(&priv->webView)); - priv->~WebKitDownloadPrivate(); - G_OBJECT_CLASS(webkit_download_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitDownload, webkit_download, G_TYPE_OBJECT) static void webkitDownloadGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -111,18 +108,10 @@ static gboolean webkitDownloadDecideDestination(WebKitDownload* download, const return TRUE; } -static void webkit_download_init(WebKitDownload* download) -{ - WebKitDownloadPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(download, WEBKIT_TYPE_DOWNLOAD, WebKitDownloadPrivate); - download->priv = priv; - new (priv) WebKitDownloadPrivate(); -} - static void webkit_download_class_init(WebKitDownloadClass* downloadClass) { GObjectClass* objectClass = G_OBJECT_CLASS(downloadClass); objectClass->get_property = webkitDownloadGetProperty; - objectClass->finalize = webkitDownloadFinalize; downloadClass->decide_destination = webkitDownloadDecideDestination; @@ -264,8 +253,6 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass) g_cclosure_marshal_VOID__STRING, G_TYPE_BOOLEAN, 1, G_TYPE_STRING); - - g_type_class_add_private(downloadClass, sizeof(WebKitDownloadPrivate)); } WebKitDownload* webkitDownloadCreate(DownloadProxy* downloadProxy) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp index 1847b9605..d50533b91 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp @@ -52,14 +52,7 @@ struct _WebKitFaviconDatabasePrivate { HashMap<String, String> pageURLToIconURLMap; }; -G_DEFINE_TYPE(WebKitFaviconDatabase, webkit_favicon_database, G_TYPE_OBJECT) - -static void webkit_favicon_database_init(WebKitFaviconDatabase* manager) -{ - WebKitFaviconDatabasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(manager, WEBKIT_TYPE_FAVICON_DATABASE, WebKitFaviconDatabasePrivate); - manager->priv = priv; - new (priv) WebKitFaviconDatabasePrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitFaviconDatabase, webkit_favicon_database, G_TYPE_OBJECT) static void webkitFaviconDatabaseDispose(GObject* object) { @@ -72,18 +65,10 @@ static void webkitFaviconDatabaseDispose(GObject* object) G_OBJECT_CLASS(webkit_favicon_database_parent_class)->dispose(object); } -static void webkitFaviconDatabaseFinalize(GObject* object) -{ - WebKitFaviconDatabase* database = WEBKIT_FAVICON_DATABASE(object); - database->priv->~WebKitFaviconDatabasePrivate(); - G_OBJECT_CLASS(webkit_favicon_database_parent_class)->finalize(object); -} - static void webkit_favicon_database_class_init(WebKitFaviconDatabaseClass* faviconDatabaseClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(faviconDatabaseClass); gObjectClass->dispose = webkitFaviconDatabaseDispose; - gObjectClass->finalize = webkitFaviconDatabaseFinalize; /** * WebKitFaviconDatabase::favicon-changed: @@ -108,8 +93,6 @@ static void webkit_favicon_database_class_init(WebKitFaviconDatabaseClass* favic G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); - - g_type_class_add_private(faviconDatabaseClass, sizeof(WebKitFaviconDatabasePrivate)); } struct GetFaviconSurfaceAsyncData { diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp index 26ab99b44..85ae0efa0 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp @@ -56,7 +56,6 @@ using namespace WebCore; * WebKit will provide a default handler which will asynchronously run * a regular #GtkFileChooserDialog for the user to interact with. */ -G_DEFINE_TYPE(WebKitFileChooserRequest, webkit_file_chooser_request, G_TYPE_OBJECT) struct _WebKitFileChooserRequestPrivate { RefPtr<WebOpenPanelParameters> parameters; @@ -67,6 +66,8 @@ struct _WebKitFileChooserRequestPrivate { bool handledRequest; }; +WEBKIT_DEFINE_TYPE(WebKitFileChooserRequest, webkit_file_chooser_request, G_TYPE_OBJECT) + enum { PROP_0, PROP_FILTER, @@ -75,13 +76,7 @@ enum { PROP_SELECTED_FILES, }; -static void webkit_file_chooser_request_init(WebKitFileChooserRequest* request) -{ - request->priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_FILE_CHOOSER_REQUEST, WebKitFileChooserRequestPrivate); - new (request->priv) WebKitFileChooserRequestPrivate(); -} - -static void webkitFileChooserRequestFinalize(GObject* object) +static void webkitFileChooserRequestDispose(GObject* object) { WebKitFileChooserRequest* request = WEBKIT_FILE_CHOOSER_REQUEST(object); @@ -89,8 +84,7 @@ static void webkitFileChooserRequestFinalize(GObject* object) if (!request->priv->handledRequest) webkit_file_chooser_request_cancel(request); - request->priv->~WebKitFileChooserRequestPrivate(); - G_OBJECT_CLASS(webkit_file_chooser_request_parent_class)->finalize(object); + G_OBJECT_CLASS(webkit_file_chooser_request_parent_class)->dispose(object); } static void webkitFileChooserRequestGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) @@ -118,9 +112,8 @@ static void webkitFileChooserRequestGetProperty(GObject* object, guint propId, G static void webkit_file_chooser_request_class_init(WebKitFileChooserRequestClass* requestClass) { GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); - objectClass->finalize = webkitFileChooserRequestFinalize; + objectClass->dispose = webkitFileChooserRequestDispose; objectClass->get_property = webkitFileChooserRequestGetProperty; - g_type_class_add_private(requestClass, sizeof(WebKitFileChooserRequestPrivate)); /** * WebKitFileChooserRequest:filter: diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp index be3f571d6..7e36a4ad5 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFindController.cpp @@ -62,7 +62,7 @@ struct _WebKitFindControllerPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitFindController, webkit_find_controller, G_TYPE_OBJECT) +WEBKIT_DEFINE_TYPE(WebKitFindController, webkit_find_controller, G_TYPE_OBJECT) COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE, FindOptionsCaseInsensitive); COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_FIND_OPTIONS_AT_WORD_STARTS, FindOptionsAtWordStarts); @@ -85,13 +85,6 @@ static void didCountStringMatches(WKPageRef page, WKStringRef string, unsigned m g_signal_emit(WEBKIT_FIND_CONTROLLER(clientInfo), signals[COUNTED_MATCHES], 0, matchCount); } -static void webkit_find_controller_init(WebKitFindController* findController) -{ - WebKitFindControllerPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(findController, WEBKIT_TYPE_FIND_CONTROLLER, WebKitFindControllerPrivate); - findController->priv = priv; - new (priv) WebKitFindControllerPrivate(); -} - static inline WebPageProxy* getPage(WebKitFindController* findController) { return webkitWebViewBaseGetPage(reinterpret_cast<WebKitWebViewBase*>(findController->priv->webView)); @@ -146,22 +139,12 @@ static void webkitFindControllerSetProperty(GObject* object, guint propId, const } } -static void webkitFindControllerFinalize(GObject* object) -{ - WEBKIT_FIND_CONTROLLER(object)->priv->~WebKitFindControllerPrivate(); - G_OBJECT_CLASS(webkit_find_controller_parent_class)->finalize(object); -} - static void webkit_find_controller_class_init(WebKitFindControllerClass* findClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(findClass); - gObjectClass->constructed = webkitFindControllerConstructed; gObjectClass->get_property = webkitFindControllerGetProperty; gObjectClass->set_property = webkitFindControllerSetProperty; - gObjectClass->finalize = webkitFindControllerFinalize; - - g_type_class_add_private(findClass, sizeof(WebKitFindControllerPrivate)); /** * WebKitFindController:text: diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp index f901e7375..816cee3f6 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp @@ -28,8 +28,6 @@ using namespace WebKit; -G_DEFINE_TYPE(WebKitFormSubmissionRequest, webkit_form_submission_request, G_TYPE_OBJECT) - struct _WebKitFormSubmissionRequestPrivate { RefPtr<ImmutableDictionary> webValues; RefPtr<WebFormSubmissionListenerProxy> listener; @@ -37,14 +35,9 @@ struct _WebKitFormSubmissionRequestPrivate { bool handledRequest; }; -static void webkit_form_submission_request_init(WebKitFormSubmissionRequest* request) -{ - WebKitFormSubmissionRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_FORM_SUBMISSION_REQUEST, WebKitFormSubmissionRequestPrivate); - request->priv = priv; - new (priv) WebKitFormSubmissionRequestPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitFormSubmissionRequest, webkit_form_submission_request, G_TYPE_OBJECT) -static void webkitFormSubmissionRequestFinalize(GObject* object) +static void webkitFormSubmissionRequestDispose(GObject* object) { WebKitFormSubmissionRequest* request = WEBKIT_FORM_SUBMISSION_REQUEST(object); @@ -52,15 +45,13 @@ static void webkitFormSubmissionRequestFinalize(GObject* object) if (!request->priv->handledRequest) webkit_form_submission_request_submit(request); - request->priv->~WebKitFormSubmissionRequestPrivate(); - G_OBJECT_CLASS(webkit_form_submission_request_parent_class)->finalize(object); + G_OBJECT_CLASS(webkit_form_submission_request_parent_class)->dispose(object); } static void webkit_form_submission_request_class_init(WebKitFormSubmissionRequestClass* requestClass) { GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); - objectClass->finalize = webkitFormSubmissionRequestFinalize; - g_type_class_add_private(requestClass, sizeof(WebKitFormSubmissionRequestPrivate)); + objectClass->dispose = webkitFormSubmissionRequestDispose; } WebKitFormSubmissionRequest* webkitFormSubmissionRequestCreate(ImmutableDictionary* values, WebFormSubmissionListenerProxy* listener) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp index 664293770..f780dafb2 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp @@ -36,16 +36,18 @@ using namespace WebKit; * permission to decide whether WebKit should provide the user's * location to a website when requested throught the Geolocation API. */ + static void webkit_permission_request_interface_init(WebKitPermissionRequestIface*); -G_DEFINE_TYPE_WITH_CODE(WebKitGeolocationPermissionRequest, webkit_geolocation_permission_request, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE(WEBKIT_TYPE_PERMISSION_REQUEST, - webkit_permission_request_interface_init)) struct _WebKitGeolocationPermissionRequestPrivate { RefPtr<GeolocationPermissionRequestProxy> request; bool madeDecision; }; +WEBKIT_DEFINE_TYPE_WITH_CODE( + WebKitGeolocationPermissionRequest, webkit_geolocation_permission_request, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE(WEBKIT_TYPE_PERMISSION_REQUEST, webkit_permission_request_interface_init)) + static void webkitGeolocationPermissionRequestAllow(WebKitPermissionRequest* request) { ASSERT(WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request)); @@ -80,29 +82,17 @@ static void webkit_permission_request_interface_init(WebKitPermissionRequestIfac iface->deny = webkitGeolocationPermissionRequestDeny; } -static void webkit_geolocation_permission_request_init(WebKitGeolocationPermissionRequest* request) +static void webkitGeolocationPermissionRequestDispose(GObject* object) { - request->priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_GEOLOCATION_PERMISSION_REQUEST, WebKitGeolocationPermissionRequestPrivate); - new (request->priv) WebKitGeolocationPermissionRequestPrivate(); -} - -static void webkitGeolocationPermissionRequestFinalize(GObject* object) -{ - WebKitGeolocationPermissionRequestPrivate* priv = WEBKIT_GEOLOCATION_PERMISSION_REQUEST(object)->priv; - // Default behaviour when no decision has been made is denying the request. - if (!priv->madeDecision) - priv->request->deny(); - - priv->~WebKitGeolocationPermissionRequestPrivate(); - G_OBJECT_CLASS(webkit_geolocation_permission_request_parent_class)->finalize(object); + webkitGeolocationPermissionRequestDeny(WEBKIT_PERMISSION_REQUEST(object)); + G_OBJECT_CLASS(webkit_geolocation_permission_request_parent_class)->dispose(object); } static void webkit_geolocation_permission_request_class_init(WebKitGeolocationPermissionRequestClass* klass) { GObjectClass* objectClass = G_OBJECT_CLASS(klass); - objectClass->finalize = webkitGeolocationPermissionRequestFinalize; - g_type_class_add_private(klass, sizeof(WebKitGeolocationPermissionRequestPrivate)); + objectClass->dispose = webkitGeolocationPermissionRequestDispose; } WebKitGeolocationPermissionRequest* webkitGeolocationPermissionRequestCreate(GeolocationPermissionRequestProxy* request) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp index 4c9486782..8df293cba 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp @@ -74,13 +74,7 @@ struct _WebKitHitTestResultPrivate { CString mediaURI; }; -G_DEFINE_TYPE(WebKitHitTestResult, webkit_hit_test_result, G_TYPE_OBJECT) - -static void webkitHitTestResultFinalize(GObject* object) -{ - WEBKIT_HIT_TEST_RESULT(object)->priv->~WebKitHitTestResultPrivate(); - G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitHitTestResult, webkit_hit_test_result, G_TYPE_OBJECT) static void webkitHitTestResultGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -138,19 +132,11 @@ static void webkitHitTestResultSetProperty(GObject* object, guint propId, const } } -static void webkit_hit_test_result_init(WebKitHitTestResult* hitTestResult) -{ - WebKitHitTestResultPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(hitTestResult, WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResultPrivate); - hitTestResult->priv = priv; - new (priv) WebKitHitTestResultPrivate(); -} - static void webkit_hit_test_result_class_init(WebKitHitTestResultClass* hitTestResultClass) { GObjectClass* objectClass = G_OBJECT_CLASS(hitTestResultClass); objectClass->get_property = webkitHitTestResultGetProperty; objectClass->set_property = webkitHitTestResultSetProperty; - objectClass->finalize = webkitHitTestResultFinalize; GParamFlags paramFlags = static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); @@ -233,8 +219,6 @@ static void webkit_hit_test_result_class_init(WebKitHitTestResultClass* hitTestR _("The media URI"), 0, paramFlags)); - - g_type_class_add_private(hitTestResultClass, sizeof(WebKitHitTestResultPrivate)); } WebKitHitTestResult* webkitHitTestResultCreate(WebHitTestResult* hitTestResult) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp index 0901d8079..deef50c55 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp @@ -43,8 +43,6 @@ using namespace WebCore; * the navigation was triggered by a mouse event. */ -G_DEFINE_TYPE(WebKitNavigationPolicyDecision, webkit_navigation_policy_decision, WEBKIT_TYPE_POLICY_DECISION) - struct _WebKitNavigationPolicyDecisionPrivate { WebKitNavigationType navigationType; unsigned modifiers; @@ -53,6 +51,8 @@ struct _WebKitNavigationPolicyDecisionPrivate { CString frameName; }; +WEBKIT_DEFINE_TYPE(WebKitNavigationPolicyDecision, webkit_navigation_policy_decision, WEBKIT_TYPE_POLICY_DECISION) + enum { PROP_0, PROP_NAVIGATION_TYPE, @@ -62,18 +62,6 @@ enum { PROP_FRAME_NAME, }; -static void webkit_navigation_policy_decision_init(WebKitNavigationPolicyDecision* decision) -{ - decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_NAVIGATION_POLICY_DECISION, WebKitNavigationPolicyDecisionPrivate); - new (decision->priv) WebKitNavigationPolicyDecisionPrivate(); -} - -static void webkitNavigationPolicyDecisionFinalize(GObject* object) -{ - WEBKIT_NAVIGATION_POLICY_DECISION(object)->priv->~WebKitNavigationPolicyDecisionPrivate(); - G_OBJECT_CLASS(webkit_navigation_policy_decision_parent_class)->finalize(object); -} - static void webkitNavigationPolicyDecisionGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(object); @@ -102,9 +90,7 @@ static void webkitNavigationPolicyDecisionGetProperty(GObject* object, guint pro static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyDecisionClass* decisionClass) { GObjectClass* objectClass = G_OBJECT_CLASS(decisionClass); - objectClass->finalize = webkitNavigationPolicyDecisionFinalize; objectClass->get_property = webkitNavigationPolicyDecisionGetProperty; - g_type_class_add_private(decisionClass, sizeof(WebKitNavigationPolicyDecisionPrivate)); /** * WebKitNavigationPolicyDecision:navigation-type: diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp index aff651aed..0dd1121cf 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPlugin.cpp @@ -27,6 +27,11 @@ using namespace WebKit; struct _WebKitPluginPrivate { + ~_WebKitPluginPrivate() + { + g_list_free_full(mimeInfoList, reinterpret_cast<GDestroyNotify>(webkit_mime_info_unref)); + } + PluginModuleInfo pluginInfo; CString name; CString description; @@ -34,29 +39,10 @@ struct _WebKitPluginPrivate { GList* mimeInfoList; }; -G_DEFINE_TYPE(WebKitPlugin, webkit_plugin, G_TYPE_OBJECT) - -static void webkitPluginFinalize(GObject* object) -{ - WebKitPluginPrivate* priv = WEBKIT_PLUGIN(object)->priv; - g_list_free_full(priv->mimeInfoList, reinterpret_cast<GDestroyNotify>(webkit_mime_info_unref)); - priv->~WebKitPluginPrivate(); - G_OBJECT_CLASS(webkit_plugin_parent_class)->finalize(object); -} - -static void webkit_plugin_init(WebKitPlugin* plugin) -{ - WebKitPluginPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(plugin, WEBKIT_TYPE_PLUGIN, WebKitPluginPrivate); - plugin->priv = priv; - new (priv) WebKitPluginPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitPlugin, webkit_plugin, G_TYPE_OBJECT) static void webkit_plugin_class_init(WebKitPluginClass* pluginClass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(pluginClass); - gObjectClass->finalize = webkitPluginFinalize; - - g_type_class_add_private(pluginClass, sizeof(WebKitPluginPrivate)); } WebKitPlugin* webkitPluginCreate(const PluginModuleInfo& pluginInfo) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp index 3e9ef3fbf..ee44eaebb 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp @@ -41,30 +41,18 @@ using namespace WebKit; * completes. To make a policy decision asynchronously, simply increment * the reference count of the #WebKitPolicyDecision object. */ -G_DEFINE_ABSTRACT_TYPE(WebKitPolicyDecision, webkit_policy_decision, G_TYPE_OBJECT) struct _WebKitPolicyDecisionPrivate { RefPtr<WebFramePolicyListenerProxy> listener; bool madePolicyDecision; }; -static void webkit_policy_decision_init(WebKitPolicyDecision* decision) -{ - decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_POLICY_DECISION, WebKitPolicyDecisionPrivate); - new (decision->priv) WebKitPolicyDecisionPrivate(); - decision->priv->madePolicyDecision = false; -} +WEBKIT_DEFINE_ABSTRACT_TYPE(WebKitPolicyDecision, webkit_policy_decision, G_TYPE_OBJECT) -static void webkitPolicyDecisionFinalize(GObject* object) +static void webkitPolicyDecisionDispose(GObject* object) { - WebKitPolicyDecisionPrivate* priv = WEBKIT_POLICY_DECISION(object)->priv; - - // This is the default choice for all policy decisions in WebPageProxy.cpp. - if (!priv->madePolicyDecision) - priv->listener->use(); - - priv->~WebKitPolicyDecisionPrivate(); - G_OBJECT_CLASS(webkit_policy_decision_parent_class)->finalize(object); + webkit_policy_decision_use(WEBKIT_POLICY_DECISION(object)); + G_OBJECT_CLASS(webkit_policy_decision_parent_class)->dispose(object); } void webkitPolicyDecisionSetListener(WebKitPolicyDecision* decision, WebFramePolicyListenerProxy* listener) @@ -75,8 +63,7 @@ void webkitPolicyDecisionSetListener(WebKitPolicyDecision* decision, WebFramePol static void webkit_policy_decision_class_init(WebKitPolicyDecisionClass* decisionClass) { GObjectClass* objectClass = G_OBJECT_CLASS(decisionClass); - objectClass->finalize = webkitPolicyDecisionFinalize; - g_type_class_add_private(decisionClass, sizeof(WebKitPolicyDecisionPrivate)); + objectClass->dispose = webkitPolicyDecisionDispose; } /** @@ -88,6 +75,10 @@ static void webkit_policy_decision_class_init(WebKitPolicyDecisionClass* decisio void webkit_policy_decision_use(WebKitPolicyDecision* decision) { g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision)); + + if (decision->priv->madePolicyDecision) + return; + decision->priv->listener->use(); decision->priv->madePolicyDecision = true; } @@ -102,6 +93,10 @@ void webkit_policy_decision_use(WebKitPolicyDecision* decision) void webkit_policy_decision_ignore(WebKitPolicyDecision* decision) { g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision)); + + if (decision->priv->madePolicyDecision) + return; + decision->priv->listener->ignore(); decision->priv->madePolicyDecision = true; } @@ -115,6 +110,10 @@ void webkit_policy_decision_ignore(WebKitPolicyDecision* decision) void webkit_policy_decision_download(WebKitPolicyDecision* decision) { g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision)); + + if (decision->priv->madePolicyDecision) + return; + decision->priv->listener->download(); decision->priv->madePolicyDecision = true; } diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp index 7da0b197a..6b72d188d 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp @@ -54,6 +54,11 @@ enum { }; struct _WebKitPrintOperationPrivate { + ~_WebKitPrintOperationPrivate() + { + g_signal_handler_disconnect(webView, webViewDestroyedId); + } + WebKitWebView* webView; gulong webViewDestroyedId; @@ -63,16 +68,7 @@ struct _WebKitPrintOperationPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitPrintOperation, webkit_print_operation, G_TYPE_OBJECT) - -static void webkitPrintOperationFinalize(GObject* object) -{ - WebKitPrintOperationPrivate* priv = WEBKIT_PRINT_OPERATION(object)->priv; - g_signal_handler_disconnect(priv->webView, priv->webViewDestroyedId); - - priv->~WebKitPrintOperationPrivate(); - G_OBJECT_CLASS(webkit_print_operation_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitPrintOperation, webkit_print_operation, G_TYPE_OBJECT) static void webViewDestroyed(GtkWidget* webView, GObject* printOperation) { @@ -128,17 +124,9 @@ static void webkitPrintOperationSetProperty(GObject* object, guint propId, const } } -static void webkit_print_operation_init(WebKitPrintOperation* printOperation) -{ - WebKitPrintOperationPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(printOperation, WEBKIT_TYPE_PRINT_OPERATION, WebKitPrintOperationPrivate); - printOperation->priv = priv; - new (priv) WebKitPrintOperationPrivate(); -} - static void webkit_print_operation_class_init(WebKitPrintOperationClass* printOperationClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(printOperationClass); - gObjectClass->finalize = webkitPrintOperationFinalize; gObjectClass->constructed = webkitPrintOperationConstructed; gObjectClass->get_property = webkitPrintOperationGetProperty; gObjectClass->set_property = webkitPrintOperationSetProperty; @@ -213,8 +201,6 @@ static void webkit_print_operation_class_init(WebKitPrintOperationClass* printOp g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - - g_type_class_add_private(printOperationClass, sizeof(WebKitPrintOperationPrivate)); } #ifdef HAVE_GTK_UNIX_PRINTING diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h b/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h index 5aabcbc2e..be39e802c 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h @@ -66,6 +66,57 @@ static void destroy##structName(structName* data) \ g_slice_free(structName, data); \ } +#define WEBKIT_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT) _WEBKIT_DEFINE_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, 0, { }) +#define WEBKIT_DEFINE_ABSTRACT_TYPE(TypeName, type_name, TYPE_PARENT) _WEBKIT_DEFINE_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, G_TYPE_FLAG_ABSTRACT, { }) +#define WEBKIT_DEFINE_TYPE_WITH_CODE(TypeName, type_name, TYPE_PARENT, Code) _WEBKIT_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, 0) {Code;} _WEBKIT_DEFINE_TYPE_EXTENDED_END() + +#define _WEBKIT_DEFINE_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, Code) _WEBKIT_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) {Code;} _WEBKIT_DEFINE_TYPE_EXTENDED_END() +#define _WEBKIT_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE_PARENT, flags) \ +\ +static void type_name##_class_init(TypeName##Class* klass); \ +static gpointer type_name##_parent_class = 0; \ +static void type_name##_finalize(GObject* object) \ +{ \ + TypeName* self = (TypeName*)object; \ + self->priv->~TypeName##Private(); \ + G_OBJECT_CLASS(type_name##_parent_class)->finalize(object); \ +} \ +\ +static void type_name##_class_intern_init(gpointer klass) \ +{ \ + GObjectClass* gObjectClass = G_OBJECT_CLASS(klass); \ + g_type_class_add_private(klass, sizeof(TypeName##Private)); \ + type_name##_parent_class = g_type_class_peek_parent(klass); \ + type_name##_class_init((TypeName##Class*)klass); \ + gObjectClass->finalize = type_name##_finalize; \ +} \ +\ +static void type_name##_init(TypeName* self) \ +{ \ + TypeName##Private* priv = G_TYPE_INSTANCE_GET_PRIVATE(self, type_name##_get_type(), TypeName##Private); \ + self->priv = priv; \ + new (priv) TypeName##Private(); \ +}\ +GType type_name##_get_type(void) \ +{ \ + static volatile gsize g_define_type_id__volatile = 0; \ + if (g_once_init_enter(&g_define_type_id__volatile)) { \ + GType g_define_type_id = \ + g_type_register_static_simple( \ + TYPE_PARENT, \ + g_intern_static_string(#TypeName), \ + sizeof(TypeName##Class), \ + (GClassInitFunc)type_name##_class_intern_init, \ + sizeof(TypeName), \ + (GInstanceInitFunc)type_name##_init, \ + (GTypeFlags)flags); \ + // Custom code follows. +#define _WEBKIT_DEFINE_TYPE_EXTENDED_END() \ + g_once_init_leave(&g_define_type_id__volatile, g_define_type_id); \ + } \ + return g_define_type_id__volatile; \ +} // Closes type_name##_get_type(). + unsigned wkEventModifiersToGdkModifiers(WKEventModifiers); unsigned wkEventMouseButtonToWebKitMouseButton(WKEventMouseButton); diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp index ab5f38c97..3a75e38c9 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp @@ -44,31 +44,20 @@ using namespace WebKit; * whether or not to download a particular resource or to load it * normally. */ -G_DEFINE_TYPE(WebKitResponsePolicyDecision, webkit_response_policy_decision, WEBKIT_TYPE_POLICY_DECISION) struct _WebKitResponsePolicyDecisionPrivate { GRefPtr<WebKitURIRequest> request; GRefPtr<WebKitURIResponse> response; }; +WEBKIT_DEFINE_TYPE(WebKitResponsePolicyDecision, webkit_response_policy_decision, WEBKIT_TYPE_POLICY_DECISION) + enum { PROP_0, PROP_REQUEST, PROP_RESPONSE, }; -static void webkit_response_policy_decision_init(WebKitResponsePolicyDecision* decision) -{ - decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_RESPONSE_POLICY_DECISION, WebKitResponsePolicyDecisionPrivate); - new (decision->priv) WebKitResponsePolicyDecisionPrivate(); -} - -static void webkitResponsePolicyDecisionFinalize(GObject* object) -{ - WEBKIT_RESPONSE_POLICY_DECISION(object)->priv->~WebKitResponsePolicyDecisionPrivate(); - G_OBJECT_CLASS(webkit_response_policy_decision_parent_class)->finalize(object); -} - static void webkitResponsePolicyDecisionGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { WebKitResponsePolicyDecision* decision = WEBKIT_RESPONSE_POLICY_DECISION(object); @@ -88,9 +77,7 @@ static void webkitResponsePolicyDecisionGetProperty(GObject* object, guint propI static void webkit_response_policy_decision_class_init(WebKitResponsePolicyDecisionClass* decisionClass) { GObjectClass* objectClass = G_OBJECT_CLASS(decisionClass); - objectClass->finalize = webkitResponsePolicyDecisionFinalize; objectClass->get_property = webkitResponsePolicyDecisionGetProperty; - g_type_class_add_private(decisionClass, sizeof(WebKitResponsePolicyDecisionPrivate)); /** * WebKitResponsePolicyDecision:request: diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp index d170fcf3f..cd8803749 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp @@ -40,28 +40,10 @@ struct _WebKitSecurityManagerPrivate { WebKitWebContext* webContext; }; -G_DEFINE_TYPE(WebKitSecurityManager, webkit_security_manager, G_TYPE_OBJECT) - -static void webkit_security_manager_init(WebKitSecurityManager* manager) -{ - WebKitSecurityManagerPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(manager, WEBKIT_TYPE_SECURITY_MANAGER, WebKitSecurityManagerPrivate); - manager->priv = priv; - new (priv) WebKitSecurityManagerPrivate(); -} - -static void webkitSecurityManagerFinalize(GObject* object) -{ - WebKitSecurityManagerPrivate* priv = WEBKIT_SECURITY_MANAGER(object)->priv; - priv->~WebKitSecurityManagerPrivate(); - G_OBJECT_CLASS(webkit_security_manager_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitSecurityManager, webkit_security_manager, G_TYPE_OBJECT) static void webkit_security_manager_class_init(WebKitSecurityManagerClass* klass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(klass); - gObjectClass->finalize = webkitSecurityManagerFinalize; - - g_type_class_add_private(klass, sizeof(WebKitSecurityManagerPrivate)); } WebKitSecurityManager* webkitSecurityManagerCreate(WebKitWebContext* webContext) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp index 005aaae78..bf1ede057 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp @@ -43,6 +43,19 @@ using namespace WebKit; struct _WebKitSettingsPrivate { + _WebKitSettingsPrivate() + : preferences(WebPreferences::create()) + { + defaultFontFamily = preferences->standardFontFamily().utf8(); + monospaceFontFamily = preferences->fixedFontFamily().utf8(); + serifFontFamily = preferences->serifFontFamily().utf8(); + sansSerifFontFamily = preferences->sansSerifFontFamily().utf8(); + cursiveFontFamily = preferences->cursiveFontFamily().utf8(); + fantasyFontFamily = preferences->fantasyFontFamily().utf8(); + pictographFontFamily = preferences->pictographFontFamily().utf8(); + defaultCharset = preferences->defaultTextEncodingName().utf8(); + } + RefPtr<WebPreferences> preferences; CString defaultFontFamily; CString monospaceFontFamily; @@ -74,8 +87,7 @@ struct _WebKitSettingsPrivate { * </programlisting></informalexample> */ - -G_DEFINE_TYPE(WebKitSettings, webkit_settings, G_TYPE_OBJECT) +WEBKIT_DEFINE_TYPE(WebKitSettings, webkit_settings, G_TYPE_OBJECT) enum { PROP_0, @@ -405,18 +417,11 @@ static void webKitSettingsGetProperty(GObject* object, guint propId, GValue* val } } -static void webKitSettingsFinalize(GObject* object) -{ - WEBKIT_SETTINGS(object)->priv->~WebKitSettingsPrivate(); - G_OBJECT_CLASS(webkit_settings_parent_class)->finalize(object); -} - static void webkit_settings_class_init(WebKitSettingsClass* klass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(klass); gObjectClass->set_property = webKitSettingsSetProperty; gObjectClass->get_property = webKitSettingsGetProperty; - gObjectClass->finalize = webKitSettingsFinalize; GParamFlags readWriteConstructParamFlags = static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT); @@ -1062,26 +1067,6 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass) _("Whether to enable smooth scrolling"), FALSE, readWriteConstructParamFlags)); - - g_type_class_add_private(klass, sizeof(WebKitSettingsPrivate)); -} - -static void webkit_settings_init(WebKitSettings* settings) -{ - WebKitSettingsPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(settings, WEBKIT_TYPE_SETTINGS, WebKitSettingsPrivate); - settings->priv = priv; - new (priv) WebKitSettingsPrivate(); - - priv->preferences = WebPreferences::create(); - priv->defaultFontFamily = priv->preferences->standardFontFamily().utf8(); - priv->monospaceFontFamily = priv->preferences->fixedFontFamily().utf8(); - priv->serifFontFamily = priv->preferences->serifFontFamily().utf8(); - priv->sansSerifFontFamily = priv->preferences->sansSerifFontFamily().utf8(); - priv->cursiveFontFamily = priv->preferences->cursiveFontFamily().utf8(); - priv->fantasyFontFamily = priv->preferences->fantasyFontFamily().utf8(); - priv->pictographFontFamily = priv->preferences->pictographFontFamily().utf8(); - priv->defaultCharset = priv->preferences->defaultTextEncodingName().utf8(); - } void webkitSettingsAttachSettingsToPage(WebKitSettings* settings, WebPageProxy* page) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp index c882cb788..147d17e1c 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp @@ -33,18 +33,12 @@ enum { using namespace WebCore; -G_DEFINE_TYPE(WebKitURIRequest, webkit_uri_request, G_TYPE_OBJECT) - struct _WebKitURIRequestPrivate { WebCore::ResourceRequest resourceRequest; CString uri; }; -static void webkitURIRequestFinalize(GObject* object) -{ - WEBKIT_URI_REQUEST(object)->priv->~WebKitURIRequestPrivate(); - G_OBJECT_CLASS(webkit_uri_request_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitURIRequest, webkit_uri_request, G_TYPE_OBJECT) static void webkitURIRequestGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -75,8 +69,6 @@ static void webkitURIRequestSetProperty(GObject* object, guint propId, const GVa static void webkit_uri_request_class_init(WebKitURIRequestClass* requestClass) { GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); - - objectClass->finalize = webkitURIRequestFinalize; objectClass->get_property = webkitURIRequestGetProperty; objectClass->set_property = webkitURIRequestSetProperty; @@ -91,15 +83,6 @@ static void webkit_uri_request_class_init(WebKitURIRequestClass* requestClass) _("The URI to which the request will be made."), 0, static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); - - g_type_class_add_private(requestClass, sizeof(WebKitURIRequestPrivate)); -} - -static void webkit_uri_request_init(WebKitURIRequest* request) -{ - WebKitURIRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_URI_REQUEST, WebKitURIRequestPrivate); - request->priv = priv; - new (priv) WebKitURIRequestPrivate(); } /** diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp index d4404147b..576ce953a 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp @@ -40,8 +40,6 @@ enum { PROP_SUGGESTED_FILENAME }; -G_DEFINE_TYPE(WebKitURIResponse, webkit_uri_response, G_TYPE_OBJECT) - struct _WebKitURIResponsePrivate { ResourceResponse resourceResponse; CString uri; @@ -49,11 +47,7 @@ struct _WebKitURIResponsePrivate { CString suggestedFilename; }; -static void webkitURIResponseFinalize(GObject* object) -{ - WEBKIT_URI_RESPONSE(object)->priv->~WebKitURIResponsePrivate(); - G_OBJECT_CLASS(webkit_uri_response_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitURIResponse, webkit_uri_response, G_TYPE_OBJECT) static void webkitURIResponseGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -83,8 +77,6 @@ static void webkitURIResponseGetProperty(GObject* object, guint propId, GValue* static void webkit_uri_response_class_init(WebKitURIResponseClass* responseClass) { GObjectClass* objectClass = G_OBJECT_CLASS(responseClass); - - objectClass->finalize = webkitURIResponseFinalize; objectClass->get_property = webkitURIResponseGetProperty; /** @@ -150,15 +142,6 @@ static void webkit_uri_response_class_init(WebKitURIResponseClass* responseClass _("The suggested filename for the URI response"), 0, WEBKIT_PARAM_READABLE)); - - g_type_class_add_private(responseClass, sizeof(WebKitURIResponsePrivate)); -} - -static void webkit_uri_response_init(WebKitURIResponse* response) -{ - WebKitURIResponsePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(response, WEBKIT_TYPE_URI_RESPONSE, WebKitURIResponsePrivate); - response->priv = priv; - new (priv) WebKitURIResponsePrivate(); } /** diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp index e2542e844..f65789fce 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitURISchemeRequest.cpp @@ -35,8 +35,6 @@ using namespace WebKit; static const unsigned int gReadBufferSize = 8192; -G_DEFINE_TYPE(WebKitURISchemeRequest, webkit_uri_scheme_request, G_TYPE_OBJECT) - struct _WebKitURISchemeRequestPrivate { WebKitWebContext* webContext; RefPtr<WebSoupRequestManagerProxy> webRequestManager; @@ -53,24 +51,10 @@ struct _WebKitURISchemeRequestPrivate { CString mimeType; }; -static void webkit_uri_scheme_request_init(WebKitURISchemeRequest* request) -{ - WebKitURISchemeRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_URI_SCHEME_REQUEST, WebKitURISchemeRequestPrivate); - request->priv = priv; - new (priv) WebKitURISchemeRequestPrivate(); -} - -static void webkitURISchemeRequestFinalize(GObject* object) -{ - WEBKIT_URI_SCHEME_REQUEST(object)->priv->~WebKitURISchemeRequestPrivate(); - G_OBJECT_CLASS(webkit_uri_scheme_request_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitURISchemeRequest, webkit_uri_scheme_request, G_TYPE_OBJECT) static void webkit_uri_scheme_request_class_init(WebKitURISchemeRequestClass* requestClass) { - GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); - objectClass->finalize = webkitURISchemeRequestFinalize; - g_type_class_add_private(requestClass, sizeof(WebKitURISchemeRequestPrivate)); } WebKitURISchemeRequest* webkitURISchemeRequestCreate(WebKitWebContext* webContext, WebSoupRequestManagerProxy* webRequestManager, WebURL* webURL, WebPageProxy* initiatingPage, uint64_t requestID) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp index 7707c70ab..3dbcfe88f 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp @@ -114,25 +114,11 @@ struct _WebKitWebContextPrivate { static guint signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE(WebKitWebContext, webkit_web_context, G_TYPE_OBJECT) - -static void webkitWebContextFinalize(GObject* object) -{ - WEBKIT_WEB_CONTEXT(object)->priv->~WebKitWebContextPrivate(); - G_OBJECT_CLASS(webkit_web_context_parent_class)->finalize(object); -} - -static void webkit_web_context_init(WebKitWebContext* webContext) -{ - WebKitWebContextPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webContext, WEBKIT_TYPE_WEB_CONTEXT, WebKitWebContextPrivate); - webContext->priv = priv; - new (priv) WebKitWebContextPrivate(); -} +WEBKIT_DEFINE_TYPE(WebKitWebContext, webkit_web_context, G_TYPE_OBJECT) static void webkit_web_context_class_init(WebKitWebContextClass* webContextClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(webContextClass); - gObjectClass->finalize = webkitWebContextFinalize; /** * WebKitWebContext::download-started: @@ -149,8 +135,6 @@ static void webkit_web_context_class_init(WebKitWebContextClass* webContextClass g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, WEBKIT_TYPE_DOWNLOAD); - - g_type_class_add_private(webContextClass, sizeof(WebKitWebContextPrivate)); } static gpointer createDefaultWebContext(gpointer) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp index b788f1771..378a1f4c0 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebInspector.cpp @@ -47,14 +47,19 @@ enum { }; struct _WebKitWebInspectorPrivate { + ~_WebKitWebInspectorPrivate() + { + WKInspectorSetInspectorClientGtk(toAPI(webInspector.get()), 0); + } + RefPtr<WebInspectorProxy> webInspector; CString inspectedURI; unsigned attachedHeight; }; -static guint signals[LAST_SIGNAL] = { 0, }; +WEBKIT_DEFINE_TYPE(WebKitWebInspector, webkit_web_inspector, G_TYPE_OBJECT) -G_DEFINE_TYPE(WebKitWebInspector, webkit_web_inspector, G_TYPE_OBJECT) +static guint signals[LAST_SIGNAL] = { 0, }; static void webkitWebInspectorGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -72,29 +77,11 @@ static void webkitWebInspectorGetProperty(GObject* object, guint propId, GValue* } } -static void webkitWebInspectorFinalize(GObject* object) -{ - WebKitWebInspectorPrivate* priv = WEBKIT_WEB_INSPECTOR(object)->priv; - WKInspectorSetInspectorClientGtk(toAPI(priv->webInspector.get()), 0); - priv->~WebKitWebInspectorPrivate(); - G_OBJECT_CLASS(webkit_web_inspector_parent_class)->finalize(object); -} - -static void webkit_web_inspector_init(WebKitWebInspector* inspector) -{ - WebKitWebInspectorPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(inspector, WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorPrivate); - inspector->priv = priv; - new (priv) WebKitWebInspectorPrivate(); -} - static void webkit_web_inspector_class_init(WebKitWebInspectorClass* findClass) { GObjectClass* gObjectClass = G_OBJECT_CLASS(findClass); - gObjectClass->finalize = webkitWebInspectorFinalize; gObjectClass->get_property = webkitWebInspectorGetProperty; - g_type_class_add_private(findClass, sizeof(WebKitWebInspectorPrivate)); - /** * WebKitWebInspector:inspected-uri: * diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp index 73736f68f..7a540d353 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp @@ -55,15 +55,9 @@ struct _WebKitWebResourcePrivate { bool isMainResource; }; -static guint signals[LAST_SIGNAL] = { 0, }; - -G_DEFINE_TYPE(WebKitWebResource, webkit_web_resource, G_TYPE_OBJECT) +WEBKIT_DEFINE_TYPE(WebKitWebResource, webkit_web_resource, G_TYPE_OBJECT) -static void webkitWebResourceFinalize(GObject* object) -{ - WEBKIT_WEB_RESOURCE(object)->priv->~WebKitWebResourcePrivate(); - G_OBJECT_CLASS(webkit_web_resource_parent_class)->finalize(object); -} +static guint signals[LAST_SIGNAL] = { 0, }; static void webkitWebResourceGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -81,18 +75,10 @@ static void webkitWebResourceGetProperty(GObject* object, guint propId, GValue* } } -static void webkit_web_resource_init(WebKitWebResource* resource) -{ - WebKitWebResourcePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(resource, WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourcePrivate); - resource->priv = priv; - new (priv) WebKitWebResourcePrivate(); -} - static void webkit_web_resource_class_init(WebKitWebResourceClass* resourceClass) { GObjectClass* objectClass = G_OBJECT_CLASS(resourceClass); objectClass->get_property = webkitWebResourceGetProperty; - objectClass->finalize = webkitWebResourceFinalize; /** * WebKitWebResource:uri: @@ -194,8 +180,6 @@ static void webkit_web_resource_class_init(WebKitWebResourceClass* resourceClass g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - - g_type_class_add_private(resourceClass, sizeof(WebKitWebResourcePrivate)); } static void webkitWebResourceUpdateURI(WebKitWebResource* resource, const CString& requestURI) 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: * diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp index 015f668cd..de741c2e3 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp @@ -80,6 +80,19 @@ void redirectedWindowDamagedCallback(void* data); #endif struct _WebKitWebViewBasePrivate { + _WebKitWebViewBasePrivate() + : imContext(adoptGRef(gtk_im_multicontext_new())) +#if USE(TEXTURE_MAPPER_GL) + , redirectedWindow(RedirectedXCompositeWindow::create(IntSize(1, 1))) +#endif + { + } + + ~_WebKitWebViewBasePrivate() + { + pageProxy->close(); + } + WebKitWebViewChildrenMap children; OwnPtr<PageClientImpl> pageClient; RefPtr<WebPageProxy> pageProxy; @@ -120,7 +133,7 @@ struct _WebKitWebViewBasePrivate { #endif }; -G_DEFINE_TYPE(WebKitWebViewBase, webkit_web_view_base, GTK_TYPE_CONTAINER) +WEBKIT_DEFINE_TYPE(WebKitWebViewBase, webkit_web_view_base, GTK_TYPE_CONTAINER) static void webkitWebViewBaseNotifyResizerSize(WebKitWebViewBase* webViewBase) { @@ -322,42 +335,29 @@ void webkitWebViewBaseChildMoveResize(WebKitWebViewBase* webView, GtkWidget* chi gtk_widget_queue_resize_no_redraw(GTK_WIDGET(webView)); } -static void webkitWebViewBaseFinalize(GObject* gobject) +static void webkitWebViewBaseDispose(GObject* gobject) { - WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(gobject); - WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv; - priv->pageProxy->close(); - - webkitWebViewBaseSetToplevelOnScreenWindow(webkitWebViewBase, 0); - - priv->~WebKitWebViewBasePrivate(); - G_OBJECT_CLASS(webkit_web_view_base_parent_class)->finalize(gobject); + webkitWebViewBaseSetToplevelOnScreenWindow(WEBKIT_WEB_VIEW_BASE(gobject), 0); + G_OBJECT_CLASS(webkit_web_view_base_parent_class)->dispose(gobject); } -static void webkit_web_view_base_init(WebKitWebViewBase* webkitWebViewBase) +static void webkitWebViewBaseConstructed(GObject* object) { - WebKitWebViewBasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webkitWebViewBase, WEBKIT_TYPE_WEB_VIEW_BASE, WebKitWebViewBasePrivate); - webkitWebViewBase->priv = priv; - new (priv) WebKitWebViewBasePrivate(); - - priv->shouldForwardNextKeyEvent = FALSE; + G_OBJECT_CLASS(webkit_web_view_base_parent_class)->constructed(object); - GtkWidget* viewWidget = GTK_WIDGET(webkitWebViewBase); + GtkWidget* viewWidget = GTK_WIDGET(object); gtk_widget_set_can_focus(viewWidget, TRUE); - priv->imContext = adoptGRef(gtk_im_multicontext_new()); - - priv->pageClient = PageClientImpl::create(viewWidget); - - priv->dragAndDropHelper.setWidget(viewWidget); - gtk_drag_dest_set(viewWidget, static_cast<GtkDestDefaults>(0), 0, 0, static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_PRIVATE)); gtk_drag_dest_set_target_list(viewWidget, PasteboardHelper::defaultPasteboardHelper()->targetList()); + WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(object)->priv; + priv->pageClient = PageClientImpl::create(viewWidget); + priv->dragAndDropHelper.setWidget(viewWidget); + #if USE(TEXTURE_MAPPER_GL) - priv->redirectedWindow = RedirectedXCompositeWindow::create(IntSize(1, 1)); if (priv->redirectedWindow) - priv->redirectedWindow->setDamageNotifyCallback(redirectedWindowDamagedCallback, webkitWebViewBase); + priv->redirectedWindow->setDamageNotifyCallback(redirectedWindowDamagedCallback, object); #endif } @@ -767,14 +767,13 @@ static void webkit_web_view_base_class_init(WebKitWebViewBaseClass* webkitWebVie widgetClass->parent_set = webkitWebViewBaseParentSet; GObjectClass* gobjectClass = G_OBJECT_CLASS(webkitWebViewBaseClass); - gobjectClass->finalize = webkitWebViewBaseFinalize; + gobjectClass->constructed = webkitWebViewBaseConstructed; + gobjectClass->dispose = webkitWebViewBaseDispose; GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webkitWebViewBaseClass); containerClass->add = webkitWebViewBaseContainerAdd; containerClass->remove = webkitWebViewBaseContainerRemove; containerClass->forall = webkitWebViewBaseContainerForall; - - g_type_class_add_private(webkitWebViewBaseClass, sizeof(WebKitWebViewBasePrivate)); } WebKitWebViewBase* webkitWebViewBaseCreate(WebContext* context, WebPageGroup* pageGroup) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp index 09a11abe6..7b069dd94 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp @@ -20,20 +20,14 @@ #include "config.h" #include "WebKitWebViewBaseAccessible.h" +#include "WebKitPrivate.h" #include <gtk/gtk.h> struct _WebKitWebViewBaseAccessiblePrivate { GtkWidget* widget; }; -G_DEFINE_TYPE(WebKitWebViewBaseAccessible, webkit_web_view_base_accessible, ATK_TYPE_SOCKET) - -static void webkitWebViewBaseAccessibleFinalize(GObject* gobject) -{ - WebKitWebViewBaseAccessible* accessible = WEBKIT_WEB_VIEW_BASE_ACCESSIBLE(gobject); - accessible->priv->~WebKitWebViewBaseAccessiblePrivate(); - G_OBJECT_CLASS(webkit_web_view_base_accessible_parent_class)->finalize(gobject); -} +WEBKIT_DEFINE_TYPE(WebKitWebViewBaseAccessible, webkit_web_view_base_accessible, ATK_TYPE_SOCKET) static void webkitWebViewBaseAccessibleWidgetDestroyed(GtkWidget* widget, WebKitWebViewBaseAccessible* accessible) { @@ -94,18 +88,8 @@ static gint webkitWebViewBaseAccessibleGetIndexInParent(AtkObject* atkObject) return -1; } -static void webkit_web_view_base_accessible_init(WebKitWebViewBaseAccessible* accessible) -{ - WebKitWebViewBaseAccessiblePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(accessible, WEBKIT_TYPE_WEB_VIEW_BASE_ACCESSIBLE, WebKitWebViewBaseAccessiblePrivate); - accessible->priv = priv; - new (priv) WebKitWebViewBaseAccessiblePrivate(); -} - static void webkit_web_view_base_accessible_class_init(WebKitWebViewBaseAccessibleClass* klass) { - GObjectClass* gObjectClass = G_OBJECT_CLASS(klass); - gObjectClass->finalize = webkitWebViewBaseAccessibleFinalize; - // No need to implement get_n_children() and ref_child() here // since this is a subclass of AtkSocket and all the logic related // to those functions will be implemented by the ATK bridge. @@ -113,8 +97,6 @@ static void webkit_web_view_base_accessible_class_init(WebKitWebViewBaseAccessib atkObjectClass->initialize = webkitWebViewBaseAccessibleInitialize; atkObjectClass->ref_state_set = webkitWebViewBaseAccessibleRefStateSet; atkObjectClass->get_index_in_parent = webkitWebViewBaseAccessibleGetIndexInParent; - - g_type_class_add_private(klass, sizeof(WebKitWebViewBaseAccessiblePrivate)); } WebKitWebViewBaseAccessible* webkitWebViewBaseAccessibleNew(GtkWidget* widget) diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp index 930cf8676..bdfc72589 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp @@ -106,8 +106,6 @@ enum { PROP_FULLSCREEN }; -G_DEFINE_TYPE(WebKitWindowProperties, webkit_window_properties, G_TYPE_OBJECT) - struct _WebKitWindowPropertiesPrivate { GdkRectangle geometry; @@ -121,11 +119,7 @@ struct _WebKitWindowPropertiesPrivate { bool fullscreen : 1; }; -static void webkitWindowPropertiesFinalize(GObject* object) -{ - WEBKIT_WINDOW_PROPERTIES(object)->priv->~WebKitWindowPropertiesPrivate(); - G_OBJECT_CLASS(webkit_window_properties_parent_class)->finalize(object); -} +WEBKIT_DEFINE_TYPE(WebKitWindowProperties, webkit_window_properties, G_TYPE_OBJECT) static void webkitWindowPropertiesGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec) { @@ -199,8 +193,6 @@ static void webkitWindowPropertiesSetProperty(GObject* object, guint propId, con static void webkit_window_properties_class_init(WebKitWindowPropertiesClass* requestClass) { GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); - - objectClass->finalize = webkitWindowPropertiesFinalize; objectClass->get_property = webkitWindowPropertiesGetProperty; objectClass->set_property = webkitWindowPropertiesSetProperty; @@ -308,15 +300,6 @@ static void webkit_window_properties_class_init(WebKitWindowPropertiesClass* req _("Whether window will be displayed fullscreen."), FALSE, paramFlags)); - - g_type_class_add_private(requestClass, sizeof(WebKitWindowPropertiesPrivate)); -} - -static void webkit_window_properties_init(WebKitWindowProperties* request) -{ - WebKitWindowPropertiesPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_WINDOW_PROPERTIES, WebKitWindowPropertiesPrivate); - request->priv = priv; - new (priv) WebKitWindowPropertiesPrivate(); } WebKitWindowProperties* webkitWindowPropertiesCreate() diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp index 29ba92994..305882edd 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp @@ -48,37 +48,12 @@ namespace WebKit { using namespace WebCore; -template<class T> class MainThreadGuardedInvoker { -public: - static void call(PassRefPtr<T> objectToGuard, const Function<void()>& function) - { - MainThreadGuardedInvoker<T>* invoker = new MainThreadGuardedInvoker<T>(objectToGuard, function); - callOnMainThread(invoke, invoker); - } - -private: - MainThreadGuardedInvoker(PassRefPtr<T> object, const Function<void()>& newFunction) - : objectToGuard(object) - , function(newFunction) - { - } - - RefPtr<T> objectToGuard; - Function<void()> function; - static void invoke(void* data) - { - MainThreadGuardedInvoker<T>* invoker = static_cast<MainThreadGuardedInvoker<T>*>(data); - invoker->function(); - delete invoker; - } -}; - void LayerTreeRenderer::dispatchOnMainThread(const Function<void()>& function) { if (isMainThread()) function(); else - MainThreadGuardedInvoker<LayerTreeRenderer>::call(this, function); + callOnMainThread(function); } static FloatPoint boundedScrollPosition(const FloatPoint& scrollPosition, const FloatRect& visibleContentRect, const FloatSize& contentSize) @@ -99,10 +74,10 @@ LayerTreeRenderer::LayerTreeRenderer(LayerTreeCoordinatorProxy* layerTreeCoordin #if ENABLE(REQUEST_ANIMATION_FRAME) , m_animationFrameRequested(false) #endif - , m_accelerationMode(TextureMapper::OpenGLMode) , m_backgroundColor(Color::white) , m_setDrawsBackground(false) { + ASSERT(isMainThread()); } LayerTreeRenderer::~LayerTreeRenderer() @@ -171,6 +146,7 @@ void LayerTreeRenderer::paintToCurrentGLContext(const TransformationMatrix& matr #if ENABLE(REQUEST_ANIMATION_FRAME) void LayerTreeRenderer::animationFrameReady() { + ASSERT(isMainThread()); if (m_layerTreeCoordinatorProxy) m_layerTreeCoordinatorProxy->animationFrameReady(); } @@ -216,6 +192,7 @@ void LayerTreeRenderer::setVisibleContentsRect(const FloatRect& rect) void LayerTreeRenderer::updateViewport() { + ASSERT(isMainThread()); if (m_layerTreeCoordinatorProxy) m_layerTreeCoordinatorProxy->updateViewport(); } @@ -573,6 +550,7 @@ void LayerTreeRenderer::flushLayerChanges() void LayerTreeRenderer::renderNextFrame() { + ASSERT(isMainThread()); if (m_layerTreeCoordinatorProxy) m_layerTreeCoordinatorProxy->renderNextFrame(); } @@ -615,6 +593,7 @@ void LayerTreeRenderer::syncRemoteContent() void LayerTreeRenderer::purgeGLResources() { + ASSERT(isMainThread()); TextureMapperLayer* layer = toTextureMapperLayer(rootLayer()); if (layer) @@ -634,8 +613,8 @@ void LayerTreeRenderer::purgeGLResources() m_backingStoresWithPendingBuffers.clear(); setActive(false); - - dispatchOnMainThread(bind(&LayerTreeRenderer::purgeBackingStores, this)); + if (m_layerTreeCoordinatorProxy) + m_layerTreeCoordinatorProxy->purgeBackingStores(); } void LayerTreeRenderer::setLayerAnimations(WebLayerID id, const GraphicsLayerAnimations& animations) @@ -662,14 +641,9 @@ void LayerTreeRenderer::setAnimationsLocked(bool locked) m_animationsLocked = locked; } -void LayerTreeRenderer::purgeBackingStores() -{ - if (m_layerTreeCoordinatorProxy) - m_layerTreeCoordinatorProxy->purgeBackingStores(); -} - void LayerTreeRenderer::detach() { + ASSERT(isMainThread()); m_layerTreeCoordinatorProxy = 0; } @@ -685,6 +659,7 @@ void LayerTreeRenderer::appendUpdate(const Function<void()>& function) void LayerTreeRenderer::setActive(bool active) { + ASSERT(isMainThread()); if (m_isActive == active) return; diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h index 6c203f2d5..40333cfa1 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h @@ -114,12 +114,6 @@ public: void animationFrameReady(); #endif - void setAccelerationMode(WebCore::TextureMapper::AccelerationMode mode) - { - // The acceleration mode is set only before TextureMapper was created. - ASSERT(!m_textureMapper); - m_accelerationMode = mode; - } private: PassOwnPtr<WebCore::GraphicsLayer> createLayer(WebLayerID); @@ -131,7 +125,8 @@ private: // Reimplementations from WebCore::GraphicsLayerClient. virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double) { } virtual void notifyFlushRequired(const WebCore::GraphicsLayer*) { } - void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&) { } + virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&) OVERRIDE { } + void updateViewport(); void dispatchOnMainThread(const Function<void()>&); void adjustPositionForFixedLayers(); @@ -142,7 +137,6 @@ private: void ensureLayer(WebLayerID); void commitTileOperations(); void renderNextFrame(); - void purgeBackingStores(); PassRefPtr<CoordinatedBackingStore> getBackingStore(WebCore::GraphicsLayer*); void removeBackingStoreIfNeeded(WebCore::GraphicsLayer*); @@ -182,7 +176,6 @@ private: #if ENABLE(REQUEST_ANIMATION_FRAME) bool m_animationFrameRequested; #endif - WebCore::TextureMapper::AccelerationMode m_accelerationMode; WebCore::Color m_backgroundColor; bool m_setDrawsBackground; diff --git a/Source/WebKit2/UIProcess/Launcher/efl/ProcessLauncherEfl.cpp b/Source/WebKit2/UIProcess/Launcher/efl/ProcessLauncherEfl.cpp index 23d213545..83bb3ba49 100644 --- a/Source/WebKit2/UIProcess/Launcher/efl/ProcessLauncherEfl.cpp +++ b/Source/WebKit2/UIProcess/Launcher/efl/ProcessLauncherEfl.cpp @@ -49,9 +49,11 @@ void ProcessLauncher::launchProcess() case WebProcess: executablePath = executablePathOfWebProcess(); break; +#if ENABLE(PLUGIN_PROCESS) case PluginProcess: executablePath = executablePathOfPluginProcess(); break; +#endif default: ASSERT_NOT_REACHED(); return; diff --git a/Source/WebKit2/UIProcess/PageViewportController.cpp b/Source/WebKit2/UIProcess/PageViewportController.cpp index 35f361cad..5de791920 100644 --- a/Source/WebKit2/UIProcess/PageViewportController.cpp +++ b/Source/WebKit2/UIProcess/PageViewportController.cpp @@ -219,8 +219,7 @@ void PageViewportController::didChangeViewportAttributes(const WebCore::Viewport m_rawAttributes = newAttributes; m_allowsUserScaling = !!m_rawAttributes.userScalable; - if (!updateMinimumScaleToFit()) - return; + bool minimumScaleUpdated = updateMinimumScaleToFit(); ASSERT(m_minimumScaleToFit > 0); @@ -230,7 +229,8 @@ void PageViewportController::didChangeViewportAttributes(const WebCore::Viewport WebCore::restrictScaleFactorToInitialScaleIfNotUserScalable(m_rawAttributes); - m_client->didChangeViewportAttributes(); + if (minimumScaleUpdated) + m_client->didChangeViewportAttributes(); } WebCore::FloatSize PageViewportController::viewportSizeInContentsCoordinates() const diff --git a/Source/WebKit2/UIProcess/efl/PageClientBase.cpp b/Source/WebKit2/UIProcess/efl/PageClientBase.cpp index 0ce82aae4..b3d511b2e 100644 --- a/Source/WebKit2/UIProcess/efl/PageClientBase.cpp +++ b/Source/WebKit2/UIProcess/efl/PageClientBase.cpp @@ -70,10 +70,6 @@ EwkViewImpl* PageClientBase::viewImpl() const PassOwnPtr<DrawingAreaProxy> PageClientBase::createDrawingAreaProxy() { OwnPtr<DrawingAreaProxy> drawingArea = DrawingAreaProxyImpl::create(m_viewImpl->page()); -#if USE(ACCELERATED_COMPOSITING) - if (!m_viewImpl->isHardwareAccelerated()) - drawingArea->layerTreeCoordinatorProxy()->layerTreeRenderer()->setAccelerationMode(TextureMapper::SoftwareMode); -#endif return drawingArea.release(); } diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp index 95273a704..e7d5611f0 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp @@ -77,6 +77,11 @@ void WKBundleActivateMacFontAscentHack(WKBundleRef bundleRef) toImpl(bundleRef)->activateMacFontAscentHack(); } +void WKBundleSetCacheModel(WKBundleRef bundleRef, uint32_t cacheModel) +{ + toImpl(bundleRef)->setCacheModel(cacheModel); +} + void WKBundleGarbageCollectJavaScriptObjects(WKBundleRef bundleRef) { toImpl(bundleRef)->garbageCollectJavaScriptObjects(); diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp index 53ddf6107..005811ac0 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp @@ -30,13 +30,19 @@ #include "InjectedBundleBackForwardList.h" #include "InjectedBundleNodeHandle.h" #include "WKAPICast.h" +#include "WKArray.h" #include "WKBundleAPICast.h" +#include "WKRetainPtr.h" +#include "WKString.h" +#include "WebContextMenu.h" +#include "WebContextMenuItem.h" #include "WebFrame.h" #include "WebFullScreenManager.h" #include "WebImage.h" #include "WebPage.h" #include "WebRenderLayer.h" #include "WebRenderObject.h" +#include "WebString.h" #include "WebURL.h" #include "WebURLRequest.h" @@ -145,6 +151,22 @@ WKBundleFrameRef WKBundlePageGetMainFrame(WKBundlePageRef pageRef) return toAPI(toImpl(pageRef)->mainWebFrame()); } +WKArrayRef WKBundlePageCopyContextMenuItemTitles(WKBundlePageRef pageRef) +{ +#if ENABLE(CONTEXT_MENUS) + WebContextMenu* contextMenu = toImpl(pageRef)->contextMenu(); + const Vector<WebContextMenuItemData> &items = contextMenu->items(); + size_t arrayLength = items.size(); + OwnArrayPtr<WKTypeRef> itemNames = adoptArrayPtr(new WKTypeRef[arrayLength]); + for (size_t i = 0; i < arrayLength; ++i) + itemNames[i] = WKStringCreateWithUTF8CString(items[i].title().utf8().data()); + + return WKArrayCreateAdoptingValues(itemNames.get(), arrayLength); +#else + return 0; +#endif +} + void* WKAccessibilityRootObject(WKBundlePageRef pageRef) { #if HAVE(ACCESSIBILITY) diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h index 11b20dc93..d769fb4c1 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h @@ -77,6 +77,8 @@ WK_EXPORT bool WKBundlePageCanShowMIMEType(WKBundlePageRef, WKStringRef mimeType WK_EXPORT void* WKAccessibilityRootObject(WKBundlePageRef); WK_EXPORT void* WKAccessibilityFocusedObject(WKBundlePageRef); +WK_EXPORT WKArrayRef WKBundlePageCopyContextMenuItemTitles(WKBundlePageRef); + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h index 15b2e7c85..2cacb5976 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePrivate.h @@ -41,6 +41,7 @@ WK_EXPORT void WKBundleSetShouldTrackVisitedLinks(WKBundleRef bundle, bool shoul WK_EXPORT void WKBundleSetAlwaysAcceptCookies(WKBundleRef bundle, bool); WK_EXPORT void WKBundleRemoveAllVisitedLinks(WKBundleRef bundle); WK_EXPORT void WKBundleActivateMacFontAscentHack(WKBundleRef bundle); +WK_EXPORT void WKBundleSetCacheModel(WKBundleRef bundle, uint32_t cacheModel); // Will make WebProcess ignore this preference until a preferences change notification, only for WebKitTestRunner use. WK_EXPORT void WKBundleOverrideBoolPreferenceForTestRunner(WKBundleRef bundle, WKBundlePageGroupRef pageGroup, WKStringRef preference, bool enabled); WK_EXPORT void WKBundleSetAllowUniversalAccessFromFileURLs(WKBundleRef bundle, WKBundlePageGroupRef pageGroup, bool enabled); diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp index 317911a9d..1b2c83099 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp @@ -141,6 +141,11 @@ void InjectedBundle::removeAllVisitedLinks() PageGroup::removeAllVisitedLinks(); } +void InjectedBundle::setCacheModel(uint32_t cacheModel) +{ + WebProcess::shared().setCacheModel(cacheModel); +} + void InjectedBundle::overrideBoolPreferenceForTestRunner(WebPageGroupProxy* pageGroup, const String& preference, bool enabled) { const HashSet<Page*>& pages = PageGroup::pageGroup(pageGroup->identifier())->pages(); diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h index c621f2483..fd716d3d3 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h @@ -107,6 +107,7 @@ public: void setShouldTrackVisitedLinks(bool); void setAlwaysAcceptCookies(bool); void removeAllVisitedLinks(); + void setCacheModel(uint32_t); void activateMacFontAscentHack(); void overrideBoolPreferenceForTestRunner(WebPageGroupProxy*, const String& preference, bool enabled); void overrideXSSAuditorEnabledForTestRunner(WebPageGroupProxy* pageGroup, bool enabled); diff --git a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp index c167d3abb..e5639cf79 100644 --- a/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp +++ b/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp @@ -748,7 +748,7 @@ void CoordinatedGraphicsLayer::removeTile(int tileID) void CoordinatedGraphicsLayer::updateContentBuffers() { - if (!drawsContent()) { + if (!drawsContent() || !contentsAreVisible() || m_size.isEmpty()) { m_mainBackingStore.clear(); m_previousBackingStore.clear(); return; diff --git a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp index 3273bdc09..d21af0301 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp @@ -66,6 +66,32 @@ void WebContextMenu::show() if (!view) return; + Vector<WebContextMenuItemData> menuItems; + RefPtr<APIObject> userData; + menuItemsWithUserData(menuItems, userData); + WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); + + // Mark the WebPage has having a shown context menu then notify the UIProcess. + m_page->contextMenuShowing(); + m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get()))); +} + +void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +{ + ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title()); + m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); +} + +void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<APIObject>& userData) const +{ + ContextMenuController* controller = m_page->corePage()->contextMenuController(); + if (!controller) + return; + + ContextMenu* menu = controller->contextMenu(); + if (!menu) + return; + // Give the bundle client a chance to process the menu. #if USE(CROSS_PLATFORM_CONTEXT_MENUS) const Vector<ContextMenuItem>& coreItems = menu->items(); @@ -74,22 +100,18 @@ void WebContextMenu::show() #endif Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu); Vector<WebContextMenuItemData> newMenu; - RefPtr<APIObject> userData; RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult()); if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData)) proposedMenu = newMenu; - - WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); - - // Mark the WebPage has having a shown context menu then notify the UIProcess. - m_page->contextMenuShowing(); - m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, proposedMenu, InjectedBundleUserMessageEncoder(userData.get()))); + menuItems = proposedMenu; } -void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +Vector<WebContextMenuItemData> WebContextMenu::items() const { - ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title()); - m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); + Vector<WebContextMenuItemData> menuItems; + RefPtr<APIObject> userData; + menuItemsWithUserData(menuItems, userData); + return menuItems; } } // namespace WebKit diff --git a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h index c8a5f5a46..b4fa66ee3 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h +++ b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.h @@ -43,10 +43,12 @@ public: void show(); void itemSelected(const WebContextMenuItemData&); + Vector<WebContextMenuItemData> items() const; private: WebContextMenu(WebPage*); - + void menuItemsWithUserData(Vector<WebContextMenuItemData>&, RefPtr<APIObject>&) const; + WebPage* m_page; }; diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h index eddccc153..82e6cc8f2 100644 --- a/Source/WebKit2/WebProcess/WebProcess.h +++ b/Source/WebKit2/WebProcess/WebProcess.h @@ -208,6 +208,8 @@ public: WebResourceLoadScheduler& webResourceLoadScheduler() { return m_webResourceLoadScheduler; } #endif + void setCacheModel(uint32_t); + private: WebProcess(); @@ -234,7 +236,6 @@ private: void visitedLinkStateChanged(const Vector<WebCore::LinkHash>& linkHashes); void allVisitedLinkStateChanged(); - void setCacheModel(uint32_t); void platformSetCacheModel(CacheModel); static void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t diskFreeSize, unsigned& cacheTotalCapacity, unsigned& cacheMinDeadCapacity, unsigned& cacheMaxDeadCapacity, double& deadDecodedDataDeletionInterval, diff --git a/Source/WebKit2/qt/MainQt.cpp b/Source/WebKit2/qt/MainQt.cpp index 1e1ce2b3d..17ad8537d 100644 --- a/Source/WebKit2/qt/MainQt.cpp +++ b/Source/WebKit2/qt/MainQt.cpp @@ -42,8 +42,8 @@ typedef QApplication ApplicationType; namespace WebKit { Q_DECL_IMPORT int WebProcessMainQt(QGuiApplication*); -#if defined(HAVE_WEBKIT1) -Q_DECL_IMPORT void initializeWebKit2Theme(); +#if !defined(QT_NO_WIDGETS) +Q_DECL_IMPORT void initializeWebKitWidgets(); #endif } @@ -82,15 +82,20 @@ int main(int argc, char** argv) } #endif -#if defined(HAVE_WEBKIT1) - WebKit::initializeWebKit2Theme(); -#endif - // Has to be done before QApplication is constructed in case // QApplication itself produces debug output. QByteArray suppressOutput = qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT"); if (!suppressOutput.isEmpty() && suppressOutput != "0") qInstallMessageHandler(messageHandler); - return WebKit::WebProcessMainQt(new ApplicationType(argc, argv)); + // QApplication must be created before we call initializeWebKitWidgets() so that + // the standard pixmaps can be fetched from the style. + ApplicationType* appInstance = new ApplicationType(argc, argv); + +#if !defined(QT_NO_WIDGETS) + if (qgetenv("QT_WEBKIT_THEME_NAME") == "qstyle") + WebKit::initializeWebKitWidgets(); +#endif + + return WebKit::WebProcessMainQt(appInstance); } |