static void populateSubMenuItems(PlatformMenuDescription inputMenu, WebVector<WebMenuItemInfo>& subMenuItems) { Vector<WebMenuItemInfo> subItems; for (size_t i = 0; i < inputMenu->size(); ++i) { const ContextMenuItem* inputItem = &inputMenu->at(i); if (inputItem->action() < ContextMenuItemBaseCustomTag || inputItem->action() > ContextMenuItemLastCustomTag) continue; WebMenuItemInfo outputItem; outputItem.label = inputItem->title(); outputItem.enabled = inputItem->enabled(); outputItem.checked = inputItem->checked(); outputItem.action = static_cast<unsigned>(inputItem->action() - ContextMenuItemBaseCustomTag); switch (inputItem->type()) { case ActionType: outputItem.type = WebMenuItemInfo::Option; break; case CheckableActionType: outputItem.type = WebMenuItemInfo::CheckableOption; break; case SeparatorType: outputItem.type = WebMenuItemInfo::Separator; break; case SubmenuType: outputItem.type = WebMenuItemInfo::SubMenu; populateSubMenuItems(inputItem->platformSubMenu(), outputItem.subMenuItems); break; } subItems.append(outputItem); } WebVector<WebMenuItemInfo> outputItems(subItems.size()); for (size_t i = 0; i < subItems.size(); ++i) outputItems[i] = subItems[i]; subMenuItems.swap(outputItems); }
void ContextMenuClientImpl::populateCustomMenuItems(WebCore::ContextMenu* defaultMenu, WebContextMenuData* data) { populateSubMenuItems(defaultMenu->platformDescription(), data->customItems); }
void ContextMenuClientImpl::populateCustomMenuItems(const WebCore::ContextMenu* defaultMenu, WebContextMenuData* data) { populateSubMenuItems(defaultMenu->items(), data->customItems); }