template <> inline bool isMatchingElement(const HTMLCollection* htmlCollection, Element* element) { CollectionType type = htmlCollection->type(); if (!element->isHTMLElement() && !(type == DocAll || type == NodeChildren || type == WindowNamedItems)) return false; switch (type) { case DocImages: return element->hasLocalName(imgTag); case DocScripts: return element->hasLocalName(scriptTag); case DocForms: return element->hasLocalName(formTag); case TableTBodies: return element->hasLocalName(tbodyTag); case TRCells: return element->hasLocalName(tdTag) || element->hasLocalName(thTag); case TSectionRows: return element->hasLocalName(trTag); case SelectOptions: return element->hasLocalName(optionTag); case SelectedOptions: return element->hasLocalName(optionTag) && toHTMLOptionElement(element)->selected(); case DataListOptions: if (element->hasLocalName(optionTag)) { HTMLOptionElement* option = toHTMLOptionElement(element); if (!option->isDisabledFormControl() && !option->value().isEmpty()) return true; } return false; case MapAreas: return element->hasLocalName(areaTag); case DocApplets: return element->hasLocalName(appletTag) || (element->hasLocalName(objectTag) && static_cast<HTMLObjectElement*>(element)->containsJavaApplet()); case DocEmbeds: return element->hasLocalName(embedTag); case DocLinks: return (element->hasLocalName(aTag) || element->hasLocalName(areaTag)) && element->fastHasAttribute(hrefAttr); case DocAnchors: return element->hasLocalName(aTag) && element->fastHasAttribute(nameAttr); case DocAll: case NodeChildren: return true; case DocumentNamedItems: return static_cast<const DocumentNameCollection*>(htmlCollection)->nodeMatches(element); case WindowNamedItems: return static_cast<const WindowNameCollection*>(htmlCollection)->nodeMatches(element); case FormControls: case TableRows: case ChildNodeListType: case ClassNodeListType: case NameNodeListType: case TagNodeListType: case HTMLTagNodeListType: case RadioNodeListType: case LabelsNodeListType: ASSERT_NOT_REACHED(); } return false; }
void PopupMenuImpl::addOption(HTMLOptionElement& element, bool enableExtraStyling, SharedBuffer* data) { PagePopupClient::addString("{\n", data); PagePopupClient::addString("type: \"option\",\n", data); addProperty("label", element.text(), data); addProperty("title", element.title(), data); addProperty("value", element.listIndex(), data); addProperty("ariaLabel", element.fastGetAttribute(HTMLNames::aria_labelAttr), data); addProperty("disabled", element.isDisabledFormControl(), data); addElementStyle(element, enableExtraStyling, data); PagePopupClient::addString("},\n", data); }
void PopupMenuImpl::addOption(ItemIterationContext& context, HTMLOptionElement& element) { SharedBuffer* data = context.m_buffer; PagePopupClient::addString("{", data); addProperty("label", element.displayLabel(), data); addProperty("value", context.m_listIndex, data); if (!element.title().isEmpty()) addProperty("title", element.title(), data); const AtomicString& ariaLabel = element.fastGetAttribute(HTMLNames::aria_labelAttr); if (!ariaLabel.isEmpty()) addProperty("ariaLabel", ariaLabel, data); if (element.isDisabledFormControl()) addProperty("disabled", true, data); addElementStyle(context, element); PagePopupClient::addString("},", data); }