void HTMLAppletElement::parseMappedAttribute(MappedAttribute *attr) { if (attr->name() == altAttr || attr->name() == archiveAttr || attr->name() == codeAttr || attr->name() == codebaseAttr || attr->name() == mayscriptAttr || attr->name() == objectAttr) { // Do nothing. } else if (attr->name() == nameAttr) { String newNameAttr = attr->value(); if (inDocument() && document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->removeNamedItem(oldNameAttr); doc->addNamedItem(newNameAttr); } oldNameAttr = newNameAttr; } else if (attr->name() == idAttr) { String newIdAttr = attr->value(); if (inDocument() && document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->removeDocExtraNamedItem(oldIdAttr); doc->addDocExtraNamedItem(newIdAttr); } oldIdAttr = newIdAttr; // also call superclass HTMLPlugInElement::parseMappedAttribute(attr); } else HTMLPlugInElement::parseMappedAttribute(attr); }
void HTMLObjectElement::updateDocNamedItem() { // The rule is "<object> elements with no children other than // <param> elements, unknown elements and whitespace can be // found by name in a document, and other <object> elements cannot." bool wasNamedItem = m_docNamedItem; bool isNamedItem = true; Node* child = firstChild(); while (child && isNamedItem) { if (child->isElementNode()) { Element* element = static_cast<Element*>(child); if (HTMLElement::isRecognizedTagName(element->tagQName()) && !element->hasTagName(paramTag)) isNamedItem = false; } else if (child->isTextNode()) { if (!static_cast<Text*>(child)->containsOnlyWhitespace()) isNamedItem = false; } else isNamedItem = false; child = child->nextSibling(); } if (isNamedItem != wasNamedItem && document()->isHTMLDocument()) { HTMLDocument* doc = static_cast<HTMLDocument*>(document()); if (isNamedItem) { doc->addNamedItem(oldNameAttr); doc->addDocExtraNamedItem(oldIdAttr); } else { doc->removeNamedItem(oldNameAttr); doc->removeDocExtraNamedItem(oldIdAttr); } } m_docNamedItem = isNamedItem; }
void HTMLAppletElement::insertedIntoDocument() { if (document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->addNamedItem(oldNameAttr); doc->addDocExtraNamedItem(oldIdAttr); } HTMLPlugInElement::insertedIntoDocument(); }
void HTMLObjectElement::parseMappedAttribute(MappedAttribute *attr) { String val = attr->value(); int pos; if (attr->name() == typeAttr) { m_serviceType = val.lower(); pos = m_serviceType.find(";"); if (pos != -1) m_serviceType = m_serviceType.left(pos); if (renderer()) m_needWidgetUpdate = true; if (!isImageType() && m_imageLoader) { delete m_imageLoader; m_imageLoader = 0; } } else if (attr->name() == dataAttr) { m_url = parseURL(val); if (renderer()) m_needWidgetUpdate = true; if (renderer() && isImageType()) { if (!m_imageLoader) m_imageLoader = new HTMLImageLoader(this); m_imageLoader->updateFromElement(); } } else if (attr->name() == classidAttr) { m_classId = val; if (renderer()) m_needWidgetUpdate = true; } else if (attr->name() == onloadAttr) { setHTMLEventListener(loadEvent, attr); } else if (attr->name() == onunloadAttr) { setHTMLEventListener(unloadEvent, attr); } else if (attr->name() == nameAttr) { String newNameAttr = attr->value(); if (isDocNamedItem() && inDocument() && document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->removeNamedItem(oldNameAttr); doc->addNamedItem(newNameAttr); } oldNameAttr = newNameAttr; } else if (attr->name() == idAttr) { String newIdAttr = attr->value(); if (isDocNamedItem() && inDocument() && document()->isHTMLDocument()) { HTMLDocument* doc = static_cast<HTMLDocument*>(document()); doc->removeDocExtraNamedItem(oldIdAttr); doc->addDocExtraNamedItem(newIdAttr); } oldIdAttr = newIdAttr; // also call superclass HTMLPlugInElement::parseMappedAttribute(attr); } else HTMLPlugInElement::parseMappedAttribute(attr); }
void HTMLIFrameElement::parseMappedAttribute(MappedAttribute *attr) { if (attr->name() == widthAttr) addCSSLength(attr, CSS_PROP_WIDTH, attr->value()); else if (attr->name() == heightAttr) addCSSLength(attr, CSS_PROP_HEIGHT, attr->value()); else if (attr->name() == alignAttr) addHTMLAlignment(attr); else if (attr->name() == nameAttr) { String newNameAttr = attr->value(); if (inDocument() && document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->removeDocExtraNamedItem(oldNameAttr); doc->addDocExtraNamedItem(newNameAttr); } oldNameAttr = newNameAttr; } else HTMLFrameElement::parseMappedAttribute(attr); }
void HTMLIFrameElement::insertedIntoDocument() { if (document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->addDocExtraNamedItem(oldNameAttr); } HTMLElement::insertedIntoDocument(); // Load the frame m_name = getAttribute(nameAttr); if (m_name.isNull()) m_name = getAttribute(idAttr); if (Frame* parentFrame = document()->frame()) { m_name = parentFrame->tree()->uniqueChildName(m_name); openURL(); } }
void HTMLImageElement::parseMappedAttribute(MappedAttribute* attr) { const QualifiedName& attrName = attr->name(); if (attrName == altAttr) { if (renderer() && renderer()->isImage()) static_cast<RenderImage*>(renderer())->updateAltText(); } else if (attrName == srcAttr) m_imageLoader.updateFromElement(); else if (attrName == widthAttr) addCSSLength(attr, CSS_PROP_WIDTH, attr->value()); else if (attrName == heightAttr) addCSSLength(attr, CSS_PROP_HEIGHT, attr->value()); else if (attrName == borderAttr) { // border="noborder" -> border="0" if(attr->value().toInt()) { addCSSLength(attr, CSS_PROP_BORDER_WIDTH, attr->value()); addCSSProperty(attr, CSS_PROP_BORDER_TOP_STYLE, CSS_VAL_SOLID); addCSSProperty(attr, CSS_PROP_BORDER_RIGHT_STYLE, CSS_VAL_SOLID); addCSSProperty(attr, CSS_PROP_BORDER_BOTTOM_STYLE, CSS_VAL_SOLID); addCSSProperty(attr, CSS_PROP_BORDER_LEFT_STYLE, CSS_VAL_SOLID); } } else if (attrName == vspaceAttr) { addCSSLength(attr, CSS_PROP_MARGIN_TOP, attr->value()); addCSSLength(attr, CSS_PROP_MARGIN_BOTTOM, attr->value()); } else if (attrName == hspaceAttr) { addCSSLength(attr, CSS_PROP_MARGIN_LEFT, attr->value()); addCSSLength(attr, CSS_PROP_MARGIN_RIGHT, attr->value()); } else if (attrName == alignAttr) addHTMLAlignment(attr); else if (attrName == valignAttr) addCSSProperty(attr, CSS_PROP_VERTICAL_ALIGN, attr->value()); else if (attrName == usemapAttr) { if (attr->value().domString()[0] == '#') usemap = attr->value(); else usemap = document()->completeURL(parseURL(attr->value())); m_isLink = !attr->isNull(); } else if (attrName == ismapAttr) ismap = true; else if (attrName == onabortAttr) setHTMLEventListener(abortEvent, attr); else if (attrName == onloadAttr) setHTMLEventListener(loadEvent, attr); else if (attrName == compositeAttr) { if (!parseCompositeOperator(attr->value(), m_compositeOperator)) m_compositeOperator = CompositeSourceOver; } else if (attrName == nameAttr) { String newNameAttr = attr->value(); if (inDocument() && document()->isHTMLDocument()) { HTMLDocument* doc = static_cast<HTMLDocument*>(document()); doc->removeNamedItem(oldNameAttr); doc->addNamedItem(newNameAttr); } oldNameAttr = newNameAttr; } else if (attr->name() == idAttr) { String newIdAttr = attr->value(); if (inDocument() && document()->isHTMLDocument()) { HTMLDocument *doc = static_cast<HTMLDocument *>(document()); doc->removeDocExtraNamedItem(oldIdAttr); doc->addDocExtraNamedItem(newIdAttr); } oldIdAttr = newIdAttr; // also call superclass HTMLElement::parseMappedAttribute(attr); } else HTMLElement::parseMappedAttribute(attr); }