https://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/56507/steps/compile-webkit/logs/stdio ../../Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h:86:41: error: invalid covariant return type for ‘virtual WTF::RefPtr<WebKit::WebContextMenuProxy> WebKit::PageClientImpl::createContextMenuProxy(WebKit::WebPageProxy&, const WebKit::ContextMenuContextData&, const WebKit::UserData&)’ virtual RefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override; ^ In file included from ../../Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h:33:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:39: ../../Source/WebKit2/UIProcess/PageClient.h:227:50: error: overriding ‘virtual std::unique_ptr<WebKit::WebContextMenuProxy> WebKit::PageClient::createContextMenuProxy(WebKit::WebPageProxy&, const WebKit::ContextMenuContextData&, const WebKit::UserData&)’ virtual std::unique_ptr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) = 0; ^ In file included from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:48: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:50:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::showContextMenu()’ marked override, but does not override virtual void showContextMenu() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:51:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::hideContextMenu()’ marked override, but does not override virtual void hideContextMenu() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:52:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::cancelTracking()’ marked override, but does not override virtual void cancelTracking() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h: In static member function ‘static WTF::Ref<WebKit::WebContextMenuProxyGtk> WebKit::WebContextMenuProxyGtk::create(GtkWidget*, WebKit::WebPageProxy&, const WebKit::ContextMenuContextData&, const WebKit::UserData&)’: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:46:85: error: invalid new-expression of abstract class type ‘WebKit::WebContextMenuProxyGtk’ return adoptRef(*new WebContextMenuProxyGtk(webView, page, context, userData)); ^ In file included from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:48: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:42:7: note: because the following virtual functions are pure within ‘WebKit::WebContextMenuProxyGtk’: class WebContextMenuProxyGtk : public WebContextMenuProxy { ^ In file included from ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:31:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:48: ../../Source/WebKit2/UIProcess/WebContextMenuProxy.h:43:18: note: virtual void WebKit::WebContextMenuProxy::show() virtual void show() = 0; ^ FAILED: /usr/lib/ccache/c++ -DBUILDING_GTK__=1 -DBUILDING_WEBKIT -DBUILDING_WITH_CMAKE=1 -DDATADIR=\"/usr/local/share\" -DDATA_DIR=\"share\" -DENABLE_DATABASE_PROCESS=1 -DENABLE_PLUGIN_PROCESS=1 -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DLIBDIR=\"/usr/local/lib\" -DLIBEXECDIR=\"/usr/local/libexec\" -DLOCALEDIR=\"/usr/local/share/locale\" -DPKGLIBEXECDIR=\"/usr/local/libexec/webkit2gtk-4.0\" -DUSER_AGENT_GTK_MAJOR_VERSION=602 -DUSER_AGENT_GTK_MINOR_VERSION=1 -DWEBKIT2_COMPILATION -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -DWebKit2_EXPORTS -march=pentium4 -msse2 -mfpmath=sse -std=c++11 -O3 -DNDEBUG -fno-exceptions -fno-strict-aliasing -fno-rtti -fPIC -I../../Source/WebKit2/Platform -I../../Source/WebKit2/Shared -I../../Source/WebKit2/Shared/API/c -I../../Source/WebKit2/UIProcess/API/C -I../../Source/WebKit2/WebProcess/InjectedBundle -I../../Source/WebKit2/WebProcess/InjectedBundle/API/c -IDerivedSources -IDerivedSources/InjectedBundle -IDerivedSources/webkitdom -IDerivedSources/ForwardingHeaders -IDerivedSources/ForwardingHeaders/webkit2gtk -IDerivedSources/ForwardingHeaders/webkit2gtk-webextension -IDerivedSources/webkit2gtk/webkit2 -IDerivedSources/webkit2gtk -I../../Source/JavaScriptCore/llint -I../../Source/WebKit2 -I../../Source/WebKit2/DatabaseProcess -I../../Source/WebKit2/DatabaseProcess/IndexedDB -I../../Source/WebKit2/DatabaseProcess/IndexedDB/sqlite -I../../Source/WebKit2/NetworkProcess -I../../Source/WebKit2/NetworkProcess/FileAPI -I../../Source/WebKit2/NetworkProcess/cache -I../../Source/WebKit2/Platform/IPC -I../../Source/WebKit2/PluginProcess -I../../Source/WebKit2/Shared/API -I../../Source/WebKit2/Shared/Authentication -I../../Source/WebKit2/Shared/CoreIPCSupport -I../../Source/WebKit2/Shared/Databases -I../../Source/WebKit2/Shared/Databases/IndexedDB -I../../Source/WebKit2/Shared/Downloads -I../../Source/WebKit2/Shared/FileAPI -I../../Source/WebKit2/Shared/Network -I../../Source/WebKit2/Shared/Network/CustomProtocols -I../../Source/WebKit2/Shared/Plugins -I../../Source/WebKit2/Shared/Plugins/Netscape -I../../Source/WebKit2/Shared/Plugins/Netscape/x11 -I../../Source/WebKit2/Shared/WebsiteData -I../../Source/WebKit2/UIProcess -I../../Source/WebKit2/UIProcess/API -I../../Source/WebKit2/UIProcess/API/cpp -I../../Source/WebKit2/UIProcess/Authentication -I../../Source/WebKit2/UIProcess/Databases -I../../Source/WebKit2/UIProcess/Downloads -I../../Source/WebKit2/UIProcess/InspectorServer -I../../Source/WebKit2/UIProcess/Launcher -I../../Source/WebKit2/UIProcess/Network -I../../Source/WebKit2/UIProcess/Network/CustomProtocols -I../../Source/WebKit2/UIProcess/Notifications -I../../Source/WebKit2/UIProcess/Plugins -I../../Source/WebKit2/UIProcess/Storage -I../../Source/WebKit2/UIProcess/UserContent -I../../Source/WebKit2/UIProcess/WebsiteData -I../../Source/WebKit2/WebProcess -I../../Source/WebKit2/WebProcess/ApplicationCache -I../../Source/WebKit2/WebProcess/Battery -I../../Source/WebKit2/WebProcess/Cookies -I../../Source/WebKit2/WebProcess/Databases -I../../Source/WebKit2/WebProcess/Databases/IndexedDB -I../../Source/WebKit2/WebProcess/FileAPI -I../../Source/WebKit2/WebProcess/FullScreen -I../../Source/WebKit2/WebProcess/Geolocation -I../../Source/WebKit2/WebProcess/IconDatabase -I../../Source/WebKit2/WebProcess/InjectedBundle/API -I../../Source/WebKit2/WebProcess/InjectedBundle/DOM -I../../Source/WebKit2/WebProcess/Launching -I../../Source/WebKit2/WebProcess/MediaCache -I../../Source/WebKit2/WebProcess/MediaStream -I../../Source/WebKit2/WebProcess/Network -I../../Source/WebKit2/WebProcess/Notifications -I../../Source/WebKit2/WebProcess/OriginData -I../../Source/WebKit2/WebProcess/Plugins -I../../Source/WebKit2/WebProcess/Plugins/Netscape -I../../Source/WebKit2/WebProcess/ResourceCache -I../../Source/WebKit2/WebProcess/Storage -I../../Source/WebKit2/WebProcess/UserContent -I../../Source/WebKit2/WebProcess/WebCoreSupport -I../../Source/WebKit2/WebProcess/WebPage -I../../Source/WebCore -I../../Source/WebCore/Modules/battery -I../../Source/WebCore/Modules/indexeddb -I../../Source/WebCore/Modules/indexeddb/legacy -I../../Source/WebCore/Modules/mediastream -I../../Source/WebCore/Modules/networkinfo -I../../Source/WebCore/Modules/notifications -I../../Source/WebCore/Modules/streams -I../../Source/WebCore/Modules/vibration -I../../Source/WebCore/Modules/webdatabase -I../../Source/WebCore/accessibility -I../../Source/WebCore/bindings/js -I../../Source/WebCore/bindings -I../../Source/WebCore/bridge -I../../Source/WebCore/bridge/jsc -I../../Source/WebCore/contentextensions -I../../Source/WebCore/css -I../../Source/WebCore/dom -I../../Source/WebCore/dom/default -I../../Source/WebCore/editing -I../../Source/WebCore/fileapi -I../../Source/WebCore/history -I../../Source/WebCore/html -I../../Source/WebCore/html/shadow -I../../Source/WebCore/html/track -I../../Source/WebCore/inspector -I../../Source/WebCore/loader -I../../Source/WebCore/loader/archive -I../../Source/WebCore/loader/icon -I../../Source/WebCore/loader/cache -I../../Source/WebCore/page -I../../Source/WebCore/page/animation -I../../Source/WebCore/page/scrolling -I../../Source/WebCore/platform -I../../Source/WebCore/platform/animation -I../../Source/WebCore/platform/audio -I../../Source/WebCore/platform/graphics -I../../Source/WebCore/platform/graphics/filters -I../../Source/WebCore/platform/graphics/harfbuzz -I../../Source/WebCore/platform/graphics/harfbuzz/ng -I../../Source/WebCore/platform/graphics/surfaces -I../../Source/WebCore/platform/graphics/texmap -I../../Source/WebCore/platform/graphics/transforms -I../../Source/WebCore/platform/mediastream -I../../Source/WebCore/platform/network -I../../Source/WebCore/platform/sql -I../../Source/WebCore/platform/text -I../../Source/WebCore/plugins -I../../Source/WebCore/rendering -I../../Source/WebCore/rendering/line -I../../Source/WebCore/rendering/shapes -I../../Source/WebCore/rendering/style -I../../Source/WebCore/storage -I../../Source/WebCore/style -I../../Source/WebCore/svg -I../../Source/WebCore/svg/graphics -I../../Source/WebCore/svg/properties -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/ForwardingHeaders -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/collector/handles -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/WTF -IDerivedSources/JavaScriptCore -IDerivedSources/WebCore -IDerivedSources/WebKit2 -IDerivedSources/WebKit2/include -I. -I../../Source -I../../Source/ThirdParty/ANGLE -I../../Source/ThirdParty/ANGLE/include/KHR -I../../Source/WebKit2/PluginProcess/unix -I../../Source/WebCore/platform/cairo -I../../Source/WebCore/platform/gtk -I../../Source/WebCore/platform/graphics/cairo -I../../Source/WebCore/platform/graphics/opentype -I../../Source/WebCore/platform/graphics/x11 -I../../Source/WebCore/platform/network/soup -I../../Source/WebCore/platform/text/enchant -I../../Source/WebKit2/DatabaseProcess/unix -I../../Source/WebKit2/NetworkProcess/gtk -I../../Source/WebKit2/NetworkProcess/unix -I../../Source/WebKit2/Shared/API/c/gtk -I../../Source/WebKit2/Shared/Network/CustomProtocols/soup -I../../Source/WebKit2/Shared/Downloads/soup -I../../Source/WebKit2/Shared/Plugins/unix -I../../Source/WebKit2/Shared/glib -I../../Source/WebKit2/Shared/gtk -I../../Source/WebKit2/Shared/linux -I../../Source/WebKit2/Shared/linux/SeccompFilters -I../../Source/WebKit2/Shared/soup -I../../Source/WebKit2/Shared/unix -I../../Source/WebKit2/UIProcess/API/C/cairo -I../../Source/WebKit2/UIProcess/API/C/gtk -I../../Source/WebKit2/UIProcess/API/C/soup -I../../Source/WebKit2/UIProcess/API/cpp/gtk -I../../Source/WebKit2/UIProcess/API/gtk -I../../Source/WebKit2/UIProcess/Network/CustomProtocols/soup -I../../Source/WebKit2/UIProcess/Plugins/gtk -I../../Source/WebKit2/UIProcess/gstreamer -I../../Source/WebKit2/UIProcess/gtk -I../../Source/WebKit2/UIProcess/soup -I../../Source/WebKit2/WebProcess/InjectedBundle/API/gtk -I../../Source/WebKit2/WebProcess/gtk -I../../Source/WebKit2/WebProcess/soup -I../../Source/WebKit2/WebProcess/unix -I../../Source/WebKit2/WebProcess/WebCoreSupport/gtk -I../../Source/WebKit2/WebProcess/WebCoreSupport/soup -I../../Source/WebKit2/WebProcess/WebPage/atk -I../../Source/WebKit2/WebProcess/WebPage/gtk -I../../Source/WTF/wtf/gtk -I../../Source/WTF/wtf/glib -isystem ../DependenciesGTK/Root/include/cairo -isystem /usr/include/enchant -isystem ../DependenciesGTK/Root/include/glib-2.0 -isystem ../DependenciesGTK/Root/lib/glib-2.0/include -isystem ../DependenciesGTK/Root/include/libxml2 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/i386-linux-gnu/dbus-1.0/include -isystem ../DependenciesGTK/Root/include/gstreamer-1.0 -isystem ../DependenciesGTK/Root/include/harfbuzz -isystem ../DependenciesGTK/Root/include/libsoup-2.4 -isystem ../DependenciesGTK/Root/include/gdk-pixbuf-2.0 -isystem /usr/include/libpng12 -isystem ../DependenciesGTK/Root/include/gtk-3.0 -isystem ../DependenciesGTK/Root/include/at-spi2-atk/2.0 -isystem ../DependenciesGTK/Root/include/gio-unix-2.0 -isystem ../DependenciesGTK/Root/include/pango-1.0 -isystem ../DependenciesGTK/Root/include/atk-1.0 -isystem ../DependenciesGTK/Root/include/pixman-1 -isystem ../DependenciesGTK/Root/include/freetype2 -isystem /usr/include/libdrm -isystem ../DependenciesGTK/Root/include/gtk-3.0/unix-print -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings -include /var/lib/buildbot/webkit32/gtk-linux-32-release/build/Source/WebKit2/WebKit2Prefix.h -Wno-unused-parameter -MMD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitWebContext.cpp.o -MF Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitWebContext.cpp.o.d -o Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitWebContext.cpp.o -c ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp In file included from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:49: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:50:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::showContextMenu()’ marked override, but does not override virtual void showContextMenu() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:51:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::hideContextMenu()’ marked override, but does not override virtual void hideContextMenu() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:52:18: error: ‘virtual void WebKit::WebContextMenuProxyGtk::cancelTracking()’ marked override, but does not override virtual void cancelTracking() override; ^ ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h: In static member function ‘static WTF::Ref<WebKit::WebContextMenuProxyGtk> WebKit::WebContextMenuProxyGtk::create(GtkWidget*, WebKit::WebPageProxy&, const WebKit::ContextMenuContextData&, const WebKit::UserData&)’: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:46:85: error: invalid new-expression of abstract class type ‘WebKit::WebContextMenuProxyGtk’ return adoptRef(*new WebContextMenuProxyGtk(webView, page, context, userData)); ^ In file included from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:49: ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:42:7: note: because the following virtual functions are pure within ‘WebKit::WebContextMenuProxyGtk’: class WebContextMenuProxyGtk : public WebContextMenuProxy { ^ In file included from ../../Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h:31:0, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:34, from ../../Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:49: ../../Source/WebKit2/UIProcess/WebContextMenuProxy.h:43:18: note: virtual void WebKit::WebContextMenuProxy::show() virtual void show() = 0;
Created attachment 263791 [details] Patch
Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API
Comment on attachment 263791 [details] Patch Thanks for the patch. I don't think this is enough, though. Now, the destructor should do the dismiss and cancel tracking, so instead of removing the code, it should be moved to the destructor I think. Maybe we don't need to track the signal handlers anymore, but I think we should at least we need to popdown the menu and call webkitWebViewBaseSetActiveContextMenuProxy with nullptr.
Created attachment 263799 [details] Patch
(In reply to comment #3) > Comment on attachment 263791 [details] > Patch > > Thanks for the patch. I don't think this is enough, though. Now, the > destructor should do the dismiss and cancel tracking, so instead of removing > the code, it should be moved to the destructor I think. Maybe we don't need > to track the signal handlers anymore, but I think we should at least we need > to popdown the menu and call webkitWebViewBaseSetActiveContextMenuProxy with > nullptr. Oh I see. I add the codes to call the popdown and webkitWebViewBaseSetActiveContextMenuProxy at destructor.
Comment on attachment 263799 [details] Patch Thanks! I think we should also disconnect the signals, because the user can have a reference to the actions.
Created attachment 263804 [details] Patch
(In reply to comment #6) > Comment on attachment 263799 [details] > Patch > > Thanks! I think we should also disconnect the signals, because the user can > have a reference to the actions. I moved the cancelTrakcing()s' functions to destructor. But I got another problem after applying this patch. I got a segment fault with this patch when reopen the contextMenu in MiniBrowser. If I removed the webkitWebViewBaseSetActiveContextMenuProxy in destructor, then it works correctly.
(In reply to comment #8) > (In reply to comment #6) > > Comment on attachment 263799 [details] > > Patch > > > > Thanks! I think we should also disconnect the signals, because the user can > > have a reference to the actions. > > I moved the cancelTrakcing()s' functions to destructor. > But I got another problem after applying this patch. > > I got a segment fault with this patch when reopen the contextMenu in > MiniBrowser. > > If I removed the webkitWebViewBaseSetActiveContextMenuProxy in destructor, > then it works correctly. hmm, I think this is because the web page proxy doesn't destroy the active context menu, so the previous one is reused. I think we need to rework this to create/destroy the GtkMenu in show(). Feel free to land the build fix, so that bots can work again, and I'll fix the remaining issues if you want
(In reply to comment #9) > (In reply to comment #8) > > (In reply to comment #6) > > > Comment on attachment 263799 [details] > > > Patch > > > > > > Thanks! I think we should also disconnect the signals, because the user can > > > have a reference to the actions. > > > > I moved the cancelTrakcing()s' functions to destructor. > > But I got another problem after applying this patch. > > > > I got a segment fault with this patch when reopen the contextMenu in > > MiniBrowser. > > > > If I removed the webkitWebViewBaseSetActiveContextMenuProxy in destructor, > > then it works correctly. > > hmm, I think this is because the web page proxy doesn't destroy the active > context menu, so the previous one is reused. I think we need to rework this > to create/destroy the GtkMenu in show(). Feel free to land the build fix, so > that bots can work again, and I'll fix the remaining issues if you want Okay, Thanks.
(In reply to comment #10) > (In reply to comment #9) > > (In reply to comment #8) > > > (In reply to comment #6) > > > > Comment on attachment 263799 [details] > > > > Patch > > > > > > > > Thanks! I think we should also disconnect the signals, because the user can > > > > have a reference to the actions. > > > > > > I moved the cancelTrakcing()s' functions to destructor. > > > But I got another problem after applying this patch. > > > > > > I got a segment fault with this patch when reopen the contextMenu in > > > MiniBrowser. > > > > > > If I removed the webkitWebViewBaseSetActiveContextMenuProxy in destructor, > > > then it works correctly. > > > > hmm, I think this is because the web page proxy doesn't destroy the active > > context menu, so the previous one is reused. I think we need to rework this > > to create/destroy the GtkMenu in show(). Feel free to land the build fix, so > > that bots can work again, and I'll fix the remaining issues if you want > > Okay, Thanks. Could you give me the r+ again?
Comment on attachment 263804 [details] Patch I'll land this asap
Committed r191447: <http://trac.webkit.org/changeset/191447>