SVGGradientElement* RenderSVGGradientStop::gradientElement() const { ContainerNode* parentNode = node()->parentNode(); if (parentNode->hasTagName(linearGradientTag) || parentNode->hasTagName(radialGradientTag)) return static_cast<SVGGradientElement*>(parentNode); return 0; }
bool HTMLFormElement::rendererIsNeeded(const RenderStyle& style) { if (!m_wasDemoted) return HTMLElement::rendererIsNeeded(style); ContainerNode* node = parentNode(); RenderObject* parentRenderer = node->renderer(); // FIXME: Shouldn't we also check for table caption (see |formIsTablePart| below). // FIXME: This check is not correct for Shadow DOM. bool parentIsTableElementPart = (parentRenderer->isTable() && isHTMLTableElement(node)) || (parentRenderer->isTableRow() && node->hasTagName(trTag)) || (parentRenderer->isTableSection() && node->hasTagName(tbodyTag)) || (parentRenderer->isRenderTableCol() && node->hasTagName(colTag)) || (parentRenderer->isTableCell() && node->hasTagName(trTag)); if (!parentIsTableElementPart) return true; EDisplay display = style.display(); bool formIsTablePart = display == TABLE || display == INLINE_TABLE || display == TABLE_ROW_GROUP || display == TABLE_HEADER_GROUP || display == TABLE_FOOTER_GROUP || display == TABLE_ROW || display == TABLE_COLUMN_GROUP || display == TABLE_COLUMN || display == TABLE_CELL || display == TABLE_CAPTION; return formIsTablePart; }
HTMLSelectElement* HTMLOptionElement::ownerSelectElement() const { ContainerNode* select = parentNode(); while (select && !(select->hasTagName(selectTag) || select->hasTagName(keygenTag))) select = select->parentNode(); if (!select) return 0; return static_cast<HTMLSelectElement*>(select); }
void HTMLFormControlElement::updateFieldSetAndLegendAncestor() const { m_fieldSetAncestor = 0; m_legendAncestor = 0; for (ContainerNode* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) { if (!m_legendAncestor && ancestor->hasTagName(legendTag)) m_legendAncestor = static_cast<HTMLLegendElement*>(ancestor); if (ancestor->hasTagName(fieldsetTag)) { m_fieldSetAncestor = static_cast<HTMLFieldSetElement*>(ancestor); break; } } m_fieldSetAncestorValid = true; }
SVGElement* SVGElement::viewportElement() const { // This function needs shadow tree support - as RenderSVGContainer uses this function // to determine the "overflow" property. <use> on <symbol> wouldn't work otherwhise. ContainerNode* n = parentOrShadowHostNode(); while (n) { if (n->hasTagName(SVGNames::svgTag) || isSVGImageElement(n) || n->hasTagName(SVGNames::symbolTag)) return toSVGElement(n); n = n->parentOrShadowHostNode(); } return 0; }
void HTMLFormControlElement::updateAncestorDisabledState() const { HTMLFieldSetElement* fieldSetAncestor = 0; ContainerNode* legendAncestor = 0; for (ContainerNode* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) { if (!legendAncestor && ancestor->hasTagName(legendTag)) legendAncestor = ancestor; if (ancestor->hasTagName(fieldsetTag)) { fieldSetAncestor = toHTMLFieldSetElement(ancestor); break; } } m_ancestorDisabledState = (fieldSetAncestor && fieldSetAncestor->isDisabledFormControl() && !(legendAncestor && legendAncestor == fieldSetAncestor->legend())) ? AncestorDisabledStateDisabled : AncestorDisabledStateEnabled; }
void SVGFontFaceFormatElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) { SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); if (!parentNode() || !parentNode()->hasTagName(font_face_uriTag)) return; ContainerNode* ancestor = parentNode()->parentNode(); if (!ancestor || !ancestor->hasTagName(font_face_srcTag)) return; ancestor = ancestor->parentNode(); if (ancestor && ancestor->hasTagName(font_faceTag)) static_cast<SVGFontFaceElement*>(ancestor)->rebuildFontFace(); }
void SVGFontFaceFormatElement::childrenChanged(const ChildChange& change) { SVGElement::childrenChanged(change); if (!parentNode() || !parentNode()->hasTagName(font_face_uriTag)) return; ContainerNode* ancestor = parentNode()->parentNode(); if (!ancestor || !ancestor->hasTagName(font_face_srcTag)) return; ancestor = ancestor->parentNode(); if (ancestor && ancestor->hasTagName(font_faceTag)) toSVGFontFaceElement(ancestor)->rebuildFontFace(); }
bool HTMLEmbedElement::rendererIsNeeded(const RenderStyle& style) { if (isImageType()) return HTMLPlugInImageElement::rendererIsNeeded(style); // If my parent is an <object> and is not set to use fallback content, I // should be ignored and not get a renderer. ContainerNode* p = parentNode(); if (p && p->hasTagName(objectTag)) { if (!p->renderer()) return false; if (!toHTMLObjectElement(p)->useFallbackContent()) { ASSERT(!p->renderer()->isEmbeddedObject()); return false; } } #if ENABLE(DASHBOARD_SUPPORT) // Workaround for <rdar://problem/6642221>. if (document().frame()->settings().usesDashboardBackwardCompatibilityMode()) return true; #endif return HTMLPlugInImageElement::rendererIsNeeded(style); }
void SVGFELightElement::svgAttributeChanged(const QualifiedName& attrName) { SVGElement::svgAttributeChanged(attrName); if (attrName == SVGNames::azimuthAttr || attrName == SVGNames::elevationAttr || attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::zAttr || attrName == SVGNames::pointsAtXAttr || attrName == SVGNames::pointsAtYAttr || attrName == SVGNames::pointsAtZAttr || attrName == SVGNames::specularExponentAttr || attrName == SVGNames::limitingConeAngleAttr) { ContainerNode* parent = parentNode(); if (!parent) return; RenderObject* renderer = parent->renderer(); if (!renderer || !renderer->isSVGResourceFilterPrimitive()) return; if (parent->hasTagName(SVGNames::feDiffuseLightingTag)) { SVGFEDiffuseLightingElement* diffuseLighting = static_cast<SVGFEDiffuseLightingElement*>(parent); diffuseLighting->lightElementAttributeChanged(this, attrName); return; } // Handler for SpecularLighting has not implemented yet. RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer); } }
HTMLTableElement* HTMLTablePartElement::findParentTable() const { ContainerNode* parent = parentNode(); while (parent && !parent->hasTagName(tableTag)) parent = parent->parentNode(); return static_cast<HTMLTableElement*>(parent); }
bool HTMLEmbedElement::rendererIsNeeded(const NodeRenderingContext& context) { if (isImageType()) return HTMLPlugInImageElement::rendererIsNeeded(context); Frame* frame = document()->frame(); if (!frame) return false; // If my parent is an <object> and is not set to use fallback content, I // should be ignored and not get a renderer. ContainerNode* p = parentNode(); if (p && p->hasTagName(objectTag)) { ASSERT(p->renderer()); if (!static_cast<HTMLObjectElement*>(p)->useFallbackContent()) { ASSERT(!p->renderer()->isEmbeddedObject()); return false; } } #if ENABLE(DASHBOARD_SUPPORT) // Workaround for <rdar://problem/6642221>. if (Settings* settings = frame->settings()) { if (settings->usesDashboardBackwardCompatibilityMode()) return true; } #endif return HTMLPlugInImageElement::rendererIsNeeded(context); }
HTMLTableElement* HTMLTablePartElement::findParentTable() const { ContainerNode* parent = NodeRenderingTraversal::parent(this); while (parent && !parent->hasTagName(tableTag)) parent = NodeRenderingTraversal::parent(parent); return toHTMLTableElement(parent); }
HTMLElement* enclosingList(Node* node) { if (!node) return 0; Node* root = highestEditableRoot(firstPositionInOrBeforeNode(node)); for (ContainerNode* n = node->parentNode(); n; n = n->parentNode()) { if (n->hasTagName(ulTag) || n->hasTagName(olTag)) return toHTMLElement(n); if (n == root) return 0; } return 0; }
String HTMLOptionElement::textIndentedToRespectGroupLabel() const { ContainerNode* parent = parentNode(); if (parent && parent->hasTagName(optgroupTag)) return " " + text(); return text(); }
void HTMLOptGroupElement::recalcSelectOptions() { ContainerNode* select = parentNode(); while (select && !select->hasTagName(selectTag)) select = select->parentNode(); if (select) toHTMLSelectElement(select)->setRecalcListItems(); }
void SVGVKernElement::removedFrom(ContainerNode* rootParent) { ContainerNode* fontNode = parentNode(); if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) toSVGFontElement(fontNode)->invalidateGlyphCache(); SVGElement::removedFrom(rootParent); }
void SVGGlyphElement::invalidateGlyphCache() { ContainerNode* fontNode = parentNode(); if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) { if (SVGFontElement* element = static_cast<SVGFontElement*>(fontNode)) element->invalidateGlyphCache(); } }
HTMLDataListElement* HTMLOptionElement::ownerDataListElement() const { for (ContainerNode* parent = parentNode(); parent ; parent = parent->parentNode()) { if (parent->hasTagName(datalistTag)) return static_cast<HTMLDataListElement*>(parent); } return 0; }
HTMLFormElement* HTMLElement::findFormAncestor() const { for (ContainerNode* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) { if (ancestor->hasTagName(formTag)) return toHTMLFormElement(ancestor); } return 0; }
void SVGVKernElement::removedFromDocument() { ContainerNode* fontNode = parentNode(); if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) { if (SVGFontElement* element = static_cast<SVGFontElement*>(fontNode)) element->invalidateGlyphCache(); } SVGElement::removedFromDocument(); }
// used by table cells to share style decls created by the enclosing table. void HTMLTableCellElement::additionalAttributeStyleDecls(Vector<CSSMutableStyleDeclaration*>& results) { ContainerNode* p = parentNode(); while (p && !p->hasTagName(tableTag)) p = p->parentNode(); if (!p) return; static_cast<HTMLTableElement*>(p)->addSharedCellDecls(results); }
Node::InsertionNotificationRequest SVGVKernElement::insertedInto(ContainerNode* rootParent) { if (rootParent->inDocument()) { ContainerNode* fontNode = parentNode(); if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) toSVGFontElement(fontNode)->invalidateGlyphCache(); } return SVGElement::insertedInto(rootParent); }
void WMLTimerElement::removedFromDocument() { ContainerNode* parent = parentNode(); if (parent && parent->isWMLElement() && parent->hasTagName(cardTag)) { m_card->setIntrinsicEventTimer(0); m_card = 0; } WMLElement::removedFromDocument(); }
Node::InsertionNotificationRequest SVGHKernElement::insertedInto(ContainerNode* rootParent) { ContainerNode* fontNode = parentNode(); if (fontNode && fontNode->hasTagName(SVGNames::fontTag)) { if (SVGFontElement* element = static_cast<SVGFontElement*>(fontNode)) element->invalidateGlyphCache(); } return SVGElement::insertedInto(rootParent); }
HTMLFormElement* HTMLLegendElement::virtualForm() const { // According to the specification, If the legend has a fieldset element as // its parent, then the form attribute must return the same value as the // form attribute on that fieldset element. Otherwise, it must return null. ContainerNode* fieldset = parentNode(); if (!fieldset || !fieldset->hasTagName(fieldsetTag)) return 0; return static_cast<HTMLFieldSetElement*>(fieldset)->form(); }
void SVGFontFaceUriElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta) { SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta); if (!parentNode() || !parentNode()->hasTagName(font_face_srcTag)) return; ContainerNode* grandparent = parentNode()->parentNode(); if (grandparent && grandparent->hasTagName(font_faceTag)) toSVGFontFaceElement(grandparent)->rebuildFontFace(); }
HTMLSelectElement* HTMLOptionElement::ownerSelectElement() const { ContainerNode* select = parentNode(); while (select && !select->hasTagName(selectTag)) select = select->parentNode(); if (!select) return 0; return toHTMLSelectElement(select); }
static inline WMLSelectElement* ownerSelectElement(Element* element) { ContainerNode* select = element->parentNode(); while (select && !select->hasTagName(selectTag)) select = select->parentNode(); if (!select) return 0; return static_cast<WMLSelectElement*>(select); }
void SVGFontFaceUriElement::childrenChanged(const ChildChange& change) { SVGElement::childrenChanged(change); if (!parentNode() || !parentNode()->hasTagName(font_face_srcTag)) return; ContainerNode* grandparent = parentNode()->parentNode(); if (grandparent && grandparent->hasTagName(font_faceTag)) downcast<SVGFontFaceElement>(*grandparent).rebuildFontFace(); }