diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp | 27 |
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) |