Diff
Modified: trunk/Source/WebKit/ChangeLog (226601 => 226602)
--- trunk/Source/WebKit/ChangeLog 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/ChangeLog 2018-01-09 01:53:29 UTC (rev 226602)
@@ -1,3 +1,24 @@
+2018-01-08 Alex Christensen <[email protected]>
+
+ Pass around Vector<Ref<WebContextMenuItem>> instead of WKArrayRef or Vector<WebContextMenuItemData>
+ https://bugs.webkit.org/show_bug.cgi?id=181419
+
+ Reviewed by Tim Horton.
+
+ Passing a WKArrayRef to an API object is messy and was preventing me from moving things around and making ObjC SPI.
+ No change in behavior. Just using different layering abstractions for the same data.
+
+ * UIProcess/API/C/WKContextMenuListener.cpp:
+ (WKContextMenuListenerUseContextMenuItems):
+ * UIProcess/WebContextMenuListenerProxy.cpp:
+ (WebKit::WebContextMenuListenerProxy::useContextMenuItems):
+ * UIProcess/WebContextMenuListenerProxy.h:
+ * UIProcess/WebContextMenuProxy.h:
+ * UIProcess/mac/WebContextMenuProxyMac.h:
+ * UIProcess/mac/WebContextMenuProxyMac.mm:
+ (WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
+ (WebKit::WebContextMenuProxyMac::showContextMenu):
+
2018-01-08 John Wilander <[email protected]>
Storage Access API: Remove access for all frames under a page when the page is closed
Modified: trunk/Source/WebKit/UIProcess/API/C/WKContextMenuListener.cpp (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/API/C/WKContextMenuListener.cpp 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/API/C/WKContextMenuListener.cpp 2018-01-09 01:53:29 UTC (rev 226602)
@@ -26,7 +26,9 @@
#include "config.h"
#include "WKContextMenuListener.h"
+#include "APIArray.h"
#include "WKAPICast.h"
+#include "WebContextMenuItem.h"
#include "WebContextMenuListenerProxy.h"
using namespace WebKit;
@@ -40,10 +42,22 @@
#endif
}
-void WKContextMenuListenerUseContextMenuItems(WKContextMenuListenerRef listenerRef, WKArrayRef items)
+void WKContextMenuListenerUseContextMenuItems(WKContextMenuListenerRef listenerRef, WKArrayRef arrayRef)
{
#if ENABLE(CONTEXT_MENUS)
- toImpl(listenerRef)->useContextMenuItems(items);
+ RefPtr<API::Array> array = toImpl(arrayRef);
+ size_t newSize = array ? array->size() : 0;
+ Vector<Ref<WebContextMenuItem>> items;
+ items.reserveInitialCapacity(newSize);
+ for (size_t i = 0; i < newSize; ++i) {
+ WebContextMenuItem* item = array->at<WebContextMenuItem>(i);
+ if (!item)
+ continue;
+
+ items.uncheckedAppend(*item);
+ }
+
+ toImpl(listenerRef)->useContextMenuItems(WTFMove(items));
#else
UNUSED_PARAM(listenerRef);
UNUSED_PARAM(items);
Modified: trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.cpp (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.cpp 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.cpp 2018-01-09 01:53:29 UTC (rev 226602)
@@ -47,24 +47,12 @@
{
}
-void WebContextMenuListenerProxy::useContextMenuItems(WKArrayRef items)
+void WebContextMenuListenerProxy::useContextMenuItems(Vector<Ref<WebContextMenuItem>>&& items)
{
if (!m_contextMenuMac)
return;
- RefPtr<API::Array> array = toImpl(items);
- size_t newSize = array ? array->size() : 0;
- Vector<WebContextMenuItemData> dataItems;
- dataItems.reserveInitialCapacity(newSize);
- for (size_t i = 0; i < newSize; ++i) {
- WebContextMenuItem* item = array->at<WebContextMenuItem>(i);
- if (!item)
- continue;
-
- dataItems.uncheckedAppend(item->data());
- }
-
- m_contextMenuMac->showContextMenuWithItems(WTFMove(dataItems));
+ m_contextMenuMac->showContextMenuWithItems(WTFMove(items));
}
void WebContextMenuListenerProxy::invalidate()
Modified: trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.h (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.h 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/WebContextMenuListenerProxy.h 2018-01-09 01:53:29 UTC (rev 226602)
@@ -44,7 +44,7 @@
virtual ~WebContextMenuListenerProxy();
- void useContextMenuItems(WKArrayRef items);
+ void useContextMenuItems(Vector<Ref<WebContextMenuItem>>&&);
void invalidate();
private:
Modified: trunk/Source/WebKit/UIProcess/WebContextMenuProxy.h (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/WebContextMenuProxy.h 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/WebContextMenuProxy.h 2018-01-09 01:53:29 UTC (rev 226602)
@@ -41,7 +41,7 @@
virtual void show() = 0;
- virtual void showContextMenuWithItems(Vector<WebContextMenuItemData>&&) = 0;
+ virtual void showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>&) = 0;
protected:
WebContextMenuProxy(ContextMenuContextData&&, const UserData&);
Modified: trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp 2018-01-09 01:53:29 UTC (rev 226602)
@@ -175,7 +175,7 @@
event ? event->button.button : 3, event ? event->button.time : GDK_CURRENT_TIME);
}
-void WebContextMenuProxyGtk::showContextMenuWithItems(Vector<WebContextMenuItemData>&&)
+void WebContextMenuProxyGtk::showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>&)
{
}
Modified: trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.h (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.h 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.h 2018-01-09 01:53:29 UTC (rev 226602)
@@ -55,7 +55,7 @@
private:
WebContextMenuProxyGtk(GtkWidget*, WebPageProxy&, ContextMenuContextData&&, const UserData&);
void show() override;
- void showContextMenuWithItems(Vector<WebContextMenuItemData>&&) override;
+ void showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>&) override;
void append(GMenu*, const WebContextMenuItemGlib&);
GRefPtr<GMenu> buildMenu(const Vector<WebContextMenuItemGlib>&);
void populate(const Vector<Ref<WebContextMenuItem>>&);
Modified: trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.h 2018-01-09 01:53:29 UTC (rev 226602)
@@ -54,7 +54,7 @@
~WebContextMenuProxyMac();
void contextMenuItemSelected(const WebContextMenuItemData&);
- void showContextMenuWithItems(Vector<WebContextMenuItemData>&&) override;
+ void showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>&) override;
#if ENABLE(SERVICE_CONTROLS)
void clearServicesMenu();
Modified: trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm 2018-01-09 01:53:29 UTC (rev 226602)
@@ -451,9 +451,14 @@
}
}
-void WebContextMenuProxyMac::showContextMenuWithItems(Vector<WebContextMenuItemData>&& items)
+void WebContextMenuProxyMac::showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>& items)
{
- auto menu = createContextMenuFromItems(items);
+ Vector<WebContextMenuItemData> data;
+ data.reserveInitialCapacity(items.size());
+ for (auto& item : items)
+ data.uncheckedAppend(item->data());
+
+ auto menu = createContextMenuFromItems(data);
[[WKMenuTarget sharedMenuTarget] setMenuProxy:this];
m_menu = m_page.contextMenuClient().menuFromProposedMenu(m_page, menu.get(), m_context.webHitTestResultData(), m_userData.object());
@@ -493,14 +498,12 @@
if (m_page.contextMenuClient().showContextMenu(m_page, m_context.menuLocation(), useProposedItems ? proposedAPIItems : clientItems))
return;
- Vector<WebContextMenuItemData> items;
- for (auto& item : (useProposedItems ? proposedAPIItems : clientItems))
- items.append(item->data());
-
+ auto&& items = WTFMove(useProposedItems ? proposedAPIItems : clientItems);
+
if (items.isEmpty())
return;
- showContextMenuWithItems(WTFMove(items));
+ showContextMenuWithItems(items);
}
NSWindow *WebContextMenuProxyMac::window() const
Modified: trunk/Source/WebKit/UIProcess/wpe/WebContextMenuProxyWPE.h (226601 => 226602)
--- trunk/Source/WebKit/UIProcess/wpe/WebContextMenuProxyWPE.h 2018-01-09 01:21:04 UTC (rev 226601)
+++ trunk/Source/WebKit/UIProcess/wpe/WebContextMenuProxyWPE.h 2018-01-09 01:53:29 UTC (rev 226602)
@@ -36,7 +36,7 @@
return adoptRef(*new WebContextMenuProxyWPE(WTFMove(context), userData));
}
- void showContextMenuWithItems(Vector<WebContextMenuItemData>&&) final { }
+ void showContextMenuWithItems(const Vector<Ref<WebContextMenuItem>>&) final { }
void show() final { };
private: