void ContextMenuClientImpl::populateCustomMenuItems(WebCore::ContextMenu* defaultMenu, WebContextMenuData* data) { Vector<WebMenuItemInfo> customItems; for (size_t i = 0; i < defaultMenu->itemCount(); ++i) { ContextMenuItem* inputItem = defaultMenu->itemAtIndex(i, defaultMenu->platformDescription()); 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::Group; break; } customItems.append(outputItem); } WebVector<WebMenuItemInfo> outputItems(customItems.size()); for (size_t i = 0; i < customItems.size(); ++i) outputItems[i] = customItems[i]; data->customItems.swap(outputItems); }
void PopupContainer::getPopupMenuInfo(WebPopupMenuInfo* info) { const Vector<PopupItem*>& inputItems = popupData(); WebVector<WebMenuItemInfo> outputItems(inputItems.size()); for (size_t i = 0; i < inputItems.size(); ++i) { const PopupItem& inputItem = *inputItems[i]; WebMenuItemInfo& outputItem = outputItems[i]; outputItem.label = inputItem.label; outputItem.enabled = inputItem.enabled; outputItem.textDirection = toWebTextDirection(inputItem.textDirection); outputItem.hasTextDirectionOverride = inputItem.hasTextDirectionOverride; switch (inputItem.type) { case PopupItem::TypeOption: outputItem.type = WebMenuItemInfo::Option; break; case PopupItem::TypeGroup: outputItem.type = WebMenuItemInfo::Group; break; case PopupItem::TypeSeparator: outputItem.type = WebMenuItemInfo::Separator; break; } } info->itemHeight = menuItemHeight(); info->itemFontSize = menuItemFontSize(); info->selectedIndex = selectedIndex(); info->items.swap(outputItems); info->rightAligned = menuStyle().textDirection() == RTL; }
std::string formatStatistics( const PerformanceMonitor &monitor, size_t maxLinesPerMetric ) { // First show totals std::vector<std::string> names; std::vector<std::string> values; for( int m = First; m <= Last; ++m ) { PerformanceMetric metric = static_cast<PerformanceMetric>( m ); FormatTotalStatistics::ResultType p = dispatchMetric<FormatTotalStatistics>( FormatTotalStatistics( monitor.combinedStatistics() ), metric ); names.push_back( p.first ); values.push_back( p.second ); } std::stringstream ss; ss << "PerformanceMonitor Summary :\n\n"; outputItems( names, values, ss ); ss << "\n"; // Now show breakdowns by plugs in each category std::string s = ss.str(); for( int m = First; m <= Last; ++m ) { s += formatStatistics( monitor, static_cast<PerformanceMetric>( m ), maxLinesPerMetric ); if( m != Last ) { s += "\n"; } } return s; }
void ChromeClientImpl::getPopupMenuInfo(PopupContainer* popupContainer, WebPopupMenuInfo* info) { const Vector<PopupItem*>& inputItems = popupContainer->popupData(); WebVector<WebPopupMenuInfo::Item> outputItems(inputItems.size()); for (size_t i = 0; i < inputItems.size(); ++i) { const PopupItem& inputItem = *inputItems[i]; WebPopupMenuInfo::Item& outputItem = outputItems[i]; outputItem.label = inputItem.label; outputItem.enabled = inputItem.enabled; switch (inputItem.type) { case PopupItem::TypeOption: outputItem.type = WebPopupMenuInfo::Item::Option; break; case PopupItem::TypeGroup: outputItem.type = WebPopupMenuInfo::Item::Group; break; case PopupItem::TypeSeparator: outputItem.type = WebPopupMenuInfo::Item::Separator; break; default: ASSERT_NOT_REACHED(); } } info->itemHeight = popupContainer->menuItemHeight(); info->itemFontSize = popupContainer->menuItemFontSize(); info->selectedIndex = popupContainer->selectedIndex(); info->items.swap(outputItems); info->rightAligned = popupContainer->menuStyle().textDirection() == RTL; }
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); }