summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp')
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp
index 36233874d..d04333ae9 100644
--- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp
+++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp
@@ -35,25 +35,32 @@
#include "WebContextMenuItem.h"
#include "WKAPICast.h"
#include "WKBundleAPICast.h"
+#include "WebPage.h"
#include <WebCore/ContextMenu.h>
using namespace WebCore;
namespace WebKit {
-bool InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems(WebPage* page, InjectedBundleHitTestResult* hitTestResult, const Vector<WebContextMenuItemData>& defaultMenu, Vector<WebContextMenuItemData>& newMenu, RefPtr<API::Object>& userData)
+InjectedBundlePageContextMenuClient::InjectedBundlePageContextMenuClient(const WKBundlePageContextMenuClientBase* client)
+{
+ initialize(client);
+}
+
+bool InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems(WebPage& page, const HitTestResult& hitTestResult, const Vector<ContextMenuItem>& proposedMenu, Vector<WebContextMenuItemData>& newMenu, RefPtr<API::Object>& userData)
{
if (!m_client.getContextMenuFromDefaultMenu)
return false;
+ Vector<WebContextMenuItemData> defaultMenu = kitItems(proposedMenu);
Vector<RefPtr<API::Object>> defaultMenuItems;
defaultMenuItems.reserveInitialCapacity(defaultMenu.size());
for (const auto& item : defaultMenu)
defaultMenuItems.uncheckedAppend(WebContextMenuItem::create(item));
- WKArrayRef newMenuWK = 0;
- WKTypeRef userDataToPass = 0;
- m_client.getContextMenuFromDefaultMenu(toAPI(page), toAPI(hitTestResult), toAPI(API::Array::create(std::move(defaultMenuItems)).get()), &newMenuWK, &userDataToPass, m_client.base.clientInfo);
+ WKArrayRef newMenuWK = nullptr;
+ WKTypeRef userDataToPass = nullptr;
+ m_client.getContextMenuFromDefaultMenu(toAPI(&page), toAPI(&InjectedBundleHitTestResult::create(hitTestResult).get()), toAPI(API::Array::create(WTFMove(defaultMenuItems)).ptr()), &newMenuWK, &userDataToPass, m_client.base.clientInfo);
RefPtr<API::Array> array = adoptRef(toImpl(newMenuWK));
userData = adoptRef(toImpl(userDataToPass));
@@ -70,11 +77,21 @@ bool InjectedBundlePageContextMenuClient::getCustomMenuFromDefaultItems(WebPage*
continue;
}
- newMenu.append(*item->data());
+ newMenu.append(item->data());
}
return true;
}
+void InjectedBundlePageContextMenuClient::prepareForImmediateAction(WebPage& page, const HitTestResult& hitTestResult, RefPtr<API::Object>& userData)
+{
+ if (!m_client.prepareForActionMenu)
+ return;
+
+ WKTypeRef userDataToPass = nullptr;
+ m_client.prepareForActionMenu(toAPI(&page), toAPI(&InjectedBundleHitTestResult::create(hitTestResult).get()), &userDataToPass, m_client.base.clientInfo);
+ userData = adoptRef(toImpl(userDataToPass));
+}
+
} // namespace WebKit
#endif // ENABLE(CONTEXT_MENUS)