void SMILTimeContainer::updateDocumentOrderIndexes() { unsigned timingElementCount = 0; for (Element* element = m_ownerSVGElement; element; element = ElementTraversal::next(*element, m_ownerSVGElement)) { if (isSVGSMILElement(*element)) toSVGSMILElement(element)->setDocumentOrderIndex(timingElementCount++); } m_documentOrderIndexesDirty = false; }
void SVGSMILElement::connectSyncBaseConditions() { if (m_syncBaseConditionsConnected) disconnectSyncBaseConditions(); m_syncBaseConditionsConnected = true; for (unsigned n = 0; n < m_conditions.size(); ++n) { Condition* condition = m_conditions[n].get(); if (condition->getType() == Condition::Syncbase) { ASSERT(!condition->baseID().isEmpty()); Element* element = treeScope().getElementById(AtomicString(condition->baseID())); if (!element || !isSVGSMILElement(*element)) { condition->setSyncBase(0); continue; } SVGSMILElement* svgSMILElement = toSVGSMILElement(element); condition->setSyncBase(svgSMILElement); svgSMILElement->addSyncBaseDependent(this); } } }
void SVGAElement::defaultEventHandler(Event* event) { if (isLink()) { ASSERT(event->target()); Node* target = event->target()->toNode(); ASSERT(target); if ((focused() || target->focused()) && isEnterKeyKeypressEvent(event)) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event)) { String url = stripLeadingAndTrailingHTMLSpaces(hrefString()); if (url[0] == '#') { Element* targetElement = treeScope().getElementById(AtomicString(url.substring(1))); if (targetElement && isSVGSMILElement(*targetElement)) { toSVGSMILElement(targetElement)->beginByLinkActivation(); event->setDefaultHandled(); return; } } AtomicString target(m_svgTarget->currentValue()->value()); if (target.isEmpty() && fastGetAttribute(XLinkNames::showAttr) == "new") target = AtomicString("_blank", AtomicString::ConstructFromLiteral); event->setDefaultHandled(); LocalFrame* frame = document().frame(); if (!frame) return; FrameLoadRequest frameRequest(&document(), ResourceRequest(document().completeURL(url)), target); frameRequest.setTriggeringEvent(event); frame->loader().load(frameRequest); return; } } SVGGraphicsElement::defaultEventHandler(event); }
void SVGAElement::defaultEventHandler(Event* event) { if (isLink()) { if (focused() && isEnterKeyKeydownEvent(event)) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event)) { String url = stripLeadingAndTrailingHTMLSpaces(href()); if (url[0] == '#') { Element* targetElement = treeScope().getElementById(url.substringSharingImpl(1)); if (targetElement && isSVGSMILElement(*targetElement)) { toSVGSMILElement(*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() && fastGetAttribute(XLinkNames::showAttr) == "new") target = "_blank"; event->setDefaultHandled(); Frame* frame = document().frame(); if (!frame) return; frame->loader().urlSelected(document().completeURL(url), target, event, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer); return; } } SVGGraphicsElement::defaultEventHandler(event); }