Title: [188031] trunk/Source/WebKit2
- Revision
- 188031
- Author
- carlo...@webkit.org
- Date
- 2015-08-06 01:14:20 -0700 (Thu, 06 Aug 2015)
Log Message
[GTK] Crash closing a page when a context menu is open
https://bugs.webkit.org/show_bug.cgi?id=147682
Reviewed by Sergio Villar Senin.
Implement WebContextMenuProxy::cancelTracking() to clear the
internal menu when the web page is closed.
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::cancelTracking):
(WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Deleted.
* UIProcess/gtk/WebContextMenuProxyGtk.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (188030 => 188031)
--- trunk/Source/WebKit2/ChangeLog 2015-08-06 07:13:55 UTC (rev 188030)
+++ trunk/Source/WebKit2/ChangeLog 2015-08-06 08:14:20 UTC (rev 188031)
@@ -1,3 +1,18 @@
+2015-08-06 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Crash closing a page when a context menu is open
+ https://bugs.webkit.org/show_bug.cgi?id=147682
+
+ Reviewed by Sergio Villar Senin.
+
+ Implement WebContextMenuProxy::cancelTracking() to clear the
+ internal menu when the web page is closed.
+
+ * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
+ (WebKit::WebContextMenuProxyGtk::cancelTracking):
+ (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Deleted.
+ * UIProcess/gtk/WebContextMenuProxyGtk.h:
+
2015-08-04 Matt Rajca <mra...@apple.com>
Media Session: push paused state to the media session focus manager instead of polling
Modified: trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp (188030 => 188031)
--- trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2015-08-06 07:13:55 UTC (rev 188030)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2015-08-06 08:14:20 UTC (rev 188031)
@@ -171,10 +171,7 @@
WebContextMenuProxyGtk::~WebContextMenuProxyGtk()
{
- for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
- g_signal_handler_disconnect(iter->value, iter->key);
-
- webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), 0);
+ cancelTracking();
}
void WebContextMenuProxyGtk::menuPositionFunction(GtkMenu* menu, gint* x, gint* y, gboolean* pushIn, WebContextMenuProxyGtk* popupMenu)
@@ -194,5 +191,15 @@
*pushIn = FALSE;
}
+void WebContextMenuProxyGtk::cancelTracking()
+{
+ for (auto iter = m_signalHandlers.begin(); iter != m_signalHandlers.end(); ++iter)
+ g_signal_handler_disconnect(iter->value, iter->key);
+ m_signalHandlers.clear();
+
+ webkitWebViewBaseSetActiveContextMenuProxy(WEBKIT_WEB_VIEW_BASE(m_webView), nullptr);
+ m_menu.setPlatformDescription(nullptr);
+}
+
} // namespace WebKit
#endif // ENABLE(CONTEXT_MENUS)
Modified: trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h (188030 => 188031)
--- trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h 2015-08-06 07:13:55 UTC (rev 188030)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebContextMenuProxyGtk.h 2015-08-06 08:14:20 UTC (rev 188031)
@@ -47,8 +47,9 @@
}
~WebContextMenuProxyGtk();
- virtual void showContextMenu(const WebCore::IntPoint&, const Vector<RefPtr<WebContextMenuItem>>&, const ContextMenuContextData&);
- virtual void hideContextMenu();
+ virtual void showContextMenu(const WebCore::IntPoint&, const Vector<RefPtr<WebContextMenuItem>>&, const ContextMenuContextData&) override;
+ virtual void hideContextMenu() override;
+ virtual void cancelTracking() override;
void populate(Vector<WebCore::ContextMenuItem>&);
GtkMenu* gtkMenu() const { return m_menu.platformDescription(); }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes