// http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#mathml-text-integration-point
bool HTMLElementStack::isMathMLTextIntegrationPoint(HTMLStackItem& item)
{
    return item.hasTagName(MathMLNames::miTag)
        || item.hasTagName(MathMLNames::moTag)
        || item.hasTagName(MathMLNames::mnTag)
        || item.hasTagName(MathMLNames::msTag)
        || item.hasTagName(MathMLNames::mtextTag);
}
// http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#html-integration-point
bool HTMLElementStack::isHTMLIntegrationPoint(HTMLStackItem& item)
{
    if (item.hasTagName(MathMLNames::annotation_xmlTag)) {
        const Attribute* encodingAttr = item.findAttribute(MathMLNames::encodingAttr);
        if (encodingAttr) {
            const String& encoding = encodingAttr->value();
            return equalLettersIgnoringASCIICase(encoding, "text/html")
                || equalLettersIgnoringASCIICase(encoding, "application/xhtml+xml");
        }
        return false;
    }
    return item.hasTagName(SVGNames::foreignObjectTag)
        || item.hasTagName(SVGNames::descTag)
        || item.hasTagName(SVGNames::titleTag);
}
Example #3
0
bool inScopeCommon(HTMLElementStack::ElementRecord* top, const QualifiedName& targetTag)
{
    for (HTMLElementStack::ElementRecord* pos = top; pos; pos = pos->next()) {
        HTMLStackItem* item = pos->stackItem().get();
        if (item->hasTagName(targetTag))
            return true;
        if (isMarker(item))
            return false;
    }
    ASSERT_NOT_REACHED(); // <html> is always on the stack and is a scope marker.
    return false;
}