summaryrefslogtreecommitdiffstats
path: root/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp')
-rw-r--r--Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp51
1 files changed, 20 insertions, 31 deletions
diff --git a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
index ae9d6ac14..4a663d295 100644
--- a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
+++ b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
@@ -25,12 +25,12 @@
#include "WebContextMenu.h"
-#include "InjectedBundleHitTestResult.h"
-#include "InjectedBundleUserMessageCoders.h"
+#include "ContextMenuContextData.h"
+#include "UserData.h"
#include "WebCoreArgumentCoders.h"
-#include "WebHitTestResult.h"
#include "WebPage.h"
#include "WebPageProxyMessages.h"
+#include "WebProcess.h"
#include <WebCore/ContextMenu.h>
#include <WebCore/ContextMenuController.h>
#include <WebCore/Frame.h>
@@ -52,13 +52,8 @@ WebContextMenu::~WebContextMenu()
void WebContextMenu::show()
{
- ContextMenuController* controller = m_page->corePage()->contextMenuController();
- if (!controller)
- return;
- ContextMenu* menu = controller->contextMenu();
- if (!menu)
- return;
- Frame* frame = controller->hitTestResult().innerNodeFrame();
+ ContextMenuController& controller = m_page->corePage()->contextMenuController();
+ Frame* frame = controller.hitTestResult().innerNodeFrame();
if (!frame)
return;
FrameView* view = frame->view();
@@ -66,49 +61,43 @@ void WebContextMenu::show()
return;
Vector<WebContextMenuItemData> menuItems;
- RefPtr<APIObject> userData;
+ RefPtr<API::Object> userData;
menuItemsWithUserData(menuItems, userData);
- WebHitTestResult::Data webHitTestResultData(controller->hitTestResult());
+
+ auto menuLocation = view->contentsToRootView(controller.hitTestResult().roundedPointInInnerNodeFrame());
+
+ ContextMenuContextData contextMenuContextData(menuLocation, menuItems, controller.context());
// Mark the WebPage has having a shown context menu then notify the UIProcess.
m_page->contextMenuShowing();
- m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get())));
+ m_page->send(Messages::WebPageProxy::ShowContextMenu(contextMenuContextData, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
}
void WebContextMenu::itemSelected(const WebContextMenuItemData& item)
{
- ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title());
- m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem);
+ m_page->corePage()->contextMenuController().contextMenuItemSelected(static_cast<ContextMenuAction>(item.action()), item.title());
}
-void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<APIObject>& userData) const
+void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<API::Object>& userData) const
{
- ContextMenuController* controller = m_page->corePage()->contextMenuController();
- if (!controller)
- return;
+ ContextMenuController& controller = m_page->corePage()->contextMenuController();
- ContextMenu* menu = controller->contextMenu();
+ ContextMenu* menu = controller.contextMenu();
if (!menu)
return;
// Give the bundle client a chance to process the menu.
-#if USE(CROSS_PLATFORM_CONTEXT_MENUS)
const Vector<ContextMenuItem>& coreItems = menu->items();
-#else
- Vector<ContextMenuItem> coreItems = contextMenuItemVector(menu->platformDescription());
-#endif
- Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu);
- Vector<WebContextMenuItemData> newMenu;
- RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult());
- if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData))
- proposedMenu = newMenu;
- menuItems = proposedMenu;
+
+ if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(*m_page, controller.hitTestResult(), coreItems, menuItems, userData))
+ return;
+ menuItems = kitItems(coreItems);
}
Vector<WebContextMenuItemData> WebContextMenu::items() const
{
Vector<WebContextMenuItemData> menuItems;
- RefPtr<APIObject> userData;
+ RefPtr<API::Object> userData;
menuItemsWithUserData(menuItems, userData);
return menuItems;
}