Пример #1
0
String SVGAElement::title() const
{
    // If the xlink:title is set (non-empty string), use it.
    const AtomicString& title = attributeWithoutSynchronization(XLinkNames::titleAttr);
    if (!title.isEmpty())
        return title;

    // Otherwise, use the title of this element.
    return SVGElement::title();
}
Пример #2
0
void SVGAElement::defaultEventHandler(Event& event)
{
    if (isLink()) {
        if (focused() && isEnterKeyKeydownEvent(event)) {
            event.setDefaultHandled();
            dispatchSimulatedClick(&event);
            return;
        }

        if (MouseEvent::canTriggerActivationBehavior(event)) {
            String url = stripLeadingAndTrailingHTMLSpaces(href());

            if (url[0] == '#') {
                Element* targetElement = treeScope().getElementById(url.substringSharingImpl(1));
                if (is<SVGSMILElement>(targetElement)) {
                    downcast<SVGSMILElement>(*targetElement).beginByLinkActivation();
                    event.setDefaultHandled();
                    return;
                }
                // Only allow navigation to internal <view> anchors.
                if (targetElement && !targetElement->hasTagName(SVGNames::viewTag))
                    return;
            }

            String target = this->target();
            if (target.isEmpty() && attributeWithoutSynchronization(XLinkNames::showAttr) == "new")
                target = "_blank";
            event.setDefaultHandled();

            Frame* frame = document().frame();
            if (!frame)
                return;
            if (document().pageCacheState() != Document::NotInPageCache)
                return;
            frame->loader().urlSelected(document().completeURL(url), target, &event, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate());
            return;
        }
    }

    SVGGraphicsElement::defaultEventHandler(event);
}
Пример #3
0
const AtomicString& SVGSVGElement::contentStyleType() const
{
    static NeverDestroyed<AtomicString> defaultStyleType { "text/css" };
    const AtomicString& type = attributeWithoutSynchronization(SVGNames::contentStyleTypeAttr);
    return type.isNull() ? defaultStyleType.get() : type;
}
Пример #4
0
bool SVGAnimationElement::isAccumulated() const
{
    static NeverDestroyed<const AtomicString> sum("sum", AtomicString::ConstructFromLiteral);
    const AtomicString& value = attributeWithoutSynchronization(SVGNames::accumulateAttr);
    return value == sum && animationMode() != ToAnimation;
}
Пример #5
0
bool SVGAnimationElement::isAdditive() const
{
    static NeverDestroyed<const AtomicString> sum("sum", AtomicString::ConstructFromLiteral);
    const AtomicString& value = attributeWithoutSynchronization(SVGNames::additiveAttr);
    return value == sum || animationMode() == ByAnimation;
}
Пример #6
0
String SVGAnimationElement::fromValue() const
{
    return attributeWithoutSynchronization(SVGNames::fromAttr);
}