From 061d58bc0fa016cfeed744fd3e4663460635d69b Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 23 Nov 2012 15:08:59 +0100 Subject: Imported WebKit commit 8eb048315f36fa33731f28694630fe4a3c2cbc99 (http://svn.webkit.org/repository/webkit/trunk@135602) New snapshot that fixes various bugs Change-Id: Icb6ce541a26a9f500d087821ce4b83a8d8a5474a Reviewed-by: Simon Hausmann --- .../WebKit2/WebProcess/WebPage/WebContextMenu.cpp | 42 ++++++++++++++++------ 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp') diff --git a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp index 3273bdc09..d21af0301 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp @@ -66,6 +66,32 @@ void WebContextMenu::show() if (!view) return; + Vector menuItems; + RefPtr userData; + menuItemsWithUserData(menuItems, userData); + WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); + + // 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()))); +} + +void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +{ + ContextMenuItem coreItem(ActionType, static_cast(item.action()), item.title()); + m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); +} + +void WebContextMenu::menuItemsWithUserData(Vector &menuItems, RefPtr& userData) const +{ + ContextMenuController* controller = m_page->corePage()->contextMenuController(); + if (!controller) + return; + + 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& coreItems = menu->items(); @@ -74,22 +100,18 @@ void WebContextMenu::show() #endif Vector proposedMenu = kitItems(coreItems, menu); Vector newMenu; - RefPtr userData; RefPtr hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult()); if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData)) proposedMenu = newMenu; - - WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); - - // 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, proposedMenu, InjectedBundleUserMessageEncoder(userData.get()))); + menuItems = proposedMenu; } -void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +Vector WebContextMenu::items() const { - ContextMenuItem coreItem(ActionType, static_cast(item.action()), item.title()); - m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); + Vector menuItems; + RefPtr userData; + menuItemsWithUserData(menuItems, userData); + return menuItems; } } // namespace WebKit -- cgit v1.2.1