HMENU WebContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu* menu) { COMPtr<IWebUIDelegate> uiDelegate; if (FAILED(m_webView->uiDelegate(&uiDelegate))) return menu->platformDescription(); ASSERT(uiDelegate); HMENU newMenu = 0; COMPtr<WebElementPropertyBag> propertyBag; propertyBag.adoptRef(WebElementPropertyBag::createInstance(menu->hitTestResult())); // FIXME: We need to decide whether to do the default before calling this delegate method if (FAILED(uiDelegate->contextMenuItemsForElement(m_webView, propertyBag.get(), (OLE_HANDLE)(ULONG64)menu->platformDescription(), (OLE_HANDLE*)&newMenu))) return menu->platformDescription(); return fixMenuReceivedFromOldSafari(uiDelegate.get(), menu, newMenu); }
std::unique_ptr<ContextMenu> WebContextMenuClient::customizeMenu(std::unique_ptr<ContextMenu> popMenu) { std::unique_ptr<ContextMenu> menu = WTF::move(popMenu); COMPtr<IWebUIDelegate> uiDelegate; if (FAILED(m_webView->uiDelegate(&uiDelegate))) return menu; ASSERT(uiDelegate); HMENU nativeMenu = menu->platformContextMenu(); COMPtr<WebElementPropertyBag> propertyBag; propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController().hitTestResult())); // FIXME: We need to decide whether to do the default before calling this delegate method if (FAILED(uiDelegate->contextMenuItemsForElement(m_webView, propertyBag.get(), nativeMenu, &nativeMenu))) { ::DestroyMenu(nativeMenu); return menu; } std::unique_ptr<ContextMenu> customizedMenu = std::unique_ptr<ContextMenu>(new ContextMenu(nativeMenu)); ::DestroyMenu(nativeMenu); return customizedMenu; }
PassOwnPtr<ContextMenu> WebContextMenuClient::customizeMenu(PassOwnPtr<ContextMenu> popMenu) { OwnPtr<ContextMenu> menu = popMenu; COMPtr<IWebUIDelegate> uiDelegate; if (FAILED(m_webView->uiDelegate(&uiDelegate))) return menu.release(); ASSERT(uiDelegate); HMENU nativeMenu = menu->nativeMenu(); COMPtr<WebElementPropertyBag> propertyBag; propertyBag.adoptRef(WebElementPropertyBag::createInstance(m_webView->page()->contextMenuController()->hitTestResult())); // FIXME: We need to decide whether to do the default before calling this delegate method if (FAILED(uiDelegate->contextMenuItemsForElement(m_webView, propertyBag.get(), (OLE_HANDLE)(ULONG64)nativeMenu, (OLE_HANDLE*)&nativeMenu))) { ::DestroyMenu(nativeMenu); return menu.release(); } OwnPtr<ContextMenu> customizedMenu = adoptPtr(new ContextMenu(nativeMenu)); ::DestroyMenu(nativeMenu); return customizedMenu.release(); }